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.

Attachment: Viewport.diff.gz
Description: Binary data



Reply via email to