From: Rémi Bernon rbernon@codeweavers.com
--- dlls/winex11.drv/event.c | 25 +++++++++---------------- 1 file changed, 9 insertions(+), 16 deletions(-)
diff --git a/dlls/winex11.drv/event.c b/dlls/winex11.drv/event.c index c3c8d9a4070..f4cafd679b5 100644 --- a/dlls/winex11.drv/event.c +++ b/dlls/winex11.drv/event.c @@ -399,17 +399,23 @@ static inline BOOL call_event_handler( Display *display, XEvent *event )
/*********************************************************************** - * process_events + * ProcessEvents (X11DRV.@) */ -static BOOL process_events( Display *display, Bool (*filter)(Display*, XEvent*,XPointer), ULONG_PTR arg ) +BOOL X11DRV_ProcessEvents( DWORD mask ) { XEvent event, prev_event; + struct x11drv_thread_data *thread_data; + Display *display; int count = 0; BOOL queued = FALSE; enum event_merge_action action = MERGE_DISCARD;
+ if (!(thread_data = x11drv_thread_data())) return FALSE; + if (thread_data->current_event) mask = 0; /* don't process nested events */ + display = thread_data->display; + prev_event.type = 0; - while (XCheckIfEvent( display, &event, filter, (char *)arg )) + while (XCheckIfEvent( display, &event, filter_event, (XPointer)(UINT_PTR)mask )) { count++; if (XFilterEvent( &event, None )) @@ -469,19 +475,6 @@ static BOOL process_events( Display *display, Bool (*filter)(Display*, XEvent*,X }
-/*********************************************************************** - * ProcessEvents (X11DRV.@) - */ -BOOL X11DRV_ProcessEvents( DWORD mask ) -{ - struct x11drv_thread_data *data = x11drv_thread_data(); - - if (!data) return FALSE; - if (data->current_event) mask = 0; /* don't process nested events */ - - return process_events( data->display, filter_event, mask ); -} - /*********************************************************************** * EVENT_x11_time_to_win32_time *