Hi,
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.
Thanks, Jesse
--- 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 } SERVER_END_REQ;
- 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 */