Re: DGA and PointerMoved()
Marc Aurele La France <[email protected]>
| Newsgroups | gmane.comp.xfree86.devel |
|---|---|
| Message-ID | <[email protected]> |
On Wed, 30 Mar 2005, Marc Aurele La France wrote: > On Sat, 12 Mar 2005, Marc Aurele La France wrote: >> On Tue, 8 Mar 2005, Thomas Winischhofer wrote: >>> 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. > Anything more on this? I guess not. Committed. 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.