Convert pointer coordinates to absolute
It is possible to set pointer coordinate using absolute numbers, but
getting them back will always give us screen relative ones. Do the
necessary calculations manually so we return sane values to the caller.
diff --git a/unix/xserver/hw/vnc/Input.c b/unix/xserver/hw/vnc/Input.c
index 55befa7..64305cb 100644
--- a/unix/xserver/hw/vnc/Input.c
+++ b/unix/xserver/hw/vnc/Input.c
@@ -33,7 +33,9 @@
#include "inpututils.h"
#endif
#include "mi.h"
+#include "mipointer.h"
#include "exevents.h"
+#include "scrnintstr.h"
#include "xkbsrv.h"
#include "xkbstr.h"
#include "xserver-properties.h"
@@ -186,8 +188,16 @@
void vncGetPointerPos(int *x, int *y)
{
- if (vncPointerDev != NULL)
- GetSpritePosition(vncPointerDev, &cursorPosX, &cursorPosY);
+ if (vncPointerDev != NULL) {
+ ScreenPtr ptrScreen;
+
+ miPointerGetPosition(vncPointerDev, &cursorPosX, &cursorPosY);
+
+ /* Pointer coordinates are screen relative */
+ ptrScreen = miPointerGetScreen(vncPointerDev);
+ cursorPosX += ptrScreen->x;
+ cursorPosY += ptrScreen->y;
+ }
*x = cursorPosX;
*y = cursorPosY;