Commit Graph

3099 Commits

Author SHA1 Message Date
Robbert van der Helm 48ea9749b6 Fix misleading IPlugView::canResize log message
I noticed the number of requests and responses for both plugin to host
and host to plugin requests was off by one. This was why.
2026-04-28 19:28:49 +02:00
Robbert van der Helm bd144b4503 Mention UI thread changes in changelog 2026-04-26 18:48:08 +02:00
Robbert van der Helm a702242665 Call more VST3 functions from the UI thread
These functions have had a UI thread requirement added after VST 3.7.7.
This change may cause some breakage because of the mutual recursion
requirements.

I decided to not do this for most of the simpler getter-style functions
that the VST3 specification now for some reason requires to be called
from the UI thread, as this could significantly hurt performance and
changing this is more likely to cause problems than leaving it alone is.
2026-04-26 18:38:07 +02:00
Robbert van der Helm 44f29f2caf Update Serum instructions to refer to Serum 1 2026-04-26 17:01:24 +02:00
Robbert van der Helm 3b350e89a0 Update copyright notices 2026-04-26 16:39:33 +02:00
Robbert van der Helm afc41ec9f5 Temporarily update readme for Wine 9.22+ changes 2026-04-26 16:38:24 +02:00
Robbert van der Helm 8e56937cb5 Update the changelog to thank contributors 2026-04-26 16:35:10 +02:00
Robbert van der Helm 6d81b18433 Merge branch 'new-wine10-embedding'
This implements an alternative approach to window embedding that works
with the X11 changes in Wine 9.22+. Thanks everyone for helping out
here! See the following two issues for more details:

https://github.com/robbert-vdh/yabridge/issues/382
https://github.com/robbert-vdh/yabridge/issues/409
2026-04-26 16:26:15 +02:00
Juuso Kaitila ba7022df0a Fix some plugins not resizing with their expansion toggles
DMG Audio Compassion has a expand/contract toggle button that adds a new
section below the main GUI. Without SWP_NOMOVE it would most of the time
fail to expand and the parent_window_ would sometimes fail to resize
accordingly if the expansion/contraction succeeded resulting in the GUI
locking up.

SWP_NOOWNERZORDER is the same as SWP_NOREPOSITION so having them both
was redundant.
2026-04-26 16:24:39 +02:00
Juuso Kaitila f504da9e46 VST3: Fix reparenting error when opening certain plugins
Fixes an issue where reparenting fails when the initial size returned by
the plugin is 0x0, i.e., invalid.
2026-04-26 16:24:39 +02:00
Juuso Kaitila 8ec0f8b897 VST3: Fix making plugin windows larger not working in Carla
Fixes making VST3 plugins larger than their original size in Carla. The
plugin would resize but not get drawn past the original window size.
2026-04-26 16:24:39 +02:00
Juuso Kaitila 604375b756 VST3: Fix broken resizing in Ardour
Adds timer_proc lambda for VST3 to check for size mismatches and trigger
a new resize to correct it through eventual consistency.

This is done to workaround an X11 sync issue where the plugin view would
end up smaller or larger than its wrapper window. In Ardour this could
result in the plugin becoming uninteractable.
2026-04-26 16:24:39 +02:00
Juuso Kaitila 945528cd7f Fix cursor offset after moving the plugin window 2026-01-11 20:41:56 +01:00
Jakob Steltner a2be8fcf17 Fix some whitespace 2026-01-11 20:41:56 +01:00
Jakob Steltner 174b25be05 Fix some whitespace 2026-01-11 20:41:56 +01:00
Jakob Steltner 44d047e9e2 Work around wrong offset in plugin windows 2026-01-11 20:41:56 +01:00
Robbert van der Helm a69072ef51 Add a readme section on using WINELOADER 2025-11-17 21:47:36 +01:00
Robbert van der Helm 15dcd8d059 Clarify the wow64 situation a bit more 2025-11-17 21:42:23 +01:00
Robbert van der Helm cca3189855 Fix pkgconfig deprecation warning in cross file 2025-11-17 21:35:06 +01:00
Robbert van der Helm 42e0794d7c Allow triggering CI builds by hand
GitHub removes artifacts after four months, so there may be situations
where this is useful.
2025-09-01 23:39:06 +02:00
Robbert van der Helm 88090a4028 Allow triggering CI builds by hand
GitHub removes artifacts after four months, so there may be situations
where this is useful.
2025-09-01 23:38:56 +02:00
Moon 1e826f072e Correct link to COPR repository 2025-06-30 20:27:04 +02:00
Robbert van der Helm acbb8063f3 Add compat notice about new WoW64 and bitbridge 2025-06-22 19:58:41 +02:00
Asahi Lina 17a95fdf99 Ignore relative ConfigureNotify events after absolute ones
Once we get a single absolute ConfigureNotify event, we assume they will
keep coming and ignore any relative ones. The relative computation only
works if the parent window is a direct descendant of the host window,
which may not be the case.

