aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorPo Lu2022-05-08 14:33:34 +0800
committerPo Lu2022-05-08 14:33:34 +0800
commit1a988d9ff55c098ddee0c79afcccbdc63e7c680e (patch)
treee22ffd3af135f924cfe5a11140afef016ee1f44e /src
parent144e9f9b6a376ec0349557ef10a6c133228cda26 (diff)
downloademacs-1a988d9ff55c098ddee0c79afcccbdc63e7c680e.tar.gz
emacs-1a988d9ff55c098ddee0c79afcccbdc63e7c680e.zip
Improve handling of invisible cursor alloc failures
* 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.
Diffstat (limited to 'src')
-rw-r--r--src/xterm.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/xterm.c b/src/xterm.c
index 2fc4c559a9c..a7f0f3d7efa 100644
--- a/src/xterm.c
+++ b/src/xterm.c
@@ -9452,8 +9452,21 @@ x_toggle_visible_pointer (struct frame *f, bool invisible)
9452 if (dpyinfo->invisible_cursor == None) 9452 if (dpyinfo->invisible_cursor == None)
9453 dpyinfo->invisible_cursor = make_invisible_cursor (dpyinfo); 9453 dpyinfo->invisible_cursor = make_invisible_cursor (dpyinfo);
9454 9454
9455#ifndef HAVE_XFIXES
9455 if (dpyinfo->invisible_cursor == None) 9456 if (dpyinfo->invisible_cursor == None)
9456 invisible = false; 9457 invisible = false;
9458#else
9459 /* But if Xfixes is available, try using it instead. */
9460 if (x_probe_xfixes_extension (dpyinfo))
9461 {
9462 dpyinfo->fixes_pointer_blanking = true;
9463 xfixes_toggle_visible_pointer (f, invisible);
9464
9465 return;
9466 }
9467 else
9468 invisible = false;
9469#endif
9457 9470
9458 if (invisible) 9471 if (invisible)
9459 XDefineCursor (dpyinfo->display, FRAME_X_WINDOW (f), 9472 XDefineCursor (dpyinfo->display, FRAME_X_WINDOW (f),