aboutsummaryrefslogtreecommitdiffstats
path: root/src/xfns.c
diff options
context:
space:
mode:
authorGerd Moellmann <[email protected]>2000-12-28 16:23:19 +0000
committerGerd Moellmann <[email protected]>2000-12-28 16:23:19 +0000
commit46f6a2585461878660811a7eb3d03451599f90f3 (patch)
treebdf5fd16a59b34bc4d3fec78941e4784b5001ad6 /src/xfns.c
parent2ece9174d1f57d48229b4cbd3d1d932df40687ed (diff)
(Fx_backspace_delete_keys_p): Check library and server
XKB versions. Call XkbFreeKeyboard with 2nd arg 0.
Diffstat (limited to 'src/xfns.c')
-rw-r--r--src/xfns.c19
1 files changed, 16 insertions, 3 deletions
diff --git a/src/xfns.c b/src/xfns.c
index 6e8931b42d..b52f7fef7c 100644
--- a/src/xfns.c
+++ b/src/xfns.c
@@ -11096,10 +11096,23 @@ usual X keysyms.")
struct frame *f = check_x_frame (frame);
Display *dpy = FRAME_X_DISPLAY (f);
Lisp_Object have_keys;
-
- have_keys = Qnil;
+ int major, minor, op, event, error;
BLOCK_INPUT;
+
+ /* Check library version in case we're dynamically linked. */
+ major = XkbMajorVersion;
+ minor = XkbMinorVersion;
+ if (!XkbLibraryVersion (&major, &minor))
+ return Qnil;
+
+ /* Check that the server supports XKB. */
+ major = XkbMajorVersion;
+ minor = XkbMinorVersion;
+ if (!XkbQueryExtension (dpy, &op, &event, &error, &major, &minor))
+ return Qnil;
+
+ have_keys = Qnil;
kb = XkbGetKeyboard (dpy, XkbAllComponentsMask, XkbUseCoreKbd);
if (kb)
{
@@ -11118,7 +11131,7 @@ usual X keysyms.")
backspace_keycode = i;
}
- XkbFreeKeyboard (kb, XkbAllComponentsMask, True);
+ XkbFreeKeyboard (kb, 0, True);
if (delete_keycode
&& backspace_keycode