Skip to content

Multiple wine10 embedding fixes #428

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Conversation

asahilina
Copy link

@asahilina asahilina commented May 22, 2025

A bunch of fixes for the new embedding branch:

  • Fix mouse offset in Ardour/etc
  • Fix HiDPI resize loops due to off-by-one size
  • Fix some plugins getting stuck at 128x128
  • Fix more resizing/reparenting issues in other plugins
  • Fix VST2 static mouse offset in Ardour

rbernon and others added 9 commits March 1, 2025 19:42
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.
This shouldn't be necessary anymore. It can always be added back later
if there is still flickering.
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.
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.
@asahilina
Copy link
Author

There's still a bug here. When the window is resized, the mouse issue will randomly return or not. I think some part of the code must be considering two different windows somehow.

@asahilina
Copy link
Author

It looks like sometimes on resize it goes into a loop. Looks HiDPI related.

Here is a correct resize:

11:13:39 [Melodyne-23AKScdf] [host -> plugin] >> 0: IPlugView::getSize(size*)
11:13:39 [Melodyne-23AKScdf] [host <- plugin]    kResultOk, <ViewRect* with left = 0, top = 0, right = 1482, bottom = 1335>
11:13:39 [Melodyne-23AKScdf] [host -> plugin] >> 0: IPlugView::canResize()
11:13:39 [Melodyne-23AKScdf] [host <- plugin]    kResultOk
11:13:39 [Melodyne-23AKScdf] [host -> plugin] >> 0: IPlugView::onSize(newSize = <ViewRect* with left = 0, top = 0, right = 1483, bottom = 1335>)
11:13:39 [Melodyne-23AKScdf] [Wine STDERR] DEBUG: Resizing wrapper window to 1483x1335
11:13:39 [Melodyne-23AKScdf] [host <- plugin]    kResultOk
11:13:39 [Melodyne-23AKScdf] [Wine STDERR] DEBUG: X11 event 22
11:13:39 [Melodyne-23AKScdf] [Wine STDERR] DEBUG: ConfigureNotify for window 23070326
11:13:39 [Melodyne-23AKScdf] [Wine STDERR] DEBUG: X11 event 22
11:13:39 [Melodyne-23AKScdf] [Wine STDERR] DEBUG: ConfigureNotify for window 23070329
11:13:39 [Melodyne-23AKScdf] [Wine STDERR] DEBUG: X11 event 22
11:13:39 [Melodyne-23AKScdf] [Wine STDERR] DEBUG: ConfigureNotify for window 37748736
11:13:39 [Melodyne-23AKScdf] [Wine STDERR] DEBUG: X11 event 23
11:13:39 [Melodyne-23AKScdf] [Wine STDERR] DEBUG: ConfigureRequest for window 41943041
11:13:39 [Melodyne-23AKScdf] [host -> plugin] >> 0: IPlugView::getSize(size*)
11:13:39 [Melodyne-23AKScdf] [host <- plugin]    kResultOk, <ViewRect* with left = 0, top = 0, right = 1483, bottom = 1335>
11:13:39 [Melodyne-23AKScdf] [Wine STDERR] DEBUG: X11 event 22
11:13:39 [Melodyne-23AKScdf] [Wine STDERR] DEBUG: ConfigureNotify for window 37748736
11:13:39 [Melodyne-23AKScdf] [Wine STDERR] DEBUG: X11 event 7
11:13:39 [Melodyne-23AKScdf] [Wine STDERR] DEBUG: EnterNotify for window 37748736 (wine window active)
11:13:39 [Melodyne-23AKScdf] [Wine STDERR] DEBUG: Active keyboard modifiers: 0
11:13:39 [Melodyne-23AKScdf] [Wine STDERR] DEBUG: Setting input focus to window 23070329
11:13:39 [Melodyne-23AKScdf] [Wine STDERR] DEBUG: X11 event 9
11:13:39 [Melodyne-23AKScdf] [Wine STDERR] DEBUG: FocusIn for window 23070329 (wine window active)
11:13:39 [Melodyne-23AKScdf] [Wine STDERR] DEBUG: Active keyboard modifiers: 0
11:13:39 [Melodyne-23AKScdf] [Wine STDERR] DEBUG: Not grabbing input focus for window 23070329(already focused)

And here is one that loops:

