i succeded to run the game "Wizardry 8" with original wine. Now the input is broken, almost every event is handled twice (e.g. i hit a and 2 a's appear, clicking with mouse results in doubleclick) and it does not seem to be a problem with dlls/x11drv/[event.c|keyboard.c|mouse.c]. Also the windows/input.c sends all requests only once!
to see this insert in windows/input.c line 113 (the queue_raw_hardwar...):
if (message == 0x0100) printf("request KeyDown\n"); if (message == 0x0101) printf("request KeyUp\n");
here, 0x0100 is WM_KEYDOWN, 0x0101 is WM_KEYUP now, i've added to scheduler/client.c line 745 (the wine_server_call):
if (req->u.req.send_message_request.msg == 0x0100) \ printf("sending KeyDown\n"); if (req->u.req.send_message_request.msg == 0x0101) \ printf("sending KeyUp\n");
In most cases this results in two send_requests per action (mouse also) and sometimes (nondeterministic) i've got only one WM_KEYDOWN => only one keypress (at the end of the mail is some output).
I'm stuck now at this point and do not know how to debug furhtermore. It's obvious that wine_server_call gets called twice (once from windows/input.c and the second time from ?!?). Can someone help me and tell me how to continue. What do I have to do now to find the bug ?
mIc
P.S.: Yes, beeing addicted to computer games make's me debug wine!!!!!
Output: request KeyDown sending KeyDown sending KeyDown request KeyUp sending KeyUp sending KeyUp request KeyDown sending KeyDown sending KeyDown request KeyUp sending KeyUp request KeyDown sending KeyDown sending KeyDown request KeyUp sending KeyUp sending KeyUp request KeyDown sending KeyDown request KeyUp sending KeyUp sending KeyUp request KeyDown sending KeyDown sending KeyDown request KeyUp sending KeyUp sending KeyUp