To fully fix this in the general case (only relative ConfigureNotify
events) we would have to walk the window hierarchy and add up all the
offsets until the host window, but so far the only known case of an
extra level (Ardour VST2) also sends absolute ConfigureNotify events, so
we can just use those.
2025-06-01 22:52:27 +02:00
Asahi Lina 2e1dcb2316 Handle absolute ConfigureNotify events for parent window
For VST2 in Ardour, it seems Ardour is doing its own WM/wrapper window
thing too. In this case, the plugin gets absolute ConfigureNotify events
that are already in the root coordinate space, so just use those
coordinates and ignore the host window.

Also fix the dimensions, which should always be those of the parent
window, not the host window. If the parent is the host window, still
track its geometry separately, and just don't add in the host window
dimensions in this case either.
2025-06-01 22:52:27 +02:00
Asahi Lina dd36bb3d3b Resize the Wine window as well as the wrapper window
This fixes issues with various plugins such as PG-8X and SCVA.
2025-06-01 22:52:27 +02:00
Asahi Lina 6f65613292 VST3: Create the window with the plugin-returned initial size
Instead of creating the window as 128x128 and then resizing, create it
with the size requested by the plugin. Fixes Korg VST3 plugins.
2025-06-01 22:52:27 +02:00
Asahi Lina b2db9cc0a6 VST3: Add HiDPI scaling hack
Sometimes the plugin size might be off-by-one due to HiDPI scaling. If
so, pretend it's actually the size that was requested, to avoid ending
up in an infinite loop.
2025-06-01 22:52:27 +02:00
Asahi Lina 9994043306 Use WM_WINDOW_ROLE instead of WM_STATE to detect the host window
Ardour brings up the plugin UI before the host window is visible, and it
is missing some properties. Using WM_WINDOW_ROLE instead of WM_STATE
makes it work.

For reference, these are the properties that are set on the window at
the time of plugin GUI instantiation:

_NET_WM_ICON(CARDINAL) =        Icon (16 x 16):
WM_WINDOW_ROLE(STRING) = "plugin_ui"
_NET_WM_SYNC_REQUEST_COUNTER(CARDINAL) = 6294918
_NET_WM_WINDOW_TYPE(ATOM) = _NET_WM_WINDOW_TYPE_UTILITY
_NET_WM_USER_TIME_WINDOW(WINDOW): window id # 0x600d85
WM_CLIENT_LEADER(WINDOW): window id # 0x600001
_NET_WM_PID(CARDINAL) = 1604801
WM_LOCALE_NAME(STRING) = "en_US.UTF-8"
WM_CLIENT_MACHINE(STRING) = "homura"
WM_NORMAL_HINTS(WM_SIZE_HINTS):
                program specified size: 521 by 46