11:13:43 [Melodyne-23AKScdf] [host -> plugin] >> 0: IPlugView::getSize(size*)
11:13:43 [Melodyne-23AKScdf] [host <- plugin]    kResultOk, <ViewRect* with left = 0, top = 0, right = 1483, bottom = 1335>
11:13:43 [Melodyne-23AKScdf] [host -> plugin] >> 0: IPlugView::canResize()
11:13:43 [Melodyne-23AKScdf] [plugin <- host]    kResultOk (from cache)
11:13:43 [Melodyne-23AKScdf] [host -> plugin] >> 0: IPlugView::onSize(newSize = <ViewRect* with left = 0, top = 0, right = 1489, bottom = 1335>)
11:13:43 [Melodyne-23AKScdf] [Wine STDERR] DEBUG: Resizing wrapper window to 1489x1335
11:13:43 [Melodyne-23AKScdf] [host <- plugin]    kResultOk
11:13:43 [Melodyne-23AKScdf] [Wine STDERR] DEBUG: X11 event 22
11:13:43 [Melodyne-23AKScdf] [Wine STDERR] DEBUG: ConfigureNotify for window 23070326
11:13:43 [Melodyne-23AKScdf] [Wine STDERR] DEBUG: X11 event 22
11:13:43 [Melodyne-23AKScdf] [Wine STDERR] DEBUG: ConfigureNotify for window 23070329
11:13:43 [Melodyne-23AKScdf] [Wine STDERR] DEBUG: X11 event 22
11:13:43 [Melodyne-23AKScdf] [Wine STDERR] DEBUG: ConfigureNotify for window 37748736
11:13:43 [Melodyne-23AKScdf] [Wine STDERR] DEBUG: X11 event 23
11:13:43 [Melodyne-23AKScdf] [Wine STDERR] DEBUG: ConfigureRequest for window 41943041
11:13:43 [Melodyne-23AKScdf] [host -> plugin] >> 0: IPlugView::getSize(size*)
11:13:43 [Melodyne-23AKScdf] [host <- plugin]    kResultOk, <ViewRect* with left = 0, top = 0, right = 1489, bottom = 1335>
11:13:43 [Melodyne-23AKScdf] [Wine STDERR] DEBUG: X11 event 22
11:13:43 [Melodyne-23AKScdf] [Wine STDERR] DEBUG: ConfigureNotify for window 37748736
11:13:43 [Melodyne-23AKScdf] [host -> plugin] >> 0: IPlugView::getSize(size*)
11:13:43 [Melodyne-23AKScdf] [host <- plugin]    kResultOk, <ViewRect* with left = 0, top = 0, right = 1489, bottom = 1335>
11:13:43 [Melodyne-23AKScdf] [host -> plugin] >> 0: IPlugView::canResize()
11:13:43 [Melodyne-23AKScdf] [plugin <- host]    kResultOk (from cache)
11:13:43 [Melodyne-23AKScdf] [host -> plugin] >> 0: IPlugView::onSize(newSize = <ViewRect* with left = 0, top = 0, right = 1491, bottom = 1335>)
11:13:43 [Melodyne-23AKScdf] [Wine STDERR] DEBUG: Resizing wrapper window to 1491x1335
11:13:43 [Melodyne-23AKScdf] [host <- plugin]    kResultOk
11:13:43 [Melodyne-23AKScdf] [Wine STDERR] DEBUG: X11 event 22
11:13:43 [Melodyne-23AKScdf] [Wine STDERR] DEBUG: ConfigureNotify for window 23070326
11:13:43 [Melodyne-23AKScdf] [Wine STDERR] DEBUG: X11 event 22
11:13:43 [Melodyne-23AKScdf] [Wine STDERR] DEBUG: ConfigureNotify for window 23070329
11:13:43 [Melodyne-23AKScdf] [Wine STDERR] DEBUG: X11 event 22
11:13:43 [Melodyne-23AKScdf] [Wine STDERR] DEBUG: ConfigureNotify for window 37748736
11:13:43 [Melodyne-23AKScdf] [Wine STDERR] DEBUG: X11 event 23
11:13:43 [Melodyne-23AKScdf] [Wine STDERR] DEBUG: ConfigureRequest for window 41943041
11:13:43 [Melodyne-23AKScdf] [host -> plugin] >> 0: IPlugView::getSize(size*)
11:13:43 [Melodyne-23AKScdf] [host <- plugin]    kResultOk, <ViewRect* with left = 0, top = 0, right = 1491, bottom = 1335>
11:13:43 [Melodyne-23AKScdf] [Wine STDERR] DEBUG: X11 event 22
11:13:43 [Melodyne-23AKScdf] [Wine STDERR] DEBUG: ConfigureNotify for window 37748736
11:13:43 [Melodyne-23AKScdf] [host -> plugin] >> 0: IPlugView::getSize(size*)
11:13:43 [Melodyne-23AKScdf] [host <- plugin]    kResultOk, <ViewRect* with left = 0, top = 0, right = 1491, bottom = 1335>
11:13:43 [Melodyne-23AKScdf] [host -> plugin] >> 0: IPlugView::canResize()
11:13:43 [Melodyne-23AKScdf] [plugin <- host]    kResultOk (from cache)
11:13:43 [Melodyne-23AKScdf] [host -> plugin] >> 0: IPlugView::onSize(newSize = <ViewRect* with left = 0, top = 0, right = 1490, bottom = 1335>)
11:13:43 [Melodyne-23AKScdf] [Wine STDERR] DEBUG: Resizing wrapper window to 1490x1335
11:13:43 [Melodyne-23AKScdf] [host <- plugin]    kResultOk
11:13:43 [Melodyne-23AKScdf] [host -> plugin] >> 0: IPlugView::getSize(size*)
11:13:43 [Melodyne-23AKScdf] [host <- plugin]    kResultOk, <ViewRect* with left = 0, top = 0, right = 1491, bottom = 1335>
11:13:43 [Melodyne-23AKScdf] [host -> plugin] >> 0: IPlugView::canResize()
11:13:43 [Melodyne-23AKScdf] [plugin <- host]    kResultOk (from cache)
11:13:43 [Melodyne-23AKScdf] [host -> plugin] >> 0: IPlugView::onSize(newSize = <ViewRect* with left = 0, top = 0, right = 1490, bottom = 1335>)
11:13:43 [Melodyne-23AKScdf] [Wine STDERR] DEBUG: Resizing wrapper window to 1490x1335
11:13:43 [Melodyne-23AKScdf] [host <- plugin]    kResultOk
11:13:43 [Melodyne-23AKScdf] [host -> plugin] >> 0: IPlugView::getSize(size*)
11:13:43 [Melodyne-23AKScdf] [host <- plugin]    kResultOk, <ViewRect* with left = 0, top = 0, right = 1491, bottom = 1335>
11:13:43 [Melodyne-23AKScdf] [host -> plugin] >> 0: IPlugView::canResize()
11:13:43 [Melodyne-23AKScdf] [plugin <- host]    kResultOk (from cache)
11:13:43 [Melodyne-23AKScdf] [host -> plugin] >> 0: IPlugView::onSize(newSize = <ViewRect* with left = 0, top = 0, right = 1490, bottom = 1335>)
11:13:43 [Melodyne-23AKScdf] [Wine STDERR] DEBUG: Resizing wrapper window to 1490x1335
11:13:43 [Melodyne-23AKScdf] [host <- plugin]    kResultOk
11:13:43 [Melodyne-23AKScdf] [host -> plugin] >> 0: IPlugView::getSize(size*)
11:13:43 [Melodyne-23AKScdf] [host <- plugin]    kResultOk, <ViewRect* with left = 0, top = 0, right = 1491, bottom = 1335>
11:13:43 [Melodyne-23AKScdf] [host -> plugin] >> 0: IPlugView::canResize()
11:13:43 [Melodyne-23AKScdf] [plugin <- host]    kResultOk (from cache)
11:13:43 [Melodyne-23AKScdf] [host -> plugin] >> 0: IPlugView::onSize(newSize = <ViewRect* with left = 0, top = 0, right = 1490, bottom = 1335>)
11:13:43 [Melodyne-23AKScdf] [Wine STDERR] DEBUG: Resizing wrapper window to 1490x1335

