]> git.eshelyaron.com Git - emacs.git/commitdiff
Improve handling of invisible cursor alloc failures
authorPo Lu <luangruo@yahoo.com>
Sun, 8 May 2022 06:33:34 +0000 (14:33 +0800)
committerPo Lu <luangruo@yahoo.com>
Sun, 8 May 2022 06:33:34 +0000 (14:33 +0800)
* src/xterm.c (x_toggle_visible_pointer): Use Xfixes if cursor
allocation really fails.  This happens when the X server has a
limit on the number of cursors that can be created.

src/xterm.c

index 2fc4c559a9cb3e71a09f695062ad4e22540e43cf..a7f0f3d7efa0a18e1e74bd6e0d91e80aae44cb64 100644 (file)
@@ -9452,8 +9452,21 @@ x_toggle_visible_pointer (struct frame *f, bool invisible)
   if (dpyinfo->invisible_cursor == None)
     dpyinfo->invisible_cursor = make_invisible_cursor (dpyinfo);
 
+#ifndef HAVE_XFIXES
   if (dpyinfo->invisible_cursor == None)
     invisible = false;
+#else
+  /* But if Xfixes is available, try using it instead.  */
+  if (x_probe_xfixes_extension (dpyinfo))
+    {
+      dpyinfo->fixes_pointer_blanking = true;
+      xfixes_toggle_visible_pointer (f, invisible);
+
+      return;
+    }
+  else
+    invisible = false;
+#endif
 
   if (invisible)
     XDefineCursor (dpyinfo->display, FRAME_X_WINDOW (f),