Callbacks while app is looping
Mark Westcott
mark at houseoffish.org
Fri May 2 14:20:52 CDT 2003
On Thursday 01 May 2003 10:42 am, Mike Hearn wrote:
> > This is as far as I can get (new to wine) - any ideas anyone? I threw a
> > test case app that illustrates the problem
>
> Could you make that available? either C source with Makefile or compiled
> EXE is fine.
Sure, exe is here:
http://www.befishy.co.uk/files/GetDeviceStateTest.exe
> > (btw, the WH_KEYBOARD_LL hook has the note 'should use SendMessage
> > instead', but I don't get what this means or know if using SendMessage
> > instead would have anything to do with fixing this problem)
>
> It might do, poking around in the windows/input.c file reveals the hook
> is called using HOOK_CallHooks() rather than sending a message. MSDN
> says Windows internally uses messages to implement this one for some
> reason, but on the other hand presumably DirectInput knows how Wine does
> it.
Ok, but I just did a little bit more poking and it turns out that
windows/input.c:queue_kbd_event isn't getting called at all, and back
further, nor is SendInput() or kbd_event(). (Btw, mouse events don't get
through either during the while (1) loop.), so the fact its calling the hooks
this way isn't the problem.
> Being able to play with the test app would make it easier to debug this
> problem.
>
> Also, if any Wine/Win32 gurus could point to some docs on how callback
> routines are invoked, that'd be useful.
> One other possibility is that DirectInput should not be using keyboard
> event hooks in this way. GetDeviceState() implies reading the keyboard
> device directly, or reading an internal map of key states - NOT waiting
> for keyboard events. But, I haven't seen that code and didn't implement
> it, so I might be talking rubbish.
Well, the wine DInput implentation keeps an internal map of key states and
updates these when an event happens. Its just this badly written bit of code
thats using it to wait for a keyboard event :)
> thanks -mike (TD on irc)
Thanks for the response Mike,
Mark
More information about the wine-devel
mailing list