wine/ server/queue.c dlls/user/input.c

Alexandre Julliard julliard at wine.codeweavers.com
Mon Nov 14 09:17:09 CST 2005


ChangeSet ID:	21266
CVSROOT:	/opt/cvs-commit
Module name:	wine
Changes by:	julliard at winehq.org	2005/11/14 09:17:09

Modified files:
	server         : queue.c 
	dlls/user      : input.c 

Log message:
	Added support for the QS_ALLPOSTMESSAGE flag.

Patch: http://cvs.winehq.org/patch.py?id=21266

Old revision  New revision  Changes     Path
 1.70          1.71          +5 -4       wine/server/queue.c
 1.8           1.9           +6 -3       wine/dlls/user/input.c

Index: wine/server/queue.c
diff -u -p wine/server/queue.c:1.70 wine/server/queue.c:1.71
--- wine/server/queue.c:1.70	14 Nov 2005 15:17: 9 -0000
+++ wine/server/queue.c	14 Nov 2005 15:17: 9 -0000
@@ -471,7 +471,7 @@ static void remove_queue_message( struct
         if (list_empty( &queue->msg_list[kind] )) clear_queue_bits( queue, QS_SENDMESSAGE );
         break;
     case POST_MESSAGE:
-        if (list_empty( &queue->msg_list[kind] )) clear_queue_bits( queue, QS_POSTMESSAGE );
+        if (list_empty( &queue->msg_list[kind] )) clear_queue_bits( queue, QS_POSTMESSAGE|QS_ALLPOSTMESSAGE );
         break;
     }
     free_message( msg );
@@ -1420,7 +1420,7 @@ void post_message( user_handle_t win, un
         msg->data_size = 0;
 
         list_add_tail( &thread->queue->msg_list[POST_MESSAGE], &msg->entry );
-        set_queue_bits( thread->queue, QS_POSTMESSAGE );
+        set_queue_bits( thread->queue, QS_POSTMESSAGE|QS_ALLPOSTMESSAGE );
     }
     release_object( thread );
 }
@@ -1592,7 +1592,7 @@ DECL_HANDLER(send_message)
                 break;
             }
             list_add_tail( &recv_queue->msg_list[POST_MESSAGE], &msg->entry );
-            set_queue_bits( recv_queue, QS_POSTMESSAGE );
+            set_queue_bits( recv_queue, QS_POSTMESSAGE|QS_ALLPOSTMESSAGE );
             break;
         case MSG_HARDWARE:
             queue_hardware_message( recv_queue, msg );
@@ -1631,7 +1631,8 @@ DECL_HANDLER(get_message)
     if (req->flags & GET_MSG_SENT_ONLY) goto done;  /* nothing else to check */
 
     /* clear changed bits so we can wait on them if we don't find a message */
-    queue->changed_bits = 0;
+    if (req->get_first == 0 && req->get_last == ~0U) queue->changed_bits = 0;
+    else queue->changed_bits &= QS_ALLPOSTMESSAGE;
 
     /* then check for posted messages */
     if (get_posted_message( queue, get_win, req->get_first, req->get_last, req->flags, reply ))
Index: wine/dlls/user/input.c
diff -u -p wine/dlls/user/input.c:1.8 wine/dlls/user/input.c:1.9
--- wine/dlls/user/input.c:1.8	14 Nov 2005 15:17: 9 -0000
+++ wine/dlls/user/input.c	14 Nov 2005 15:17: 9 -0000
@@ -236,11 +236,14 @@ DWORD WINAPI GetQueueStatus( UINT flags 
 {
     DWORD ret = 0;
 
-    if (flags & ~0xff)
-        FIXME("QS_xxxx flags (%04x) are not handled\n", flags & ~0xff);
+    if (flags & ~(QS_ALLINPUT | QS_ALLPOSTMESSAGE | QS_SMRESULT))
+    {
+        SetLastError( ERROR_INVALID_FLAGS );
+        return 0;
+    }
 
     /* check for pending X events */
-    USER_Driver->pMsgWaitForMultipleObjectsEx( 0, NULL, 0, QS_ALLINPUT, 0 );
+    USER_Driver->pMsgWaitForMultipleObjectsEx( 0, NULL, 0, flags, 0 );
 
     SERVER_START_REQ( get_queue_status )
     {



More information about the wine-cvs mailing list