]> source.dussan.org Git - tigervnc.git/commitdiff
Set cursor sprite globally
authorPierre Ossman <ossman@cendio.se>
Thu, 18 Aug 2016 14:18:26 +0000 (16:18 +0200)
committerPierre Ossman <ossman@cendio.se>
Thu, 18 Aug 2016 14:18:26 +0000 (16:18 +0200)
Pointer are global, not screen specific. Hence so is also the cursor
sprite.

unix/xserver/hw/vnc/vncExtInit.cc
unix/xserver/hw/vnc/vncExtInit.h
unix/xserver/hw/vnc/vncHooks.c

index 36d3742b542676a500ce551ec58e20db04a605bd..dea3cb8bd054f266be465a3ab912ec8f1343ba57 100644 (file)
@@ -394,10 +394,14 @@ void vncAddCopied(int scrIdx, const struct UpdateRect *extents,
   desktop[scrIdx]->add_copied(reg, rfb::Point(dx, dy));
 }
 
-void vncSetCursor(int scrIdx, int width, int height, int hotX, int hotY,
+void vncSetCursor(int width, int height, int hotX, int hotY,
                   const unsigned char *rgbaData)
 {
-  desktop[scrIdx]->setCursor(width, height, hotX, hotY, rgbaData);
+  for (int scr = 0; scr < vncGetScreenCount(); scr++) {
+    if (desktop[scr] == NULL)
+      continue;
+    desktop[scr]->setCursor(width, height, hotX, hotY, rgbaData);
+  }
 }
 
 void vncPreScreenResize(int scrIdx)
index a0914ad777fb42e26ca224499c6b08f0f8e2d6eb..9785d1126a191c61564e145c2ac1e5d826ca4612 100644 (file)
@@ -84,7 +84,7 @@ void vncAddCopied(int scrIdx, const struct UpdateRect *extents,
                   int nRects, const struct UpdateRect *rects,
                   int dx, int dy);
 
-void vncSetCursor(int scrIdx, int width, int height, int hotX, int hotY,
+void vncSetCursor(int width, int height, int hotX, int hotY,
                   const unsigned char *rgbaData);
 
 void vncPreScreenResize(int scrIdx);
index b21f4c679be77f8c0d2f0a3d973266e53588af1e..22ea9ea87b5c667aeda966f39349995041d665f8 100644 (file)
@@ -699,7 +699,7 @@ static Bool vncHooksDisplayCursor(DeviceIntPtr pDev,
     }
 #endif
 
-    vncSetCursor(pScreen->myNum, width, height, hotX, hotY, rgbaData);
+    vncSetCursor(width, height, hotX, hotY, rgbaData);
 
     free(rgbaData);
   }