--- /dev/null
+--- wine-20030508/dlls/x11drv/event.c.orig Tue Jul 8 00:03:21 2003
++++ wine-20030508/dlls/x11drv/event.c Tue Jul 8 00:04:10 2003
+@@ -131,25 +131,38 @@
+ */
+ static int process_events( struct x11drv_thread_data *data )
+ {
+- XEvent event;
+- int count = 0;
++XEvent event;
++int count = 0;
++
++wine_tsx11_lock();
++
++if( DGAUsed ) {
++
++while ( XPending( gdi_display ) )
++{
++XNextEvent( gdi_display, &event );
++wine_tsx11_unlock();
++EVENT_ProcessEvent( &event );
++count++;
++wine_tsx11_lock();
++}
++
++} else {
++
++while ( XPending( data->display ) )
++{
++XNextEvent( data->display, &event );
++wine_tsx11_unlock();
++EVENT_ProcessEvent( &event );
++count++;
++wine_tsx11_lock();
++}
+
+- wine_tsx11_lock();
+- while ( XPending( data->display ) )
+- {
+- Bool ignore;
+-
+- XNextEvent( data->display, &event );
+- ignore = XFilterEvent( &event, None );
+- wine_tsx11_unlock();
+- if (!ignore) EVENT_ProcessEvent( &event );
+- count++;
+- wine_tsx11_lock();
+- }
+- wine_tsx11_unlock();
+- return count;
+ }
+
++wine_tsx11_unlock();
++return count;
++}
+
+ /***********************************************************************
+ * MsgWaitForMultipleObjectsEx (X11DRV.@)