When it goes into the loop the plugin is still responsive, but the mouse cursor offset issue comes back. Resizing it again until the loop stops fixes the issue.

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]"
@asahilina asahilina force-pushed the new-wine10-embedding branch from 59aad89 to 0626fa4 Compare May 22, 2025 02:42
@asahilina
Copy link
Author

Pushed a hacky fix for that.

@asahilina asahilina changed the title Use WM_WINDOW_ROLE instead of WM_STATE to detect the host window Multiple wine10 embedding fixes May 22, 2025
@asahilina
Copy link
Author

Spectrasonics Trilian seems to still have a mouse offset, but this time equal to the delta between the plugin window and the host window (the height of the Ardour plugin header bar). Hmm...

@asahilina
Copy link
Author

asahilina commented May 22, 2025

Korg M1 (VST3) fails to update host window size when the plugin scale is changed via the UI.

Edit: Similar problem with FabFilter plugins, except here the UI briefly glitches to the new size before returning to the host window size. The mouse then doesn't work until the plugin is manually resized.

@asahilina
Copy link
Author

asahilina commented May 22, 2025

Melodyne does not allow resizing to smaller than the initial size, but the plugin remembers the last window size and uses that as its initial size, so once you expand it and close it, you can never make it smaller again. I seem to remember this was always an issue?

Edit: Yeah, this one is an Ardour bug: https://tracker.ardour.org/view.php?id=8764

@asahilina
Copy link
Author

Testing with FabFilter, not sure if this is a DAW bug. It looks like it immediately requests a resize back to the original size.

14:48:14 [FabFilter Saturn 2-BDLMiltv] [Wine STDERR] DEBUG: Resizing wrapper window to 1440x864
14:48:14 [FabFilter Saturn 2-BDLMiltv] [host -> plugin] >> 1: IPlugView::getSize(size*)
14:48:14 [FabFilter Saturn 2-BDLMiltv] [plugin -> host] >> 1: IPlugFrame::resizeView(view = <IPlugView*>, newSize = <ViewRect* with left = 0, top = 0, right = 1440, bottom = 864>)
14:48:14 [FabFilter Saturn 2-BDLMiltv] [host -> plugin] >> 1: IPlugView::onSize(newSize = <ViewRect* with left = 0, top = 0, right = 1440, bottom = 864>)
14:48:14 [FabFilter Saturn 2-BDLMiltv] [Wine STDERR] DEBUG: Resizing wrapper window to 1440x864
14:48:14 [FabFilter Saturn 2-BDLMiltv] [host <- plugin]    kResultOk
14:48:14 [FabFilter Saturn 2-BDLMiltv] [plugin <- host]    kResultOk
14:48:14 [FabFilter Saturn 2-BDLMiltv] [Wine STDERR] DEBUG: ConfigureNotify for window 44040192
14:48:14 [FabFilter Saturn 2-BDLMiltv] [Wine STDERR] DEBUG: ConfigureRequest for window 48234497
14:48:14 [FabFilter Saturn 2-BDLMiltv] [host <- plugin]    kResultOk, <ViewRect* with left = 0, top = 0, right = 1440, bottom = 864>
14:48:14 [FabFilter Saturn 2-BDLMiltv] [host <- plugin]    kResultOk, <ViewRect* with left = 0, top = 0, right = 1440, bottom = 864>
14:48:14 [FabFilter Saturn 2-BDLMiltv] [host -> plugin] >> 1: IPlugView::canResize()
14:48:14 [FabFilter Saturn 2-BDLMiltv] [host <- plugin]    kResultOk
14:48:14 [FabFilter Saturn 2-BDLMiltv] [host -> plugin] >> 1: IPlugView::onSize(newSize = <ViewRect* with left = 0, top = 0, right = 1200, bottom = 675>)
14:48:14 [FabFilter Saturn 2-BDLMiltv] [Wine STDERR] DEBUG: Resizing wrapper window to 1200x675
14:48:14 [FabFilter Saturn 2-BDLMiltv] [host <- plugin]    kResultOk
14:48:14 [FabFilter Saturn 2-BDLMiltv] [Wine STDERR] DEBUG: ConfigureRequest for window 48234497
14:48:14 [FabFilter Saturn 2-BDLMiltv] [host -> plugin] >> 1: IPlugView::getSize(size*)
14:48:14 [FabFilter Saturn 2-BDLMiltv] [host <- plugin]    kResultOk, <ViewRect* with left = 0, top = 0, right = 1200, bottom = 675>
14:48:14 [FabFilter Saturn 2-BDLMiltv] [Wine STDERR] DEBUG: ConfigureNotify for window 44040192
14:48:14 [FabFilter Saturn 2-BDLMiltv] [Wine STDERR] DEBUG: ConfigureNotify for window 44040192
14:48:14 [FabFilter Saturn 2-BDLMiltv] [Wine STDERR] DEBUG: Unhandled X11 event 10
14:48:14 [FabFilter Saturn 2-BDLMiltv] [Wine STDERR] DEBUG: Unhandled X11 event 33
14:48:14 [FabFilter Saturn 2-BDLMiltv] [Wine STDERR] DEBUG: Unhandled X11 event 33

@asahilina
Copy link
Author

asahilina commented May 22, 2025

It looks like Ardour has various issues with resizing, so I'm going to ignore that part. That leaves the Trilian offset...

Trilian seems to do something weird here. The window gets created early, when the parent window is not yet displayed, and then reparented on display. VST2 behavior? But other VST2 plugins work fine...

@DaforLynx
Copy link

Just tested the fork. PG-8X still doesn't work. BUT SCVA still works, sort of. When I switch to view another plugin and then back, it breaks, but otherwise I can access the popout menus just fine. And BassMidiVST suddenly works as well. Amazing!
I'm going to test the other diff you sent now.

