Dan Kegel wrote:
Jeff wrote:
I'm trying to solve my bug 16346 http://bugs.winehq.org/show_bug.cgi?id=16346 ... I'm trying to figure out where in the wine code I should look for a system that might be eating all of the messages intended for my application. Can anyone point me in the right direction?
I dunno, but that test case is nice and small. Can you turn it into a wine conformance test? That will make it even more likely somebody helps find a solution...
- Dan
I'm not sure how to create a non-interactive unit test case for this, since it involves interplay with the window manager and results in a hang. If someone could point out a similar test case I could pattern mine on, that would be great.
On the solution end of things, I have discovered that the following patch resolves the problem. The issue is that the MessageBox is created from within a WM_ACTIVATEAPP message which initiated from the X11 driver. The X11 driver is coded to prevent nested events from being handled.
Is there a good reason to prevent nested X11 events from being handled?
Jeff
From: Jeff Miller jmiller-wine@tanner.com Date: Tue, 9 Dec 2008 18:33:20 -0800 Subject: Fix bug #16346 by allowing nested X11 events to be handled.
--- dlls/winex11.drv/event.c | 2 -- 1 files changed, 0 insertions(+), 2 deletions(-)
diff --git a/dlls/winex11.drv/event.c b/dlls/winex11.drv/event.c index 5f7ebef..83a4a82 100644 --- a/dlls/winex11.drv/event.c +++ b/dlls/winex11.drv/event.c @@ -403,8 +403,6 @@ DWORD X11DRV_MsgWaitForMultipleObjectsEx( DWORD count, const HANDLE *handles, timeout, flags & MWMO_ALERTABLE ); }
- if (data->current_event) mask = 0; /* don't process nested events */ - if (process_events( data->display, filter_event, mask )) ret = count - 1; else if (count || timeout) { -- 1.6.0.3