---
 src/compositor-x11.c | 15 ++++++++-------
 1 file changed, 8 insertions(+), 7 deletions(-)

diff --git a/src/compositor-x11.c b/src/compositor-x11.c
index 7ec56ff..97c6698 100644
--- a/src/compositor-x11.c
+++ b/src/compositor-x11.c
@@ -25,6 +25,7 @@
 #include <config.h>
 #endif
 
+#include <assert.h>
 #include <stddef.h>
 #include <stdlib.h>
 #include <string.h>
@@ -819,18 +820,21 @@ x11_compositor_handle_event(int fd, uint32_t mask, void 
*data)
        xcb_atom_t atom;
        uint32_t *k;
        uint32_t i, set;
+       uint8_t response_type;
        int count;
 
        prev = NULL;
        count = 0;
        while (x11_compositor_next_event(c, &event, mask)) {
+               response_type = event->response_type & ~0x80;
+
                switch (prev ? prev->response_type & ~0x80 : 0x80) {
                case XCB_KEY_RELEASE:
                        /* Suppress key repeat events; this is only used if we
                         * don't have XCB XKB support. */
                        key_release = (xcb_key_press_event_t *) prev;
                        key_press = (xcb_key_press_event_t *) event;
-                       if ((event->response_type & ~0x80) == XCB_KEY_PRESS &&
+                       if (response_type == XCB_KEY_PRESS &&
                            key_release->time == key_press->time &&
                            key_release->detail == key_press->detail) {
                                /* Don't deliver the held key release
@@ -855,8 +859,7 @@ x11_compositor_handle_event(int fd, uint32_t mask, void 
*data)
                        }
 
                case XCB_FOCUS_IN:
-                       /* assert event is keymap_notify */
-                       focus_in = (xcb_focus_in_event_t *) prev;
+                       assert(response_type == XCB_KEYMAP_NOTIFY);
                        keymap_notify = (xcb_keymap_notify_event_t *) event;
                        c->keys.size = 0;
                        for (i = 0; i < ARRAY_LENGTH(keymap_notify->keys) * 8; 
i++) {
@@ -868,7 +871,6 @@ x11_compositor_handle_event(int fd, uint32_t mask, void 
*data)
                                }
                        }
 
-                       output = x11_compositor_find_output(c, focus_in->event);
                        /* Unfortunately the state only comes with the enter
                         * event, rather than with the focus event.  I'm not
                         * sure of the exact semantics around it and whether
@@ -885,7 +887,7 @@ x11_compositor_handle_event(int fd, uint32_t mask, void 
*data)
                        break;
                }
 
-               switch (event->response_type & ~0x80) {
+               switch (response_type) {
                case XCB_KEY_PRESS:
                        key_press = (xcb_key_press_event_t *) event;
                        if (!c->has_xkb)
@@ -937,7 +939,6 @@ x11_compositor_handle_event(int fd, uint32_t mask, void 
*data)
                                break;
                        if (!c->has_xkb)
                                update_xkb_state_from_core(c, 
enter_notify->state);
-                       output = x11_compositor_find_output(c, 
enter_notify->event);
                        notify_pointer_focus(&c->core_seat, NULL, 0, 0);
                        break;
 
@@ -970,7 +971,7 @@ x11_compositor_handle_event(int fd, uint32_t mask, void 
*data)
 
 #ifdef HAVE_XCB_XKB
                if (c->has_xkb &&
-                   (event->response_type & ~0x80) == c->xkb_event_base) {
+                   response_type == c->xkb_event_base) {
                        xcb_xkb_state_notify_event_t *state =
                                (xcb_xkb_state_notify_event_t *) event;
                        if (state->xkbType == XCB_XKB_STATE_NOTIFY)
-- 
1.7.12.2

_______________________________________________
wayland-devel mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/wayland-devel

Reply via email to