-
Notifications
You must be signed in to change notification settings - Fork 953
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Mouse pointer disappearing #1811
Comments
Since you're seeing in RealVNC as well, it seems likely to be a server-side issue. Unfortunately, the most likely explanation is that your desktop environment/applications are simply setting a blank cursor. Could you test with an older build of TigerVNC? It will be difficult to resolve this without a good way to reproduce it, unfortunately. |
I doubt that my desktop (most recent Mate Desktop 1.28) or included apps (noticed it with Mate Desktop's caja, pluma or terminal only, as much as I remember) are setting a blank cursor, because I would notice it also without VNC (I am using the same versions on 1 physical PC and 2 notebooks much more time as on server over VNC, and never ever noticed it). I've downgraded to tigervnc-1.13.1-11.1 (direct fc39 rebuild for rhel 9) on one server to see what happens. |
What I've noticed it that once the cursor disappears, it doesn't reapper at the first occurence where it should change the shape, or next few after (for instance while moving over the text area, on the edge of the window or so...). Also it doesn't reapper after the first mouse click (or, the next few). But, suddenly at one moment, it is back. I absolutely can't find a pattern... |
Many applications often set a blank cursor, so that is not particularly rare. Commonly, when you are typing something. How did the test go with an earlier version of TigerVNC? And could you test with the TigerVNC that's included in RHEL? That would help us see if it's a build issue or something else. |
I haven't spent very much time on a test server (where I've downgraded tigervnc to 1.13.1, as above) in last 2 weeks, but haven't noticed anything such since then. So, I guess something was introduced in between causing that. And no, it was not happening during write or so, but mainly while opening a new window (like mate desktop's own text editor pluma or file browser caja or terminal, as much as I remember) or switching from one window to another. I am normally not noticing any pointer disappearing during that (on normal login or older vnc sessions), maybe just a cursor shape change or so (or not even that). My recent builds include PR #1672 (Scale remote screen to window (X11)) and PR #1785 (h264: Use consistent size of scaling buffer), but I don't believe those introduce anything that could lead to that. |
I don't think the last Rocky (RHEL) 1.13.1-1 build is significantly different, in particular since also newer Fedora rebuilt 1.13.1-11 doesn't seem to have this issue... |
Just happened again on the server with the latest version built 1.40.80 (git 242488d - 14.8.2024) after right clicking a text file in caja and choosing "Open with pluma". On 1.13 server haven't noticed that yet, despite working quite a lot there in last few days! So it most probably has to be something related to cursors introduced after 1.13... |
I am testing commit f5ac658 now, and haven't noticed this issue yet. Before, I've tested commit 4812f13, and the issue was already present. I suspect this issue might be introduced with commit 858a859 (Jun 19). Any clue, which one of 14 commits (or more of them) of PR #1769 should I try to revert to resolve it? |
It seems this issue appears after commit f5ac658 (this build seems to be the last working well - without this issue). By the way, why are commits first listed separately - from Detect conflicting timer rescheduling to Slow down fake clock when no clients - and again after that as Merge branch 'present' of github.com:CendioOssman/tigervnc? Isn't that a bit confusing? Anyhow, I've found out in between that the cursor is invisible when it should be the "waiting" one (a kind of rotating whatever it is - for example when caja is waiting tor something to finish) - like immediately after login, before the background is painted and caja folder browser windows and other things being restored. And, it seems sometimes the standard (arrow) corsor is not back immediately when it should be, but after some (random ?) delay. I've tried to revert just commit Avoid patching miinitext.c for Xvnc for the latest code. Build went well (no errors), but vncserver service can not be launched (vnc server seems to be crashing immediately at start). |
That's just how GitHub presents things. History in git is not linear, but has branches with parallel development. Unfortunately, GitHub does not show this clearly in their commit lists.
A crash is not expected after reverting that. Just note that it changes the patch files, so you cannot just do Are you familiar with |
Thank you for the feedback, CendioOssman . I've expected that it is how git works, but haven't noticed such a behavior in other repos yet (usually there are more clear PRs without separate commits...). Anyhow, I've discovered there are substantial differences comparing the last separate commit (as Slow down fake clock when no clients) and a complete branch merge (as Merge branch 'present' of github.com:CendioOssman/tigervnc), the second one being OK, while the separate commits seem to revert the whole tree for a bunch of other commits back... Based on that, I've finally managed to create a patch: diff -Nupr a/unix/xserver/configure.ac b/unix/xserver/configure.ac
--- a/unix/xserver/configure.ac 2024-09-20 03:32:43.612182841 +0200
+++ b/unix/xserver/configure.ac 2024-09-20 11:57:13.882513764 +0200
@@ -1743,6 +1743,7 @@ if test "x$XVFB" = xyes; then
fi
dnl Xvnc DDX
+AC_SUBST([XVNC_CPPFLAGS], ["-DHAVE_DIX_CONFIG_H $XSERVER_CFLAGS"])
AC_SUBST([XVNC_LIBS], ["$FB_LIB $FIXES_LIB $XEXT_LIB $CONFIG_LIB $DBE_LIB $RECORD_LIB $GLX_LIBS $RANDR_LIB $RENDER_LIB $DAMAGE_LIB $DRI3_LIB $PRESENT_LIB $MIEXT_SYNC_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $COMPOSITE_LIB $MAIN_LIB"])
AC_SUBST([XVNC_SYS_LIBS], ["$GLX_SYS_LIBS"])
@@ -1790,6 +1791,8 @@ if test "x$XORG" = xauto; then
fi
AC_MSG_RESULT([$XORG])
+AC_DEFINE_UNQUOTED(XORG_VERSION_CURRENT, [$VENDOR_RELEASE], [Current Xorg version])
+
if test "x$XORG" = xyes; then
XORG_DDXINCS='-I$(top_srcdir)/hw/xfree86 -I$(top_srcdir)/hw/xfree86/include -I$(top_srcdir)/hw/xfree86/common'
XORG_OSINCS='-I$(top_srcdir)/hw/xfree86/os-support -I$(top_srcdir)/hw/xfree86/os-support/bus -I$(top_srcdir)/os'
@@ -2004,7 +2007,6 @@ if test "x$XORG" = xyes; then
AC_DEFINE(XORG_SERVER, 1, [Building Xorg server])
AC_DEFINE(XORGSERVER, 1, [Building Xorg server])
AC_DEFINE(XFree86Server, 1, [Building XFree86 server])
- AC_DEFINE_UNQUOTED(XORG_VERSION_CURRENT, [$VENDOR_RELEASE], [Current Xorg version])
AC_DEFINE(NEED_XF86_TYPES, 1, [Need XFree86 typedefs])
AC_DEFINE(NEED_XF86_PROTOTYPES, 1, [Need XFree86 helper functions])
AC_DEFINE(__XSERVERNAME__, "Xorg", [Name of X server])
diff -Nupr a/unix/xserver/hw/vnc/Makefile.am b/unix/xserver/hw/vnc/Makefile.am
--- a/unix/xserver/hw/vnc/Makefile.am 2024-09-06 17:14:52.000000000 +0200
+++ b/unix/xserver/hw/vnc/Makefile.am 2024-09-20 12:07:14.446541078 +0200
@@ -8,11 +8,7 @@ NETWORK_LIB=$(TIGERVNC_BUILDDIR)/common/
UNIXCOMMON_LIB=$(TIGERVNC_BUILDDIR)/unix/common/libunixcommon.la
COMMON_LIBS=$(NETWORK_LIB) $(RFB_LIB) $(RDR_LIB) $(OS_LIB) $(UNIXCOMMON_LIB)
-AM_CPPFLAGS = \
- -I$(TIGERVNC_BUILDDIR) \
- -I$(TIGERVNC_SRCDIR)/common \
- -I$(TIGERVNC_SRCDIR)/unix/common \
- $(DIX_CFLAGS) $(LIBXCVT_CFLAGS)
+AM_CPPFLAGS = $(LIBXCVT_CFLAGS)
AM_CXXFLAGS = -std=gnu++11
@@ -28,8 +24,10 @@ libvnccommon_la_SOURCES = $(HDRS) \
vncBlockHandler.c XorgGlue.c RandrGlue.c RFBGlue.cc XserverDesktop.cc \
vncInput.c vncInputXKB.c qnum_to_xorgevdev.c qnum_to_xorgkbd.c
-libvnccommon_la_CPPFLAGS = $(AM_CPPFLAGS) \
- -I$(TIGERVNC_SRCDIR)/unix/vncconfig
+libvnccommon_la_CPPFLAGS = -DVENDOR_RELEASE="$(VENDOR_RELEASE)" -I$(TIGERVNC_SRCDIR)/unix/common \
+ -DVENDOR_STRING="\"$(VENDOR_STRING)\"" -I$(TIGERVNC_SRCDIR)/common -UHAVE_CONFIG_H \
+ -I$(TIGERVNC_SRCDIR)/unix/vncconfig $(XVNC_CPPFLAGS) ${XSERVERLIBS_CFLAGS} \
+ -I$(top_srcdir)/include
bin_PROGRAMS = Xvnc
@@ -37,14 +35,18 @@ man1_MANS = Xvnc.man
Xvnc_SOURCES = xvnc.c \
$(top_srcdir)/Xi/stubs.c $(top_srcdir)/mi/miinitext.c \
- buildtime.c
+ $(top_srcdir)/fb/fbcmap_mi.c buildtime.c
# Xvnc contains no C++ sources so automake doesn't understand that we
# need to use the C++ compiler to link things. This is the upstream
# recommendation for coaxing automake.
nodist_EXTRA_Xvnc_SOURCES = dummy.cxx
-Xvnc_CPPFLAGS = $(AM_CPPFLAGS)
+Xvnc_CPPFLAGS = $(XVNC_CPPFLAGS) -DTIGERVNC -DNO_MODULE_EXTS \
+ -UHAVE_CONFIG_H \
+ -DXFree86Server -DVENDOR_RELEASE="$(VENDOR_RELEASE)" \
+ -DVENDOR_STRING="\"$(VENDOR_STRING)\"" -I$(TIGERVNC_SRCDIR)/common -I$(TIGERVNC_SRCDIR)/unix/common \
+ -I$(top_srcdir)/include ${XSERVERLIBS_CFLAGS} $(AM_CPPFLAGS)
LOCAL_LIBS = \
$(XVNC_LIBS) \
@@ -57,7 +59,7 @@ Xvnc_LDADD = \
$(LOCAL_LIBS) \
$(XSERVER_SYS_LIBS) \
$(XVNC_SYS_LIBS) \
- $(LIBXCVT_LIBS)
+ $(LIBXCVT_LIBS) -lX11
Xvnc_LDFLAGS = $(LD_EXPORT_SYMBOLS_FLAG)
@@ -77,10 +79,13 @@ libvnc_la_SOURCES = vncModule.c
# See Xvnc magic above
nodist_EXTRA_libvnc_la_SOURCES = dummy.cxx
-libvnc_la_CPPFLAGS = $(AM_CPPFLAGS) \
+libvnc_la_CPPFLAGS = $(XVNC_CPPFLAGS) -I$(TIGERVNC_SRCDIR)/common -UHAVE_CONFIG_H \
+ -I$(TIGERVNC_SRCDIR)/unix/common \
-I$(top_srcdir)/hw/xfree86/common \
-I$(top_srcdir)/hw/xfree86/os-support \
- -I$(top_srcdir)/hw/xfree86/os-support/bus
+ -I$(top_srcdir)/hw/xfree86/os-support/bus \
+ -I$(top_srcdir)/include \
+ ${XSERVERLIBS_CFLAGS}
libvnc_la_LDFLAGS = -module -avoid-version -Wl,-z,now
diff -Nupr a/unix/xserver/hw/vnc/vncModule.c b/unix/xserver/hw/vnc/vncModule.c
--- a/unix/xserver/hw/vnc/vncModule.c 2024-09-06 17:14:52.000000000 +0200
+++ b/unix/xserver/hw/vnc/vncModule.c 2024-09-20 12:08:12.519930775 +0200
@@ -53,7 +53,7 @@ static XF86ModuleVersionInfo vncVersRec
"TigerVNC Project",
MODINFOSTRING1,
MODINFOSTRING2,
- VENDOR_RELEASE,
+ XORG_VERSION_CURRENT,
1, 0, 0,
ABI_CLASS_EXTENSION, /* needs the server extension ABI */
ABI_EXTENSION_VERSION,
diff -Nupr a/unix/xserver/hw/vnc/xorg-version.h b/unix/xserver/hw/vnc/xorg-version.h
--- a/unix/xserver/hw/vnc/xorg-version.h 2024-09-06 17:14:52.000000000 +0200
+++ b/unix/xserver/hw/vnc/xorg-version.h 2024-09-20 12:09:38.492507695 +0200
@@ -24,12 +24,10 @@
#include <dix-config.h>
#endif
-#include <version-config.h>
-
#define XORG_AT_LEAST(major, minor, patch) \
- (VENDOR_RELEASE >= ((major * 10000000) + (minor * 100000) + (patch * 1000)))
+ (XORG_VERSION_CURRENT >= ((major * 10000000) + (minor * 100000) + (patch * 1000)))
#define XORG_OLDER_THAN(major, minor, patch) \
- (VENDOR_RELEASE < ((major * 10000000) + (minor * 100000) + (patch * 1000)))
+ (XORG_VERSION_CURRENT < ((major * 10000000) + (minor * 100000) + (patch * 1000)))
#if XORG_OLDER_THAN(1, 16, 0)
#error "X.Org older than 1.16 is not supported"
diff -Nupr a/unix/xserver/hw/vnc/xvnc.c b/unix/xserver/hw/vnc/xvnc.c
--- a/unix/xserver/hw/vnc/xvnc.c 2024-09-06 17:14:52.000000000 +0200
+++ b/unix/xserver/hw/vnc/xvnc.c 2024-09-20 12:15:22.129813644 +0200
@@ -71,6 +71,8 @@ from the X Consortium.
#include <X11/keysym.h>
extern char buildtime[];
+#undef VENDOR_RELEASE
+#undef VENDOR_STRING
#include "version-config.h"
#define XVNCVERSION "TigerVNC 1.14.80"
@@ -1152,17 +1154,14 @@ vncClientStateChange(CallbackListPtr *a,
#ifdef GLXEXT
#if XORG_OLDER_THAN(1, 20, 0)
extern void GlxExtensionInit(void);
-#endif
-#endif
-static const ExtensionModule vncExtensions[] = {
- {vncExtensionInit, "TIGERVNC", NULL},
-#ifdef GLXEXT
-#if XORG_OLDER_THAN(1, 20, 0)
- { GlxExtensionInit, "GLX", &noGlxExtension },
+static ExtensionModule glxExt = {
++ GlxExtensionInit,
+ "GLX",
+ &noGlxExtension
+};
#endif
#endif
-};
void
InitOutput(ScreenInfo * scrInfo, int argc, char **argv)
@@ -1172,11 +1171,15 @@ InitOutput(ScreenInfo * scrInfo, int arg
vncPrintBanner();
- if (serverGeneration == 1)
- LoadExtensionList(vncExtensions, ARRAY_SIZE(vncExtensions), TRUE);
-
#if XORG_AT_LEAST(1, 20, 0)
xorgGlxCreateVendor();
+#else
+
+#ifdef GLXEXT
+ if (serverGeneration == 1)
+ LoadExtensionList(&glxExt, 1, TRUE);
+#endif
+
#endif
/* initialize pixmap formats */
diff -Nupr a/unix/xserver/mi/miinitext.c b/unix/xserver/mi/miinitext.c
--- a/unix/xserver/mi/miinitext.c 2024-09-20 03:32:43.570182561 +0200
+++ b/unix/xserver/mi/miinitext.c 2024-09-20 12:18:21.266015738 +0200
@@ -107,8 +107,15 @@ SOFTWARE.
#include "os.h"
#include "globals.h"
+#ifdef TIGERVNC
+extern void vncExtensionInit(void);
+#endif
+
/* List of built-in (statically linked) extensions */
static const ExtensionModule staticExtensions[] = {
+#ifdef TIGERVNC
+ {vncExtensionInit, "TIGERVNC", NULL},
+#endif
{GEExtensionInit, "Generic Event Extension", &noGEExtension},
{ShapeExtensionInit, "SHAPE", NULL},
#ifdef MITSHM
diff -Nupr a/unix/xserver120.patch b/unix/xserver120.patch
--- a/unix/xserver120.patch 2024-09-06 17:14:52.000000000 +0200
+++ b/unix/xserver120.patch 2024-09-20 12:29:49.380636432 +0200
@@ -10,11 +10,12 @@ index 0909cc5b4..c01873200 100644
AC_PROG_LN_S
LT_PREREQ([2.2])
LT_INIT([disable-static win32-dll])
-@@ -1735,6 +1736,19 @@ if test "x$XVFB" = xyes; then
+@@ -1735,6 +1736,20 @@ if test "x$XVFB" = xyes; then
AC_SUBST([XVFB_SYS_LIBS])
fi
+dnl Xvnc DDX
++AC_SUBST([XVNC_CPPFLAGS], ["-DHAVE_DIX_CONFIG_H $XSERVER_CFLAGS"])
+AC_SUBST([XVNC_LIBS], ["$FB_LIB $FIXES_LIB $XEXT_LIB $CONFIG_LIB $DBE_LIB $RECORD_LIB $GLX_LIBS $RANDR_LIB $RENDER_LIB $DAMAGE_LIB $DRI3_LIB $PRESENT_LIB $MIEXT_SYNC_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $COMPOSITE_LIB $MAIN_LIB"])
+AC_SUBST([XVNC_SYS_LIBS], ["$GLX_SYS_LIBS"])
+
@@ -30,6 +31,23 @@ index 0909cc5b4..c01873200 100644
dnl Xnest DDX
+@@ -1812,6 +1817,8 @@ if test "x$XORG" = xauto; then
+ fi
+ AC_MSG_RESULT([$XORG])
+
++AC_DEFINE_UNQUOTED(XORG_VERSION_CURRENT, [$VENDOR_RELEASE], [Current Xorg version])
++
+ if test "x$XORG" = xyes; then
+ XORG_DDXINCS='-I$(top_srcdir)/hw/xfree86 -I$(top_srcdir)/hw/xfree86/include -I$(top_srcdir)/hw/xfree86/common'
+ XORG_OSINCS='-I$(top_srcdir)/hw/xfree86/os-support -I$(top_srcdir)/hw/xfree86/os-support/bus -I$(top_srcdir)/os'
+@@ -2029,7 +2036,6 @@ if test "x$XORG" = xyes; then
+ AC_DEFINE(XORG_SERVER, 1, [Building Xorg server])
+ AC_DEFINE(XORGSERVER, 1, [Building Xorg server])
+ AC_DEFINE(XFree86Server, 1, [Building XFree86 server])
+- AC_DEFINE_UNQUOTED(XORG_VERSION_CURRENT, [$VENDOR_RELEASE], [Current Xorg version])
+ AC_DEFINE(NEED_XF86_TYPES, 1, [Need XFree86 typedefs])
+ AC_DEFINE(NEED_XF86_PROTOTYPES, 1, [Need XFree86 helper functions])
+ AC_DEFINE(__XSERVERNAME__, "Xorg", [Name of X server])
@@ -2058,7 +2067,6 @@ if test "x$GLAMOR" = xyes; then
[AC_DEFINE(GLAMOR_HAS_EGL_QUERY_DRIVER, 1, [Have GLAMOR_HAS_EGL_QUERY_DRIVER])],
[])
@@ -127,6 +145,26 @@ index 19895dc77..3ecfa8b7a 100644
$(AM_V_at)for i in $(SUBDIRS) ; do $(MAKE) -C $$i relink || exit 1 ; done
+
+SUBDIRS += vnc
+Index: b/mi/miinitext.c
+===================================================================
+--- a/mi/miinitext.c
++++ b/mi/miinitext.c
+@@ -107,8 +107,15 @@ SOFTWARE.
+ #include "os.h"
+ #include "globals.h"
+
++#ifdef TIGERVNC
++extern void vncExtensionInit(void);
++#endif
++
+ /* List of built-in (statically linked) extensions */
+ static const ExtensionModule staticExtensions[] = {
++#ifdef TIGERVNC
++ {vncExtensionInit, "TIGERVNC", NULL},
++#endif
+ {GEExtensionInit, "Generic Event Extension", &noGEExtension},
+ {ShapeExtensionInit, "SHAPE", NULL},
+ #ifdef MITSHM
diff --git a/include/dix-config.h.in b/include/dix-config.h.in
index f8fc67067..d53c4e72f 100644
--- a/include/dix-config.h.in
diff -Nupr a/unix/xserver21.patch b/unix/xserver21.patch
--- a/unix/xserver21.patch 2024-09-06 17:14:52.000000000 +0200
+++ b/unix/xserver21.patch 2024-09-20 12:35:22.454873056 +0200
@@ -10,11 +10,12 @@ index fad7b5769..2c167de3d 100644
AC_PROG_LN_S
LT_PREREQ([2.2])
LT_INIT([disable-static win32-dll])
-@@ -1720,6 +1721,19 @@ if test "x$XVFB" = xyes; then
+@@ -1720,6 +1721,20 @@ if test "x$XVFB" = xyes; then
AC_SUBST([XVFB_SYS_LIBS])
fi
+dnl Xvnc DDX
++AC_SUBST([XVNC_CPPFLAGS], ["-DHAVE_DIX_CONFIG_H $XSERVER_CFLAGS"])
+AC_SUBST([XVNC_LIBS], ["$FB_LIB $FIXES_LIB $XEXT_LIB $CONFIG_LIB $DBE_LIB $RECORD_LIB $GLX_LIBS $RANDR_LIB $RENDER_LIB $DAMAGE_LIB $DRI3_LIB $PRESENT_LIB $MIEXT_SYNC_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $COMPOSITE_LIB $MAIN_LIB"])
+AC_SUBST([XVNC_SYS_LIBS], ["$GLX_SYS_LIBS"])
+
@@ -30,6 +31,23 @@ index fad7b5769..2c167de3d 100644
dnl Xnest DDX
+@@ -1812,6 +1817,8 @@ if test "x$XORG" = xauto; then
+ fi
+ AC_MSG_RESULT([$XORG])
+
++AC_DEFINE_UNQUOTED(XORG_VERSION_CURRENT, [$VENDOR_RELEASE], [Current Xorg version])
++
+ if test "x$XORG" = xyes; then
+ XORG_DDXINCS='-I$(top_srcdir)/hw/xfree86 -I$(top_srcdir)/hw/xfree86/include -I$(top_srcdir)/hw/xfree86/common'
+ XORG_OSINCS='-I$(top_srcdir)/hw/xfree86/os-support -I$(top_srcdir)/hw/xfree86/os-support/bus -I$(top_srcdir)/os'
+@@ -2029,7 +2036,6 @@ if test "x$XORG" = xyes; then
+ AC_DEFINE(XORG_SERVER, 1, [Building Xorg server])
+ AC_DEFINE(XORGSERVER, 1, [Building Xorg server])
+ AC_DEFINE(XFree86Server, 1, [Building XFree86 server])
+- AC_DEFINE_UNQUOTED(XORG_VERSION_CURRENT, [$VENDOR_RELEASE], [Current Xorg version])
+ AC_DEFINE(NEED_XF86_TYPES, 1, [Need XFree86 typedefs])
+ AC_DEFINE(NEED_XF86_PROTOTYPES, 1, [Need XFree86 helper functions])
+ AC_DEFINE(__XSERVERNAME__, "Xorg", [Name of X server])
@@ -2038,7 +2047,6 @@ if test "x$GLAMOR" = xyes; then
[AC_DEFINE(GLAMOR_HAS_EGL_QUERY_DRIVER, 1, [Have GLAMOR_HAS_EGL_QUERY_DRIVER])],
[])
@@ -56,6 +74,25 @@ index 1749018fa..1172cd59b 100644
$(AM_V_at)for i in $(SUBDIRS) ; do $(MAKE) -C $$i relink || exit 1 ; done
+
+SUBDIRS += vnc
+diff -urpN a/mi/miinitext.c b/mi/miinitext.c
+--- a/mi/miinitext.c 2018-05-10 09:32:37.000000000 -0700
++++ b/mi/miinitext.c 2018-06-13 19:05:14.742200675 -0700
+@@ -107,8 +107,15 @@ SOFTWARE.
+ #include "os.h"
+ #include "globals.h"
+
++#ifdef TIGERVNC
++extern void vncExtensionInit(void);
++#endif
++
+ /* List of built-in (statically linked) extensions */
+ static const ExtensionModule staticExtensions[] = {
++#ifdef TIGERVNC
++ {vncExtensionInit, "TIGERVNC", NULL},
++#endif
+ {GEExtensionInit, "Generic Event Extension", &noGEExtension},
+ {ShapeExtensionInit, "SHAPE", NULL},
+ #ifdef MITSHM
diff --git a/include/dix-config.h.in b/include/dix-config.h.in
index 382d70609..04a4fd263 100644
--- a/include/dix-config.h.in with which I expect to effectively revert the whole Merge branch 'xserver-cleanup'. I've done it manually editing the files of the latest git commit Filter duplicate server history entries, based on the '-Nupr' diff between Merge branch 'xserver-cleanup' and Merge branch 'present' of github.com:CendioOssman/tigervnc. Build went fine, and vncserver (the latest Filter duplicate server history entries from Sep 6, 2024) now seems to work as expected (also the "waiting" cursor is back, and haven't noticed any other issues by now). I guess the actual patch (a part of the code reverted) could be much smaller (what would also be better to get as much of the benefits of this commit possible). Can you suggest what to try (which part does actually anything to do with cursors...)? And no, I am a complete noob about git (know just how to get a complete tree for certain commit and how to get patches...). It is the first time I even hear about git bisect... ;-) |
Nothing in that change is obvious, unfortunately, so it is still interesting to pinpoint the trigger more precisely. I would suggest reverting individual commits from #1770 until you see which commit seems to trigger the problem. You can either do this by hand, or try to let |
It seems commit #662676e - Avoid patching miinitext.c for Xvnc is the culprit. Considering Raise Xorg requirement to 1.20+ remains, I've "optimized" the reverted patch to also completely remove the code for I've most recently successfully rebuilt the commit 2fe9dca with the following patch:
and everything seems to work fine by now. |
I'm not sure however weather the parts of the patch modifying |
It sounds like you are not doing a full rebuild in that case, which unfortunately casts doubt on previous test results. You need to completely remove the entire xserver tree between each test, or you might be seeing effects from previous test builds. |
I'm not sure I understand what you mean... I am building in the following way:
Why would this not be a full rebuild (or, what would need to be fulfilled to be considered as such)? |
I am building rpm with a slightly modified .spec file (based on yours and Fedora one) in mock chroot. |
I'm not sure if this is the same issue, but maybe it's relevant. My pointer was disappearing on the Windows Viewer viewing a Mac Mini. I also noticed that things were really slow, so I switched wallpaper on the Mac to a static picture instead of a video. After that things sped up dramatically and the pointer reappeared. |
Describe the bug
I am noticing recently (some months now, I guess - don't remember to see it in 1.13) that from time to time, with no apparent reason (usually when a new window is opened or so... - maybe when the cursor shape should change?), the mouse pointer (cursor) just disappears. It seems it is still there (I can for instance see a change of buttons when mouse over, select some text or even move a window, if lucky to "catch" it without seeing the exact cursor position), it is just not displayed (invisible). In RealVNC viewer, at the same moment, just a small dot cursor is shown, so I guess the source is on the server side.
To Reproduce
No obvious way to reproduce - seems to happen sporadically...
Expected behavior
Mouse pointer (cursor) is displayed, as on the normal desktop (never noticed that out of vncviewer, so I guess it is not Mate Desktop to be blamed for.
Screenshots
I'll try to make some screenshots when it reappears.
Client (please complete the following information):
Server (please complete the following information):
Additional context
As said, it seems the server sends something causing TigerVNC to not display the cursor at all, while RealVNC viewer displays it as a small dot only. It lasts some time (some seconds) or maybe until I made a few clicks (still trying to find a pattern...), after everything works as supposed to (until next occasion). While "invisible", the shape should also change (standard cursor / select text / resize a window / move a window...), but this doesn't make the cursor to reappear (until - after a while it suddenly does...).
The text was updated successfully, but these errors were encountered: