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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.