2271 Commits

Author SHA1 Message Date
Robbert van der Helm 1db6e853da Bump to version 3.5.1 3.5.1 2021-07-31 21:29:48 +02:00
Robbert van der Helm baabc45793 Fix wrong date in old changelog entry 2021-07-31 21:29:22 +02:00
Robbert van der Helm aff0e38e1f Reword changelog 2021-07-31 21:26:28 +02:00
Robbert van der Helm c267175a60 Update tested Wine version 2021-07-31 17:17:45 +02:00
Robbert van der Helm 3b22aaae37 Update the tested REAPER version 2021-07-31 17:15:54 +02:00
Robbert van der Helm e430c5f015 Directly focus wine_window while holding Shift
This lets you type spaces in Bitwig, and it also allows you to interact
with the settings/license popup dialogs in Voxengo plugins in a normal
way.
2021-07-31 16:31:53 +02:00
Robbert van der Helm bf59e5e8ce Also grab keyboard focus on parent window focus
This allows you to directly focus plugin GUIs that are open in the
background in REAPER.
2021-07-31 16:14:02 +02:00
Robbert van der Helm be6fc786ca Add a function for getting the active modifiers 2021-07-31 15:49:47 +02:00
Robbert van der Helm c98a9519fe Handle X11 events within the Win32 event loop
This unifies event handling and it allows X11 events to still be
processed even when the event loop is blocked.
2021-07-31 15:19:44 +02:00
Robbert van der Helm d01833c458 Mention yabridge's drag-and-drop support in usage
Since Wine->X11 drag-and-drop is a nonstandard feature, it might be
worth mentioning that yabridge supports it.
2021-07-30 19:42:39 +02:00
Robbert van der Helm 699de26a5d Fix broken anchor in readme 2021-07-30 19:41:27 +02:00
Robbert van der Helm 2f0b88d5c8 Reword workaround revert changelog entry 2021-07-29 14:19:28 +02:00
Robbert van der Helm 6e684452fe Also mention Ardour being affected 2021-07-29 13:59:55 +02:00
Robbert van der Helm 762e622416 Revert "Inhibit the event loop during VST3 editor init"
This reverts commit ff76e482f2.

This was a workaround for a race condition in Nimble Kick when opening
the editor while the plugin has not yet been authorized (a Win32 timer
proc between `IEditController::createView()` and `IPlugView::attached()`
would cause a stack overflow because the plugin doesn't check if the
things it wants to use have actually been initialized yet).

