From: Rémi Bernon rbernon@codeweavers.com
--- dlls/winex11.drv/event.c | 24 ++++++++---------------- 1 file changed, 8 insertions(+), 16 deletions(-)
diff --git a/dlls/winex11.drv/event.c b/dlls/winex11.drv/event.c index 55709a0bc5f..ecb0cd8eaea 100644 --- a/dlls/winex11.drv/event.c +++ b/dlls/winex11.drv/event.c @@ -399,17 +399,22 @@ 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 ) { + struct x11drv_thread_data *data = x11drv_thread_data(); + Display *display = data->display; XEvent event, prev_event; int count = 0; BOOL queued = FALSE; enum event_merge_action action = MERGE_DISCARD;
+ if (!data) return FALSE; + if (data->current_event) mask = 0; /* don't process nested events */ + 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 +474,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 *