[PATCH sis] Use miPointerSetPosition, not miPointerAbsoluteCursor

Peter Hutterer peter.hutterer at who-t.net
Tue Jan 3 19:26:30 PST 2012


miPointerAbsoluteCursor was removed in '09.

Technically this shouldn't just work on the VCP since any master pointer may
end up in the dead area. However, I suspect the Venn diagramm of MPX users
and sis merged framebuffer users shows little overlap.

miPointerSetPosition's prototype changed a few times, these are a bunch of
untested ifdefs that should be correct according to the git history.

Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
---
I do wonder why I bothered. The way I read this is that this code would have
had unresolved symbols since server 1.6 and no-one complained.

 src/sis_driver.c |   19 ++++++++++++++++++-
 1 files changed, 18 insertions(+), 1 deletions(-)

diff --git a/src/sis_driver.c b/src/sis_driver.c
index 6f7a15e..3218239 100644
--- a/src/sis_driver.c
+++ b/src/sis_driver.c
@@ -85,6 +85,10 @@
 #include <X11/extensions/dpms.h>
 #endif
 
+#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 15
+#include <inputstr.h> /* for inputInfo */
+#endif
+
 
 #ifdef XF86DRI
 #include "dri.h"
@@ -9346,9 +9350,22 @@ SISMergedPointerMoved(int scrnIndex, int x, int y)
 	}
      }
      if(doit) {
-	UpdateCurrentTime();
 	sigstate = xf86BlockSIGIO();
+#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 15
+        {
+            double dx = x, dy = y;
+            miPointerSetPosition(inputInfo.pointer, Absolute, &dx, &dy);
+            x = (int)dx;
+            y = (int)dy;
+        }
+#elif GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 11
+	miPointerSetPosition(inputInfo.pointer, Absolute, x, y);
+#elif GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 5
+	miPointerSetPosition(inputInfo.pointer, x, y);
+#else
+	UpdateCurrentTime();
 	miPointerAbsoluteCursor(x, y, currentTime.milliseconds);
+#endif
 	xf86UnblockSIGIO(sigstate);
 	return;
      }
-- 
1.7.7.4



More information about the xorg-devel mailing list