From: Pierre Ossman Date: Thu, 18 Aug 2016 14:18:26 +0000 (+0200) Subject: Set cursor sprite globally X-Git-Tag: v1.7.90~91 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=3fb9479caac55202b3b39d065bb34d4b2bc36b89;p=tigervnc.git Set cursor sprite globally Pointer are global, not screen specific. Hence so is also the cursor sprite. --- diff --git a/unix/xserver/hw/vnc/vncExtInit.cc b/unix/xserver/hw/vnc/vncExtInit.cc index 36d3742b..dea3cb8b 100644 --- a/unix/xserver/hw/vnc/vncExtInit.cc +++ b/unix/xserver/hw/vnc/vncExtInit.cc @@ -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) diff --git a/unix/xserver/hw/vnc/vncExtInit.h b/unix/xserver/hw/vnc/vncExtInit.h index a0914ad7..9785d112 100644 --- a/unix/xserver/hw/vnc/vncExtInit.h +++ b/unix/xserver/hw/vnc/vncExtInit.h @@ -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); diff --git a/unix/xserver/hw/vnc/vncHooks.c b/unix/xserver/hw/vnc/vncHooks.c index b21f4c67..22ea9ea8 100644 --- a/unix/xserver/hw/vnc/vncHooks.c +++ b/unix/xserver/hw/vnc/vncHooks.c @@ -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); }