WM_PROTOCOLS(ATOM): protocols  WM_DELETE_WINDOW, WM_TAKE_FOCUS, _NET_WM_PING, _NET_WM_SYNC_REQUEST
WM_CLASS(STRING) = "ardour-8.12.0", "Ardour-8.12.0"
WM_ICON_NAME(STRING) = "Audio 1: Melodyne (by Celemony) [VST3]"
_NET_WM_ICON_NAME(UTF8_STRING) = "Audio 1: Melodyne (by Celemony) [VST3]"
WM_NAME(STRING) = "Audio 1: Melodyne (by Celemony) [VST3]"
_NET_WM_NAME(UTF8_STRING) = "Audio 1: Melodyne (by Celemony) [VST3]"
2025-06-01 22:51:47 +02:00
Robbert van der Helm e18d598c7e Remove function to get X11 screen size
This is no longer used.
2025-06-01 22:47:54 +02:00
Robbert van der Helm eb8bf93f24 Resize the Wine window using SetWindowPos
This seems to behave more reliably than resizing the window with
`xcb_configure_window()`, solving some of the client area issues with
Wine 9.21.
2025-06-01 22:47:54 +02:00
Robbert van der Helm 66840d4d16 Remove the editor_coordinate_hack option
I'm not sure if this would still be necessary with the new embedding
approach, but it definitely does cause more problems than it solves.
2025-06-01 22:47:53 +02:00
Robbert van der Helm 51e4d61004 Remove the editor_xembed option 2025-06-01 22:47:38 +02:00
Robbert van der Helm 0f9eea2558 Drop the SWP_NOCOPYBITS on resize hack
This shouldn't be necessary anymore. It can always be added back later
if there is still flickering.
2025-06-01 22:47:13 +02:00
Robbert van der Helm ccf5402c1c Reformat with clang-format 2025-06-01 22:47:13 +02:00
Robbert van der Helm 983a19169b Don't include xcb_icccm.h
We just need this constant, so there's no real need to add the
additional dependency. There's also no real harm in adding it, but it
would result in additional work for every packager.
2025-06-01 22:47:13 +02:00
Robbert van der Helm ccc22bfabc Add a changelog entry for the GUI fixes 2025-06-01 22:47:13 +02:00
Rémi Bernon 02fb140b19 Remove now unnecessary fix_local_coordinates workaround. 2025-06-01 22:47:13 +02:00
Rémi Bernon 2c6c21409c Fix window wrapping by implementing a minimal ICCCM window manager. 2025-06-01 22:47:13 +02:00
Robbert van der Helm 918d24a16e Update asio wrap to 1.34.2
This fixes a compatibility issue with newer asio versions.
2025-06-01 22:45:53 +02:00
Robbert van der Helm 5d257268a4 Remove system-asio build option
Asio has been shipping with `pkg-config` support since version 1.23, so
this is no longer needed.
2025-06-01 22:44:13 +02:00
Robbert van der Helm 6318f1623e Revert removal of build.cpp_std default
I thought meson now handled this correctly, but it seems not.
2025-06-01 22:36:40 +02:00
Robbert van der Helm 0002273e4d Drop the 32-bit libyabridge support for EnergyXT
I don't think anyone is using this, and it's triggering a bug in recent
Meson versions so just removing it for now should be fine.
2025-06-01 22:25:11 +02:00
yiannis ioannides 0f3e762953 Update README.md 2025-04-05 20:55:23 +02:00
Robbert van der Helm 61fa5c903e Change Wine downgrade example to use Wine 9.21 2025-03-02 23:11:48 +01:00
Robbert van der Helm 005a20972d Switch to the V4 GitHub actions
Because why have things keep working unchanged if you can deprecate
them!
2025-03-01 16:25:58 +01:00
Robbert van der Helm 74a76e60b7 Update tested versions 2025-02-27 22:24:03 +01:00
Robbert van der Helm ca5343087f Update tested Wine version 2024-12-01 19:59:13 +01:00
Robbert van der Helm 6376889bbe Update changelog for path-auto changes 2024-12-01 19:58:41 +01:00
Robbert van der Helm 5151f1c447 Merge branch 'SakiiCode/master' (#316)
https://github.com/robbert-vdh/yabridge/pull/316
2024-12-01 19:57:53 +01:00