Commit Graph

827 Commits

Author SHA1 Message Date
Robbert van der Helm e71fd433f9 Clarify LoadLibrary() related startup error
The old message sounds too much like something that would come from
Linux's dynamic linker.
2020-05-06 00:06:46 +02:00
Robbert van der Helm 9c6fc78471 Fix editor window handling in Reaper
And other hosts that embed the parent window into another window.
2020-05-02 18:28:43 +02:00
Robbert van der Helm ed8e3ba114 Refactor event receiving to optimize MIDI handlign
This keeps compatibility with some weirdly designed plugins (such as
Kontakt) while avoiding some unnecessary data transformations. Before
this we'd convert from a `DynamicVstEvents` object to a `VstEvents`
object, back to a `DynamicVstEvents` and then finally back into another
`VstEvents` object. With this change we can skip the second half of the
conversions.
2020-05-01 14:06:06 +02:00
Robbert van der Helm 6266072641 Explicitly list opcodes that should return strings
The automatic detection works fine in every case I've tested other than
Fabfilter plugins, but this is probably for the best.
2020-04-30 20:55:49 +02:00
Robbert van der Helm dcc1a34a41 Use a better check for the 32-bit host 2020-04-30 15:09:13 +02:00
Robbert van der Helm 79e8a37c39 Simplify the 32-bit mode detection 2020-04-30 12:59:11 +02:00
Robbert van der Helm 6ca7eae16a Mention 32-bit support in the readme 2020-04-30 12:48:03 +02:00
Robbert van der Helm e33f418206 Add a notice when the host is in 23-bit mode 2020-04-29 19:12:29 +02:00
Robbert van der Helm e414c1a341 Fix screen resolution detection 2020-04-28 12:22:56 +02:00
Robbert van der Helm 8adb944445 Use maximum display resolution for the window size
Instead of it being hardcoded to 1440p.
2020-04-28 11:47:39 +02:00
Robbert van der Helm 4b84f663ab Always run the event loop, fixing processing issue
Also remove any special `effEditIdle` handling.