But as it turns out, Bitwig Studio now calls
`IEditController::createView()` unconditionally when loading a VST3
plugin, regardless of whether the user wants to open the editor or not.
So this workaround would cause the message loop to be stalled
indefinitely until you open the editor. Since this would also cause
Nimble Kick to break in the Windows version of Bitwig, we'll simply
revert this workaround. If you need to activate the plugin on Linux, you
can load it in the Windows version of REAPER running under Wine instead.
After that the plugin will work just fine under yabridge.
2021-07-29 13:56:26 +02:00
Robbert van der Helm 43e27d76fe Remove typo from readme
Accidentally added in 34cbf43459.
2021-07-27 19:30:39 +02:00
Robbert van der Helm d053eab35a Filter LeaveNotify based on window under pointer
Instead of ignoring all `NonlinearVirtual` events. This lets us release
focus when instantly moving the mouse from a plugin GUI to something
else. This generates `NonlinearVirtual` event, and previously we ignored
those because that also happens when opening a dropdown menu in a TDR
plugin (which uses popup windows instead of actual dropdowns).
2021-07-27 18:05:47 +02:00
Robbert van der Helm e42448f758 Allow manual position for is_cursor_in_wine_window
We'll need this for the `LeaveNotify` because `GetCursorPos()` updates
only once every 100 ms, which means that it would still point to the old
window we're actually leaving.
2021-07-26 15:08:23 +02:00
Robbert van der Helm e1ed35bfd8 Don't respond to hit tests from the Win32 window
This will let us detect other, non-wrapper windows to the right and to
the bottom of a plugin GUI. Useful for drag-and-drop so we don't end up
overriding Wine's internal drag-and-drop mechanism.
2021-07-26 14:44:23 +02:00
Robbert van der Helm 186a6c01a2 Filter Win32 windows for XDND by class name
Instead of ignoring all windows that have an associated X11 window. That
would otherwise treat standalone applications like yabridge GUI
wrappers.
2021-07-26 14:29:06 +02:00
Robbert van der Helm 34cbf43459 Add instructions for installing development builds
To save myself some effort from writing this over and over again. 😁
2021-07-26 14:22:34 +02:00
Robbert van der Helm 85264a759d Move check for cursor within Wine window to editor
We'll reuse this for the LeaveNotify check instead to avoid having to
ignore all `NonVirtual` events.
2021-07-26 14:01:16 +02:00
Robbert van der Helm 0523a06ed7 Move the win32 window class name to a constant 2021-07-26 13:51:40 +02:00
Robbert van der Helm d522e57a8a Add active window to enter/leave/focus tracing 2021-07-26 12:43:32 +02:00
Robbert van der Helm 890c534573 Trace input focus grabbing 2021-07-26 12:38:17 +02:00
Robbert van der Helm f5ada4469b Add instructions for PipeWire 0.32.0 2021-07-23 19:27:26 +02:00
Robbert van der Helm 4b256d456b Bump to version 3.5.0 3.5.0 2021-07-23 16:38:00 +02:00
Robbert van der Helm 68cfb2b4cb Reword changelog 2021-07-23 16:16:05 +02:00
Robbert van der Helm 7b05e038c3 Reword memlock warning message 2021-07-23 15:59:13 +02:00
Robbert van der Helm 5c3491c1e1 Use exception logger for the memory locking error 2021-07-23 15:53:19 +02:00
Robbert van der Helm 1a34a80c21 Add a special exception logger
We'll need this to make sure that we can redirect caught exceptions
printed in `src/common/` to the correct file if `YABRIDGE_DEBUG_FILE` is
set.
2021-07-23 15:46:08 +02:00
Robbert van der Helm 0e838fa947 Change wording in changelog 2021-07-23 15:41:18 +02:00
Robbert van der Helm 4d2ee96167 Remove old TODO about +editor debug level 2021-07-23 15:22:45 +02:00
Robbert van der Helm 7a2febfffb Support the older XDND versions 3 and 4
This is needed for Tracktion Waveform and other JUCE based hosts.
2021-07-23 13:19:10 +02:00
Robbert van der Helm 9e84352609 Fix typo in XDND code 2021-07-23 12:45:53 +02:00
Robbert van der Helm 75a6bed1b9 Reword changelog 2021-07-23 00:57:54 +02:00
Robbert van der Helm 8108e08dbf Keep the old time stamp and sequence number
On second thought this seems like a good idea.
2021-07-22 16:31:03 +02:00
Robbert van der Helm 3c8f3b0b41 Forward synthetic keyboard events to Wine window
This is needed for Bitwig Studio. See the comments.
2021-07-22 16:05:22 +02:00
Robbert van der Helm c4c23b9574 Unify enter/focus event tracing 2021-07-22 16:04:39 +02:00
Robbert van der Helm 9aae3665a2 Fix reparent error logging 2021-07-22 15:45:56 +02:00
Robbert van der Helm df40b85e60 Mention Wine->X11 drag-and-drop in architecture.md 2021-07-22 14:28:27 +02:00
Robbert van der Helm b21e9f29bb Mention new embedding structure in architecture.md 2021-07-22 14:25:56 +02:00
Robbert van der Helm 1e47390edc Also listen for ConfigureNotify on the wrapper
This is needed for Tracktion Waveform because they shift our wrapper
window a bit downwards. Otherwise opening the window while your mouse
cursor is already inside of it would trip up Wine's coordinates.
2021-07-21 22:54:21 +02:00
Robbert van der Helm 99304d19b8 Listen to the correct window for focus and enter
This now all got shifted one window by the introduction of the wrapper
window.
2021-07-21 22:53:04 +02:00
Robbert van der Helm 68c47064a0 Check the window in focus/enter events 2021-07-21 22:29:16 +02:00
Robbert van der Helm cb1c1858e0 Translate coordinates from the wrapper window
We moved this from `parent_window` to `wine_window` in
974951e966 to account for Waveform adding
an offset in their windows, so now that we have `wrapper_window` we
should be translating from there instead.
2021-07-21 22:18:58 +02:00
Robbert van der Helm d13f39dce5 Don't check result on IPlugView::onSize()
Melda plugins always return `kResultFalse`, so we should just assume the
resize succeeds.
2021-07-21 20:45:04 +02:00
Robbert van der Helm 0ed75b5ce4 Don't fetch the root window early
Wine is weird. The whole reason why we're doing these weird things is
because Wine somehow tries to delete the window twice. If we don't call
`xcb_query_tree()` here (and get an error back), then we're back at the
error we tried to solve. Apparently this works, and given that noone
dares touching Wine's X11drv code I won't ask any further questions.
2021-07-21 20:39:16 +02:00
Robbert van der Helm 9002468229 Fetch the Wine and root window IDs early
There's no reason to wait until the last moment to fetch these.
2021-07-21 18:06:39 +02:00
Robbert van der Helm d41c05e90e Revert "Change editor window destruction order"
This reverts commit d3d21c65f4.

On second thought, Wine actually handles things better this way. We want
to avoid both hangs and the Wine window becoming visible, and this
achieves both of those things. We should just silence the warning.
2021-07-21 18:03:03 +02:00
Robbert van der Helm e1e5a1588c Unmap wine_window before reparenting back to root 2021-07-21 17:53:27 +02:00