Crashing menus, event handling broken?

Jukka Heinonen jhei at iki.fi
Sat Nov 24 08:47:39 CST 2001


Alexandre Julliard wrote:
> Raw messages are not supposed to get processed while there is a cooked
> message in the queue. Is the app filtering messages in GetMessage?
> Could you please do a +server trace showing the problem?

Well, raw messages can be processed even though there is 
a cooked message in the queue if the application calls GetMessage 
and the requested message range does not include mouse messages.
This seems to be the case here. 

It looks like the correct fix is much more simple than I 
thought it would be: wineserver get_message handler just needs to 
check that there are no pending cooked messages before returning 
raw messages and some signaling magic must be added to 
prevent wakeups for raw messages if a cooked message has been 
queued.

Here is (hopefully) the relevant part of +server trace:

080703b8: get_message( flags=1, get_win=00000000, get_first=00000100, 
get_last=00000108 )
080703b8: get_message() = 0 { type=6, win=00000000, msg=00000200, 
wparam=00000001, lparam=00000000, x=142, y=26, time=0000b7b8, 
info=00020022, data={} }
080703b8: send_message( id=0x80703b8, type=7, win=00020022, msg=000000a0, 
wparam=00000005, lparam=001a008e, x=142, y=26, time=0000b7b8, 
info=00020022, timeout=0, data={} )
080703b8: send_message() = 0
080703b8: get_message( flags=1, get_win=00000000, get_first=00000100, 
get_last=00000108 )
080703b8: get_message() = 0 { type=6, win=00000000, msg=00000202, 
wparam=00000000, lparam=00000000, x=142, y=26, time=0000b7b8, 
info=00020022, data={} }
080703b8: send_message( id=0x80703b8, type=7, win=00020022, msg=000000a2, 
wparam=00000005, lparam=001a008e, x=142, y=26, time=0000b7b8, 
info=00020022, timeout=0, data={} )
080703b8: send_message() = 0

-- 
Jukka Heinonen <http://www.iki.fi/jhei/>




More information about the wine-devel mailing list