[Bug 47104] Cannot click anywhere on VST plugins

wine-bugs at winehq.org wine-bugs at winehq.org
Thu May 2 07:17:32 CDT 2019


https://bugs.winehq.org/show_bug.cgi?id=47104

Gabriel Ivăncescu <gabrielopcode at gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Assignee|wine-bugs at winehq.org        |gabrielopcode at gmail.com
     Ever confirmed|0                           |1
             Status|UNCONFIRMED                 |ASSIGNED

--- Comment #5 from Gabriel Ivăncescu <gabrielopcode at gmail.com> ---
Ok, I've managed to reproduce it. The problem is this 'vst-bridge' from:
https://github.com/abique/vst-bridge

Note that it's actually a Linux native app that hosts Windows plugins via Wine.

It uses a hack to get the whole window from Wine, using GetPropA(g_host.hwnd,
"__wine_x11_whole_window"); and then the plugin calls XReparentWindow on it.
This messes it up on the Wine side because root_window is not updated when that
happens so it becomes out of sync with Wine's expectations.

The coordinates sent now (with x_root and y_root) are correct for the entire
screen, but because of the hack, Wine believes they are in a completely
different spot. It believes the plugin itself is at the top-left on the
desktop. The (0,0) for Wine's root is now not the screen's top-left but rather
where the Window was reparented to by vst-bridge.

For example, its (0,0) coord is (0,0) after MapWindowPoints to the desktop, so
MapWindowPoints actually does nothing. This is obviously out of sync with
event->x_root which has the proper full-screen coordinate, because root_window
doesn't get updated by vst-bridge (it can't since it's internal).

I don't know how to fix this cleanly and honestly I don't know if it's Wine's
fault to begin with. I expected __wine stuff to be for internal-use only.

A somewhat ugly workaround for vst-bridge would be to do the MapWindowPoints
and check whether the result is identical to what was put in. If so, use that
instead of x_root. This would help with this particular hack, and of course
we'll have to document it why. It still fixes the original bug with Winamp so
it's still good.

I tested this workaround crudely, but I'd like to know if it's a good idea
before I factor it properly.

Thoughts?

-- 
Do not reply to this email, post in Bugzilla using the
above URL to reply.
You are receiving this mail because:
You are watching all bug changes.


More information about the wine-bugs mailing list