Apparently plugins rely on the message loop for their internal tasks,
even for things that have nothing to do with GUIs, such as deferring
initialization.
2020-04-27 18:53:06 +02:00
Robbert van der Helm 7f0a8c8efd Extend the midi event lock
This should not make any difference, but if this event ever gets called
at the same time as the processing then this at least won't cause any
issues with plugins that are not thread safe themselves.
2020-04-27 16:53:44 +02:00
Robbert van der Helm af6ae2c2ad Fix capitalization of the word MIDI 2020-04-26 18:19:10 +02:00
Robbert van der Helm 85afd4107e Extend the lifetime of MIDI events, fixing Kontakt 2020-04-26 18:17:30 +02:00
Robbert van der Helm aee890fbf6 Remove the now unused ability to skip opcodes
If this is needed again in the future (it shouldn't be), then it should
be re-implemented using a separate function.
2020-04-26 16:30:11 +02:00
Robbert van der Helm 5ce20be9d9 Allow storing and loading of larger chunks 2020-04-25 17:35:02 +02:00
Robbert van der Helm 631e82f2ad Print the version and any VCS info at startup 2020-04-25 16:14:22 +02:00
Robbert van der Helm 0efdd1a790 Add missing license headers 2020-04-24 15:41:18 +02:00
Robbert van der Helm d0c8d8a2e7 Clean up Win32 thread API usage using RAII 2020-04-24 15:40:44 +02:00
Robbert van der Helm 9dfa83df20 Change todo regarding drag-and-drop 2020-04-23 23:16:31 +02:00
Robbert van der Helm 060712ee4d Remote the WS_EX_ACCEPTFILES
It doesn't matter, but we shouldn't be the window accepting drag and
drop operations.
2020-04-23 23:13:55 +02:00
Robbert van der Helm 259d23ec57 Add support for legacy plugins with only process()
By emulating the behavior of `processReplacing()`. Not that there should
still be any plugins around that don't support processReplacing.
2020-04-22 16:57:18 +02:00
Robbert van der Helm 27ca18869b Change variable names for consistency 2020-04-21 17:02:28 +02:00
Robbert van der Helm d2bf5c35a4 Fix hanging when closing the editor 2020-04-21 16:56:36 +02:00
Robbert van der Helm 421ed21901 Get rid of now no longer needed synchronisation
This was mostly a workaround to get Serum to not crash when audio was
being processed during a specific point of its `WM_PAINT` message
handler. This is no longer needed when using `CreateThread` instead of
`std::thread`.
2020-04-20 23:36:17 +02:00
Robbert van der Helm 86974ebe2d Fix typo 2020-04-20 23:25:01 +02:00
Robbert van der Helm 357dec315a Swap out std::thread for CreateThread
Not entirely sure why, but this gets rid of the impossible to debug data
races when Serum's GUI is being repainted while another thread is
calling `processReplacing`. This is possibly because std::thread does
not respect Windows calling conventions and CreateThread does.
2020-04-20 23:24:39 +02:00
Robbert van der Helm 1a6a094c2b Fix reopening closed editor windows 2020-04-19 20:36:39 +02:00
Robbert van der Helm b44d98b4c7 Mention more Wine debugging strategies 2020-04-19 16:38:09 +02:00
Robbert van der Helm 9f3ed85208 Replace std::monostate with std::nullptr_t
This represents the underlying meaning better since we're mostly dealing
with the `data` void pointer argument.
2020-04-19 16:05:37 +02:00
Robbert van der Helm 6025efb0fc Fix grammar in comments 2020-04-19 15:46:32 +02:00
Robbert van der Helm 0cce91d460 Reuse output buffers 2020-04-19 15:38:31 +02:00
Robbert van der Helm f235bdf9a1 Fix GUI related data races within Serum 2020-04-19 15:16:51 +02:00
Robbert van der Helm 96541d4830 Don't filter any events
These events would cause crashes when the rest of the functionality
wasn't implemented yet, but it's not needed anymore.
2020-04-18 22:12:19 +02:00
Robbert van der Helm 3d605b8940 Change entry point search order
Shouldn't matter at all, but `main` is such a generic and ambiguous name
it should probably be the last option.
2020-04-16 15:42:27 +02:00
Robbert van der Helm 949d41b6aa Fix typo in opcode ignore message 2020-04-16 14:56:08 +02:00
Robbert van der Helm bdb6535947 Simplify GUI updating 2020-04-16 13:28:35 +02:00
Robbert van der Helm 36350c34de Fix casing of the legacy VST entry point name 2020-04-16 01:25:38 +02:00
Robbert van der Helm 03de09d77f Clean up the editor implementation 2020-04-14 16:51:24 +02:00
Robbert van der Helm 03608870cc Remove now unused Editor reference 2020-04-14 16:10:42 +02:00
Robbert van der Helm eed4677ed3 Fix VstTimeinfo responses and allow null responses
The host is allowed to return a null pointer if it doesn't support the
query.
2020-04-14 15:59:23 +02:00
Robbert van der Helm a2ba001e2f Add todo regarding audioMasterGetTime 2020-04-13 14:55:02 +02:00
Robbert van der Helm bad9916f75 Fix resizing issues with Valhalla DSP plugins 2020-04-13 14:16:32 +02:00
Robbert van der Helm 266674a217 Get rid of all SetWindowPos() calls
This actually resizes the client area, but the experience feels way
better if we just leave it at its maximum size.
2020-04-13 13:54:34 +02:00
Robbert van der Helm c0eafc85fd Re-introduce window resizing while draggin 2020-04-12 19:42:12 +02:00
Robbert van der Helm 3850e39777 Resize the window together with ConfigureNotify
This way we need less hacks and things can't get out of sync.
2020-04-12 19:15:28 +02:00
Robbert van der Helm e1cc342bd0 Work around local<->global coordinate issues
For reparented Wine windows. This is a similar approach as LinVST uses.
2020-04-12 18:24:33 +02:00
Robbert van der Helm c2e62b30ca Strip out everything related to XEmbed
We'll just go with the same workaroud LinVST uses isntead. It's not as
pretty but it does work a lot better.
2020-04-11 14:06:47 +02:00
Robbert van der Helm e8fc990f0b Add a less hacky workaround for the XEmbed issues 2020-04-09 18:21:16 +02:00
Robbert van der Helm 1644d74d8d Don't draw a background
Gets redrawn during resizes while XEmbed is enabled.
2020-04-09 17:46:12 +02:00