Vincent Povirk : server: Clear the queue' s QS_SMRESULT bit when sending a new message.

Alexandre Julliard julliard at winehq.org
Tue May 20 14:36:24 CDT 2014


Module: wine
Branch: master
Commit: 417585661c26af26bc3251cff8e628e04adbec80
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=417585661c26af26bc3251cff8e628e04adbec80

Author: Vincent Povirk <vincent at codeweavers.com>
Date:   Tue May 13 15:35:20 2014 -0500

server: Clear the queue's QS_SMRESULT bit when sending a new message.

---

 dlls/user32/tests/win.c |    2 +-
 server/queue.c          |    9 +++++++--
 2 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/dlls/user32/tests/win.c b/dlls/user32/tests/win.c
index a858f6b..cffceb3 100644
--- a/dlls/user32/tests/win.c
+++ b/dlls/user32/tests/win.c
@@ -7580,7 +7580,7 @@ static LRESULT WINAPI smresult_wndproc(HWND hwnd, UINT msg, WPARAM wparam, LPARA
 
         /* Send another message while we have a reply queued for the current one. */
         res = SendMessageA(data->thread_hwnd, WM_APP+2, 0, lparam);
-        todo_wine ok(res == 0x449b0190, "unexpected result %lx\n", res);
+        ok(res == 0x449b0190, "unexpected result %lx\n", res);
 
         return 0;
     }
diff --git a/server/queue.c b/server/queue.c
index 1954886..57603e1 100644
--- a/server/queue.c
+++ b/server/queue.c
@@ -681,7 +681,11 @@ static struct message_result *alloc_message_result( struct msg_queue *send_queue
             result->callback_msg = callback_msg;
             list_add_head( &send_queue->callback_result, &result->sender_entry );
         }
-        else if (send_queue) list_add_head( &send_queue->send_result, &result->sender_entry );
+        else if (send_queue)
+        {
+            list_add_head( &send_queue->send_result, &result->sender_entry );
+            clear_queue_bits( send_queue, QS_SMRESULT );
+        }
 
         if (timeout != TIMEOUT_INFINITE)
             result->timeout = add_timeout_user( timeout, result_timeout, result );
@@ -2502,7 +2506,8 @@ DECL_HANDLER(get_message_reply)
             else
             {
                 result = LIST_ENTRY( entry, struct message_result, sender_entry );
-                if (!result->replied) clear_queue_bits( queue, QS_SMRESULT );
+                if (result->replied) set_queue_bits( queue, QS_SMRESULT );
+                else clear_queue_bits( queue, QS_SMRESULT );
             }
         }
     }




More information about the wine-cvs mailing list