Module: wine Branch: master Commit: 417585661c26af26bc3251cff8e628e04adbec80 URL: http://source.winehq.org/git/wine.git/?a=commit;h=417585661c26af26bc3251cff8...
Author: Vincent Povirk vincent@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 ); } } }