Problem with explorer desktop and PAINT messages

Jesse Allen the3dfxdude at
Sun Apr 9 23:37:07 CDT 2006


There is a problem with explorer managing the desktop and the sending of
PAINT messages. I've narrowed it down to the following area. In
dlls/user/message.c wait_message_reply(), if QS_PAINT are the bits we get, 
and we call MsgWaitForMultipleObjectsEx, it seems to block the process
indefinitely. Should another process be replying here? I decided to
make the function return if we get QS_PAINT. Now my app doesn't hang and 
paints properly. Any ideas what I should be looking for or know?

Note the call MsgWaitForMultipleObjectsEx waits for sent messages.
Changing it makes no difference.


--- wine-current/dlls/user/message.c	2006-03-30 19:37:06.000000000 -0700
+++ wine/dlls/user/message.c	2006-04-09 18:47:14.000000000 -0700
@@ -2136,7 +2136,7 @@ static void wait_message_reply( UINT fla
-        if (wake_bits & QS_SMRESULT) return;  /* got a result */
+        if (wake_bits & (QS_SMRESULT | QS_PAINT)) return;  /* got a result */
         if (wake_bits & QS_SENDMESSAGE)
             /* Process the sent message immediately */

More information about the wine-devel mailing list