Commit Graph

62 Commits

Author SHA1 Message Date
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 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 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 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 b5b3b69f67 Fix typos 2020-04-09 00:40:50 +02:00
Robbert van der Helm aefb3e5b90 Fix typo in entrypoint check 2020-04-09 00:40:00 +02:00
Robbert van der Helm fa045fb770 Delay the XEmbed messages
This works, but we now have the same issues with flickering and resizing
found in some other implementations such as Airwave.
2020-03-30 00:47:46 +02:00
Robbert van der Helm 8ec0ed4c3c Allow GUIs to optionally update on a timer
Otherwise plugins can't update their editors when the GUI is being blocked.
2020-03-28 18:03:20 +01:00
Robbert van der Helm d52989acc5 Allow midi events to be handled during interaction 2020-03-28 17:00:12 +01:00
Robbert van der Helm 0d7a5f10cd Change style of break statements with a block 2020-03-26 15:59:39 +01:00
Robbert van der Helm 096e36dfdc Handle all dispatch calls from the main thread
Some plugins apparently assume that all events (or at least some
specific ones) are sent from the thread it was created on and will
segfault otherwise. The is the case for Melda plugins.
2020-03-23 23:41:00 +01:00
Robbert van der Helm 5552fc3009 Use the provided plugin instance
Some plugins call `audioMasterIOChanged` during their initialization
when this is still a null pointer.
2020-03-23 23:06:12 +01:00
Robbert van der Helm dc08d8032d Resize windows when needed 2020-03-23 22:57:56 +01:00
Robbert van der Helm 4ae1f03e4c Simplify GUI event handling 2020-03-19 21:37:16 +01:00
Robbert van der Helm f1f7523248 Make the GUI embedding work
There's still a few things that need fixing.
2020-03-19 17:29:30 +01:00
Robbert van der Helm eebfceff56 Implement the rest of the GUI events
The GUI is still not updating though.
2020-03-19 00:58:03 +01:00
Robbert van der Helm 168568ed51 Move the wrapper around the dispatch function 2020-03-18 23:51:53 +01:00
Robbert van der Helm ede14ece3b Add the start of reparenting the editor windows 2020-03-17 23:04:09 +01:00
Robbert van der Helm 1c17513936 Move all window handling to the Wine host side 2020-03-17 21:31:19 +01:00
Robbert van der Helm d0a86887d3 Explicitely handle editor opening failures 2020-03-17 20:54:49 +01:00
Robbert van der Helm e7e1b26455 Add the base for GUI handling
Still need to embed the opened window into the window provided by the
host.
2020-03-17 01:51:02 +01:00
Robbert van der Helm 44a953c2d2 Change argument order for event handling functions 2020-03-17 00:53:09 +01:00
Robbert van der Helm 7172a42c67 Prevent data races in host callbacks 2020-03-16 13:58:49 +01:00
Robbert van der Helm 8464706336 Handle AEffect object updates 2020-03-11 16:33:44 +01:00
Robbert van der Helm 6ab7af10f9 Use the fancy new variant instead of strings 2020-03-11 16:04:49 +01:00
Robbert van der Helm 1ee0ffef8b Wrap event result data in an std::variant
Gets a bit more complicated this way, but this avoids having to use
string to manually serialize and deserialize arbitrary objects.

The new options for `AEffect` and `VstTimeInfo` structs are not yet
used.
2020-03-11 15:52:56 +01:00
Robbert van der Helm aa31665666 Move event handling its own file 2020-03-11 14:42:09 +01:00
Robbert van der Helm c86ad23703 Get rid of old todos 2020-03-11 14:32:47 +01:00
Robbert van der Helm 7f2eab476d Clarify the return value override 2020-03-11 01:12:40 +01:00
Robbert van der Helm 5cdfb90a9b Implement audioMasterGetTime,fixing playback
Midi and audio now work!
2020-03-11 00:34:58 +01:00
Robbert van der Helm 90cd3a5751 Actually call processReplacing instead of process... 2020-03-10 23:25:03 +01:00
Robbert van der Helm 2bd33f1322 Print ignored opcodes 2020-03-10 22:15:11 +01:00
Robbert van der Helm af94fe80d8 Filter out unsupported aduioMaster* events
Not sure if this is the correct approach, but these seem to not really
do anything and they sometimes crash the host.
2020-03-10 14:21:27 +01:00
Robbert van der Helm 7e75f913fa Add the ability to override writing back data 2020-03-09 23:36:54 +01:00
Robbert van der Helm 8dad15b597 Always use resizable buffers
It was a slight problem for audio buffers, but events can apparently
also have an arbitrary size because of chunks.
2020-03-09 21:32:49 +01:00
Robbert van der Helm adf33e84a8 Use a template argument for serializing behaviour
This keeps it a bit more readable.
2020-03-09 20:13:08 +01:00
Robbert van der Helm 40142f801e Pass throug the VstEvents struct 2020-03-08 20:29:40 +01:00