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