What needs to be fixed to make DGA input under Wine function correctly?
What needs to be fixed to make DGA input under Wine function correctly?
I'll clarify what my question was here.
I was having trouble with DGA, where I would start up a DGA application and it would not accept keyboard or mouse input.
So I did a search of comp.emulators.ms-windows.wine which turned up a similar question with an answer to the effect that DGA input in Wine was presently broken.
So I'd like to know how it was broken, where to look in the code, and what I can do to help fix it. I want working DGA input and I'm willing to do the coding to fix it. I was simply hoping someone could tell me where to look instead of needing me to hunt for the problem, as this would save me time.
On Thu, 27 Jun 2002, Adam Luchjenbroers wrote:
What needs to be fixed to make DGA input under Wine function correctly?
I'll clarify what my question was here.
I was having trouble with DGA, where I would start up a DGA application and it would not accept keyboard or mouse input.
So I did a search of comp.emulators.ms-windows.wine which turned up a similar question with an answer to the effect that DGA input in Wine was presently broken.
So I'd like to know how it was broken, where to look in the code, and what I can do to help fix it. I want working DGA input and I'm willing to do the coding to fix it. I was simply hoping someone could tell me where to look instead of needing me to hunt for the problem, as this would save me time.
look at attachment but it is not finished
look at attachment but it is not finished
Thanks, I have the WineHQ version of wine so I had to manually apply the patch (thank god they're in a human-readable format) but now keyboard input works fine.
What needs to be done to make the mouse work?
Thanks for your help so far and any you may give in the future.
What needs to be done to make the mouse work?
Ok, further testing (using --debugmsg -all,+cursor)
Moving the mouse cursor around shows that it appears while being moved but not otherwise. Analysis of log files show up a few details, a snippet from the logfile is attached
<snip> trace:cursor:X11DRV_GetCursorPos pointer at (417,549) trace:cursor:send_mouse_event (0001,12,3) trace:cursor:X11DRV_GetCursorPos pointer at (417,549) trace:cursor:send_mouse_event (0001,7,5) trace:cursor:send_mouse_event (0001,4,4) trace:cursor:send_mouse_event (0001,3,2) trace:cursor:X11DRV_GetCursorPos pointer at (417,549) trace:cursor:send_mouse_event (0001,2,2) trace:cursor:X11DRV_GetCursorPos pointer at (417,549) trace:cursor:send_mouse_event (0001,1,0) trace:cursor:X11DRV_GetCursorPos pointer at (417,549) trace:cursor:send_mouse_event (0001,0,1) trace:cursor:send_mouse_event (0001,0,1) trace:cursor:X11DRV_GetCursorPos pointer at (417,549) trace:cursor:send_mouse_event (0001,0,2) trace:cursor:send_mouse_event (0001,-1,2) trace:cursor:X11DRV_GetCursorPos pointer at (417,549) trace:cursor:send_mouse_event (0001,-1,0) trace:cursor:X11DRV_GetCursorPos pointer at (417,549) </snip>
Relative mouse motions are being picked up correctly, however X11DRV_GetCursorPos is always returning the same co-ordinate, which is probably where the cursor last was before running the game (Total Annihilation, in this case).
Moving the cursor to the button and clicking saw the button respond, meaning click events were being properly received and the game had the 'correct' cursor position.
I'm not familiar with the wine codebase, any pointers on fixing this?
On Thu, 27 Jun 2002, Adam Luchjenbroers wrote:
What needs to be done to make the mouse work?
Mouse partially ;-) works. For example I can play HMM4 in DGA. But mouse is some slow and similar that the part of events is lost (enter_window, leave_window, etc).
Mouse partially ;-) works. For example I can play HMM4 in DGA. But mouse is some slow and similar that the part of events is lost (enter_window, leave_window, etc).
The behavior I'm getting is basically mouse is visible while being moved and otherwise takes up the position returned by GetCursorPos.
It seems that TA puts the cursor where it thinks it should be when it draws it. But that next frame it is snapped back to where Wine thinks it should be.
I'll look into making the cursor stay where TA puts it. ATM my implementation is a bit messy as it involves two new globals in mouse.c that are used to track mouse location under DGA.
Would you know of a better way of handling it?