]> git.eshelyaron.com Git - emacs.git/commitdiff
(Fx_backspace_delete_keys_p): Check library and server
authorGerd Moellmann <gerd@gnu.org>
Thu, 28 Dec 2000 16:23:19 +0000 (16:23 +0000)
committerGerd Moellmann <gerd@gnu.org>
Thu, 28 Dec 2000 16:23:19 +0000 (16:23 +0000)
XKB versions.  Call XkbFreeKeyboard with 2nd arg 0.

src/ChangeLog
src/xfns.c

index f45bd81793597aa8afd77b74e280a3d7a7418171..64d2bbf7d9f337e108059529de7917995d45a935 100644 (file)
@@ -1,5 +1,8 @@
 2000-12-28  Gerd Moellmann  <gerd@gnu.org>
 
+       * xfns.c (Fx_backspace_delete_keys_p): Check library and server
+       XKB versions.  Call XkbFreeKeyboard with 2nd arg 0.
+
        * keyboard.c (echo_char): If C is an integer, always call
        push_key_description.  Former code could signal an invalid
        character error.
index 6e8931b42d703fe9db7e154f881b09ca7277c4ad..b52f7fef7c0619328e6cc660a5c17527ca82a710 100644 (file)
@@ -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