Alexandre Julliard : server: Don' t drop mouse messages that should go to a different thread input.

Alexandre Julliard julliard at winehq.org
Thu Nov 8 07:07:40 CST 2007


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

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Thu Nov  8 13:53:26 2007 +0100

server: Don't drop mouse messages that should go to a different thread input.

Instead requeue them into the proper destination queue. Reported by
Ulrich Czekalla.

---

 server/queue.c |   16 ++++++++++++----
 1 files changed, 12 insertions(+), 4 deletions(-)

diff --git a/server/queue.c b/server/queue.c
index 1cda33c..51315fd 100644
--- a/server/queue.c
+++ b/server/queue.c
@@ -1222,12 +1222,20 @@ static void release_hardware_message( struct msg_queue *queue, unsigned int hw_i
         struct thread *owner = get_window_thread( new_win );
         if (owner)
         {
-            if (owner->queue->input == input)
+            msg->win = new_win;
+            if (owner->queue->input != input)
             {
-                msg->win = new_win;
-                set_queue_bits( owner->queue, get_hardware_msg_bit( msg ));
-                remove = 0;
+                list_remove( &msg->entry );
+                if (msg->msg == WM_MOUSEMOVE && merge_message( owner->queue->input, msg ))
+                {
+                    free_message( msg );
+                    release_object( owner );
+                    return;
+                }
+                list_add_tail( &owner->queue->input->msg_list, &msg->entry );
             }
+            set_queue_bits( owner->queue, get_hardware_msg_bit( msg ));
+            remove = 0;
             release_object( owner );
         }
     }




More information about the wine-cvs mailing list