Commit Graph

58 Commits

Author SHA1 Message Date
Robbert van der Helm 60c4e64b9b Add xcb error assertions instead of segfaulting
These things should not fail (and I've never seen one of these thing
error out with yabridge), but in the case they do an assertion is at
least a lot trace down than a segfault.
2020-10-08 16:17:00 +02:00
Robbert van der Helm e680f2eddd Made the input focus grabbing even more aggressive
This fixes keyboard focus not returning when closing dialogs in Melda
plugins. I'll have to do some more testing to see if this does not
introduce any unwanted side effects.
2020-10-08 15:51:20 +02:00
Robbert van der Helm 8ae9c4d263 Made input focus grabbing more aggressive #38
This fixes keyboard input in REAPER, and I haven't found any downsides
to this approach yet.
2020-09-30 17:30:38 +02:00
Robbert van der Helm becb73928e Add a limit to all Win32 message loops #28
This works around Waves plugins causing an infinite message loop. Since
we run the loop 30 times per second anyways splitting the loop up into
chunks of 20 shouldn't be an issue.
2020-08-14 11:36:55 +02:00
Robbert van der Helm b1dd301a98 Add an optional double editor embedding mode #27
This sounds like it would the simplest way to work around the issue of
E27 calculating its own coordinates based on the parent window's
coordinates. I have not noticed any weird issues with having this
enabled all the time, but less moving parts is always better so it's
still behind an option.
2020-07-23 16:56:10 +02:00
Robbert van der Helm e55248cdd3 Mention Melda GPU accelerated rendering issues
There are no issues with software rendering.
2020-07-05 22:11:39 +02:00
Robbert van der Helm bdfd15eaa9 Mention rendering quirks with Melda plugins 2020-07-04 19:30:41 +02:00
Robbert van der Helm d0285edb14 Fix typo in coordinate translation 2020-07-04 19:09:12 +02:00
Robbert van der Helm 8202a6b250 Add missing const qualifiers to member functions 2020-06-06 13:44:26 +02:00
Robbert van der Helm 957da62137 Add missing type qualifiers 2020-06-06 13:44:23 +02:00
Robbert van der Helm ff298f3f46 Remove redundant conditions
As mentioned in C++ Core Guidelines ES.87.
2020-06-05 22:18:40 +02:00
Robbert van der Helm 00bcdf8fca Add a RAII wrapper around SetTimer() 2020-05-28 15:27:45 +02:00
Robbert van der Helm 276e4ac02f Make the local coordinate fix more robust
Without this fix and when using plugin groups, hovering over an opened
window that has not yet been interacted with shows some weird behavior.
2020-05-27 14:29:31 +02:00
Robbert van der Helm d65281d691 Clarify local coordinate fix function name 2020-05-27 13:50:52 +02:00
Robbert van der Helm ab4d35886e Add a fix for the keyboard focus in Bitwig 3.2 2020-05-26 19:39:51 +02:00
Robbert van der Helm 9b847fdc31 Add todo regarding offscreen window coordinates 2020-05-26 12:19:37 +02:00
Robbert van der Helm 9a35023990 Split X11 and Win32 event handling
X11 events should always be handled since it's thread safe and they
don't block.
2020-05-26 11:11:34 +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 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 0efdd1a790 Add missing license headers 2020-04-24 15:41:18 +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 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 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 6025efb0fc Fix grammar in comments 2020-04-19 15:46:32 +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 bdb6535947 Simplify GUI updating 2020-04-16 13:28:35 +02:00
Robbert van der Helm 03de09d77f Clean up the editor implementation 2020-04-14 16:51:24 +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
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 2ea480a09d Mention why dropdowns block the GUI and a solution 2020-03-27 18:35:48 +01:00
Robbert van der Helm a3d8c6cb0a Get rid of some old experiments
Forgot to remove these in the last commit.
2020-03-25 23:11:24 +01:00
Robbert van der Helm 161e102113 Properly send XEmbed messages
The good news is that Wine now understands that it's an XEmbed message.
The bad news is that everything's now broken.
2020-03-24 18:50:24 +01:00
Robbert van der Helm dc08d8032d Resize windows when needed 2020-03-23 22:57:56 +01:00
Robbert van der Helm 5d1051a00c Fix plugins not updating with dropdowns 2020-03-23 22:19:49 +01:00
Robbert van der Helm c046f9fe7b Implement the rest of the XEmbed protocol 2020-03-21 17:24:22 +01:00