]> source.dussan.org Git - tigervnc.git/commitdiff
Set the correct cursor when starting
authorPeter Åstrand (astrand) <astrand@cendio.se>
Wed, 11 Oct 2017 13:12:10 +0000 (15:12 +0200)
committerPeter Åstrand (astrand) <astrand@cendio.se>
Wed, 8 Nov 2017 09:40:13 +0000 (10:40 +0100)
XFixes only reports cursor changes. We must manually call
XFixesGetCursorImage() when starting.

unix/x0vncserver/XDesktop.cxx
unix/x0vncserver/XDesktop.h

index c60d08132d846e0bb2248f0a203e0f36a1a4d06f..e670a0b76fa890664dd501033e09df91398d588d 100644 (file)
@@ -207,6 +207,10 @@ void XDesktop::start(VNCServer* vs) {
     }
 #endif
 
+#ifdef HAVE_XFIXES
+    setCursor();
+#endif
+
     server->setLEDState(ledState);
 
     running = true;
@@ -357,7 +361,6 @@ bool XDesktop::handleGlobalEvent(XEvent* ev) {
 #ifdef HAVE_XFIXES
     } else if (ev->type == xfixesEventBase + XFixesCursorNotify) {
       XFixesCursorNotifyEvent* cev;
-      XFixesCursorImage *cim;
 
       if (!running)
         return true;
@@ -367,6 +370,17 @@ bool XDesktop::handleGlobalEvent(XEvent* ev) {
       if (cev->subtype != XFixesDisplayCursorNotify)
         return false;
 
+      return setCursor();
+#endif
+    }
+
+    return false;
+}
+
+bool XDesktop::setCursor()
+{
+      XFixesCursorImage *cim;
+
       cim = XFixesGetCursorImage(dpy);
       if (cim == NULL)
         return false;
@@ -410,9 +424,4 @@ bool XDesktop::handleGlobalEvent(XEvent* ev) {
       delete [] cursorData;
       XFree(cim);
       return true;
-#endif
-    }
-
-    return false;
 }
-
index cc513a0379a64a14c994d0e84cbd3e2353d2305c..bc0648c8c73e24a1ab759d3b7536f3a1a60bd29f 100644 (file)
@@ -74,6 +74,7 @@ protected:
   unsigned ledState;
   const unsigned short *codeMap;
   unsigned codeMapLen;
+  bool setCursor();
 };
 
 #endif // __XDESKTOP_H__