emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/xelb aac6a74: Temporarily disable update on every NewKe


From: Chris Feng
Subject: [elpa] externals/xelb aac6a74: Temporarily disable update on every NewKeyboardNotify event
Date: Sun, 8 Apr 2018 11:56:46 -0400 (EDT)

branch: externals/xelb
commit aac6a74e2f8a7b579eec3f526a874dfa38bde4c3
Author: Chris Feng <address@hidden>
Commit: Chris Feng <address@hidden>

    Temporarily disable update on every NewKeyboardNotify event
    
    * xcb-keysyms.el (xcb:keysyms:-on-NewKeyboardNotify): Only handle the
    first NewKeyboardNotify event (as a result of selecting that event).
    XELB is currently not efficient enough to handle every such event.
---
 xcb-keysyms.el | 18 +++++++++++-------
 1 file changed, 11 insertions(+), 7 deletions(-)

diff --git a/xcb-keysyms.el b/xcb-keysyms.el
index 725d80d..881946e 100644
--- a/xcb-keysyms.el
+++ b/xcb-keysyms.el
@@ -48,7 +48,8 @@
   ((keytypes :initform nil)
    (keycodes :initform nil)
    (min-keycode :initform 0)
-   (max-keycode :initform 0))
+   (max-keycode :initform 0)
+   (updated :initform nil))
   :documentation "Device (keyboard) properties.")
 
 ;; These variables are shared by all connections.
@@ -153,16 +154,19 @@ This method must be called before using any other method 
in this module."
         (opcode (xcb:-get-extra-plist obj 'keysyms 'opcode))
         (callback (xcb:-get-extra-plist obj 'keysyms 'callback))
         (obj1 (make-instance 'xcb:xkb:NewKeyboardNotify))
-        updated)
+        device updated)
     (xcb:unmarshal obj1 data)
     (with-slots (deviceID oldDeviceID requestMajor requestMinor changed) obj1
       (if (= 0 (logand changed xcb:xkb:NKNDetail:DeviceID))
           (when (/= 0 (logand changed xcb:xkb:NKNDetail:Keycodes))
-            ;; (xcb:keysyms:-update-keytypes obj deviceID)
-            (xcb:keysyms:-update-keycodes obj deviceID)
-            (when (= deviceID device-id)
-              (setq updated t)
-              (xcb:keysyms:-update-modkeys obj deviceID)))
+            (setq device (xcb:-get-extra-plist obj 'keysyms deviceID))
+            (when (and device
+                       (not (slot-value device 'updated)))
+              (xcb:keysyms:-update-keycodes obj deviceID)
+              (when (= deviceID device-id)
+                (setq updated t)
+                (xcb:keysyms:-update-modkeys obj deviceID))
+              (setf (slot-value device 'updated) t)))
         (xcb:keysyms:-set-per-client-flags obj deviceID)
         (xcb:keysyms:-update-keytypes obj deviceID)
         (xcb:keysyms:-update-keycodes obj deviceID)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]