2025-05-22.10-41-37.mp4

@DaforLynx
Copy link

The diff worked! No issues with SCVA. And PG-8X suddenly works too. I'm very happy now :)

asahilina added 3 commits May 23, 2025 13:56
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.
Instead of creating the window as 128x128 and then resizing, create it
with the size requested by the plugin. Fixes Korg VST3 plugins.
This fixes issues with various plugins such as PG-8X and SCVA.
@asahilina asahilina force-pushed the new-wine10-embedding branch from d9a8136 to bd3c81f Compare May 23, 2025 04:57
@asahilina
Copy link
Author

Thanks for the feedback! I've added that fix and also fixed the VST2 offset in Ardour (seems M1 was also broken, not sure why I thought it wasn't).

asahilina added 2 commits May 23, 2025 14:26
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.
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.
@asahilina asahilina force-pushed the new-wine10-embedding branch from bd3c81f to 3ac6c86 Compare May 23, 2025 05:29
@asahilina
Copy link
Author

Pushed a fix for VST2 resizing in Ardour (which made the mouse offset come back on resize until the window is moved once). This sounds similar to the Reaper issue described in #409, so maybe it helps there too?

@asahilina
Copy link
Author

asahilina commented May 23, 2025

Noticed another unrelated bug... the VST3 version of M1 only works when you add it fresh, if you save and reload the project file audio output stops working. Other VST3 plugins (like FabFilter Twin2) work though, and the VST2 version of M1 works too. Not sure if this is an Ardour bug, a plugin bug, or a yabridge bug...

@asahilina
Copy link
Author

Plugin-initiated resizing works well with VST2 (tested M1 and FabFilter). Host-initiated resizing is broken though. Conversely, host-initiated works for VST3 and not plugin-initiated in Ardour. The latter I think is just Ardour brokenness, but let me see if I can fix the former...

@asahilina
Copy link
Author

asahilina commented May 23, 2025

Looks like that just causes the parent window to be resized, so we have to listen to that and trigger editor resizing. But we need to be careful not to trigger resize loops.

Edit: Nope, at least for FabFilter plugins, even if I resize the wrapper + Wine windows, nothing happens. Maybe this is just broken with VST2? Looks like on platforms where it works it's some kind of hack...

@DaforLynx
Copy link

M1 works fine for me on REAPER whether loading it new or from an existing project.

@asahilina
Copy link
Author

asahilina commented May 23, 2025

@DaforLynx I think we can probably call that one an Ardour or plugin bug then, most likely ^^ (you tested VST3, right? VST2 does work on Ardour too)

@DaforLynx
Copy link

Oh, I'm dumb. No, I also used the VST2 XD

@robbert-vdh
Copy link
Owner

Thanks so much for taking the time to look into this! I poked at this a couple times over the past months but I just haven't had the time to dig deeper. I wish it wasn't so much work to get the behavior to be as good as it was pre-Wine 9.22. 😅

I sadly won't have time to properly take a look at this until at least Wednesday, sorry for that! I quickly checked the behavior with VST2 and VST3 ValhallaSuperMassive. Everything seems to behavior correctly with 1.5x DPI scaling in Bitwig, REAPER is unresponsive, and with carla-single the DPI scaling issue where the client are is 1 / 1.5 times the size of the window still exists. Not quite sure what's going on there. Will take a look at that on Wednesday or Thursday!

@pablo-888
Copy link

pablo-888 commented May 30, 2025

REAPER user here. VST3 plugins still have the offset problem until I fullscreen the FX window. VST2 plugins also have the same issue except I have to place the plugin's UI on the top left corner of the screen (not maximize it). I thought it was just KORG WAVESTATION and TRITON but I also tested Vallhalla's ValhallaFreqEcho which has both VST2 and VST3 versions and they have the exact same behaviour.

I guess the upside is that some plugins that I couldn't render at all before with the main new-wine10-embedding (KORG TRITON for example which would only show a small square) now display fine even if it has those issues lol.

Update: Just tested them all in Ardour and they work perfectly there!

@robbert-vdh robbert-vdh force-pushed the new-wine10-embedding branch from 572729b to e18d598 Compare June 1, 2025 20:48
@robbert-vdh
Copy link
Owner

Still haven't gotten around to looking at the remaining issues, but since this is already a big improvement over the current status quo I just cherry picked everything into the new-wine10-embedding branch so we can continue iterating from here. Thanks again for looking into this!

@robbert-vdh robbert-vdh closed this Jun 1, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants