server: Give system APCs priority over signaled objects.
authorAlexandre Julliard <julliard@winehq.org>
Tue, 1 May 2007 12:07:24 +0000 (14:07 +0200)
committerAlexandre Julliard <julliard@winehq.org>
Tue, 1 May 2007 12:07:24 +0000 (14:07 +0200)
server/thread.c

index b8aff71..c3a2535 100644 (file)
@@ -497,15 +497,14 @@ static int check_wait( struct thread *thread )
     struct thread_wait *wait = thread->wait;
     struct wait_queue_entry *entry = wait->queues;
 
+    assert( wait );
+
+    if ((wait->flags & SELECT_INTERRUPTIBLE) && !list_empty( &thread->system_apc ))
+        return STATUS_USER_APC;
+
     /* Suspended threads may not acquire locks, but they can run system APCs */
-    if (thread->process->suspend + thread->suspend > 0)
-    {
-        if ((wait->flags & SELECT_INTERRUPTIBLE) && !list_empty( &thread->system_apc ))
-            return STATUS_USER_APC;
-        return -1;
-    }
+    if (thread->process->suspend + thread->suspend > 0) return -1;
 
-    assert( wait );
     if (wait->flags & SELECT_ALL)
     {
         int not_ok = 0;
@@ -535,7 +534,6 @@ static int check_wait( struct thread *thread )
     }
 
  other_checks:
-    if ((wait->flags & SELECT_INTERRUPTIBLE) && !list_empty(&thread->system_apc)) return STATUS_USER_APC;
     if ((wait->flags & SELECT_ALERTABLE) && !list_empty(&thread->user_apc)) return STATUS_USER_APC;
     if (wait->timeout <= current_time) return STATUS_TIMEOUT;
     return -1;