This is an automated email from the git hooks/post-receive script.

git pushed a commit to branch v-1.26.0
in repository efl.

View the commit online.

commit 2cb411c4c82e6e141ef93859019bd3d78622e4c8
Author: Carsten Haitzler <[email protected]>
AuthorDate: Thu Mar 24 17:34:58 2022 +0000

    ecore-x - in order to only handle "new kbds" instead of maps add ev info
    
    als flag in the xkb event to look at in this case. this allows for
    fixes in e to not redo kbd layout when xmodmap changes modmap
    
    @feat
---
 src/lib/ecore_x/Ecore_X.h        |  7 ++++---
 src/lib/ecore_x/ecore_x_events.c | 17 ++++++++---------
 2 files changed, 12 insertions(+), 12 deletions(-)

diff --git a/src/lib/ecore_x/Ecore_X.h b/src/lib/ecore_x/Ecore_X.h
index 9dced7f381..cbccd1047d 100644
--- a/src/lib/ecore_x/Ecore_X.h
+++ b/src/lib/ecore_x/Ecore_X.h
@@ -2530,10 +2530,11 @@ struct _Ecore_X_Event_Xkb
    int base_group; /** @since 1.21 */
    int latched_group; /** @since 1.21 */
    int locked_group; /** @since 1.21 */
-   unsigned int	mods; /** @since 1.21 */
+   unsigned int mods; /** @since 1.21 */
    unsigned int base_mods; /** @since 1.21 */
-   unsigned int	latched_mods; /** @since 1.21 */
-   unsigned int	locked_mods; /** @since 1.21 */
+   unsigned int latched_mods; /** @since 1.21 */
+   unsigned int locked_mods; /** @since 1.21 */
+   Eina_Bool map_notify; /** @since 1.27 */
 };
 typedef struct _Ecore_X_Event_Xkb Ecore_X_Event_Xkb; /** @since 1.7 */
 typedef struct _Ecore_X_Event_Xkb Ecore_X_Xkb_State; /** @since 1.21 */
diff --git a/src/lib/ecore_x/ecore_x_events.c b/src/lib/ecore_x/ecore_x_events.c
index 3b2f47ce61..5e6a201f36 100644
--- a/src/lib/ecore_x/ecore_x_events.c
+++ b/src/lib/ecore_x/ecore_x_events.c
@@ -2479,20 +2479,15 @@ free_hash(void *data, void *ev)
 void
 _ecore_x_event_handle_xkb(XEvent *xevent)
 {
-   XkbEvent *xkbev;
-
-   xkbev = (XkbEvent *) xevent;
-
+   XkbEvent *xkbev = (XkbEvent *)xevent;
+   Ecore_X_Event_Xkb *e;
 
    if (xkbev->any.xkb_type == XkbStateNotify)
      {
-        Ecore_X_Event_Xkb *e;
-
         if (eina_hash_find(emitted_events, &xkbev->state.serial)) return;
 
         e = calloc(1, sizeof(Ecore_X_Event_Xkb));
-        if (!e)
-          return;
+        if (!e) return;
 
         e->group = xkbev->state.group;
         e->base_group = xkbev->state.base_group;
@@ -2512,6 +2507,9 @@ _ecore_x_event_handle_xkb(XEvent *xevent)
      {
         if (eina_hash_find(emitted_events, &xkbev->state.serial)) return;
 
+        e = calloc(1, sizeof(Ecore_X_Event_Xkb));
+        if (!e) return;
+
         if (xkbev->any.xkb_type == XkbMapNotify)
           {
              XkbMapNotifyEvent *xkbmapping = (XkbMapNotifyEvent *)xkbev;
@@ -2524,13 +2522,14 @@ _ecore_x_event_handle_xkb(XEvent *xevent)
              _ecore_x_modifiers_get();
              _ecore_x_window_grab_resume();
              _ecore_x_key_grab_resume();
+             e->map_notify = EINA_TRUE;
           }
         else
           {
              XkbNewKeyboardNotifyEvent *xkbnkn = (void*)xkbev;
              if (!(xkbnkn->changed & XkbNKN_KeycodesMask)) return;
           }
-        ecore_event_add(ECORE_X_EVENT_XKB_NEWKBD_NOTIFY, NULL, free_hash,
+        ecore_event_add(ECORE_X_EVENT_XKB_NEWKBD_NOTIFY, e, free_hash,
                         (void *)(intptr_t)xkbev->new_kbd.serial);
         eina_hash_add(emitted_events, &xkbev->new_kbd.serial, (void *)1);
      }

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.

Reply via email to