Marc Aurele La France wrote: | On Mon, 7 Mar 2005, Mark Vojkovich wrote:
|>> Is it intentional that pScrn->PointerMoved() is being called (by whom?) |>> when DGA is active?
|>> I only receive the cursor's last coordinates here from the time before |>> DGA was activated. Any mouse movement while DGA is active has no |>> influence on the coordinates received here.
|> There is no cursor in DGA mode. Clients can still get mouse |> events, but that's not the same thing. DGA mouse events reflect |> relative motion rather than absolute, and the bulk of the cursor |> paths need to be bypassed. That is, the cursor isn't anywhere, |> the mouse has been disconnected from the cursor and the relative |> mouse events are sent directly to the client.
| Yes, but I don't think that answers Thomas's question.
Erm, yes.
I suspected that the cursor stuff is out of order during DGA usage. My concern was more in the line of why calls to pScrn->PointerMoved() are issued during DGA activity. That seems like a bug to me. (The generic xf86PointerMoved does not contain any checks for DGA activity.)
I discovered this while enhancing MergedFB mode which has a very tricky driver-side PointerMoved() implementation requirement in order to pan the real display modes within current meta mode. As soon as I switch, say, vmware to full screen, I get constant coordinates in my PointerMoved() routine regardless of mouse movement (but synchronous to mouse movement, ie no random calls but calls clearly related to actual mouse movement).
I have looked at the cursor code but it goes through many layers, so I wasn't able to locate the call yet. In xf86Input.c, a DGAStealMotionEvent is immediately followed by a "continue" statement, but that obvisouly doesn't keep the event in some way get through to the PointerMoved() function.
I work around this now, by checking for DGA myself, but that should be fixed globally.
The attached should do just that.
Marc.
+----------------------------------+-----------------------------------+ | Marc Aurele La France | work: 1-780-492-9310 | | Computing and Network Services | fax: 1-780-492-1729 | | 352 General Services Building | email: [EMAIL PROTECTED] | | University of Alberta +-----------------------------------+ | Edmonton, Alberta | | | T6G 2H1 | Standard disclaimers apply | | CANADA | | +----------------------------------+-----------------------------------+ XFree86 developer and VP. ATI driver and X server internals.
Viewport.diff.gz
Description: Binary data