Re: DGA and PointerMoved()
Marc Aurele La France <[email protected]>
| Newsgroups | gmane.comp.xfree86.devel |
|---|---|
| Message-ID | <[email protected]> |
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. 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
(application/octet-stream, 456 B) - not displayed