e_keyrouter: remove canceled keys in press list 54/227054/3 accepted/tizen/unified/20200310.151117 submit/tizen/20200309.085201
authorjeon <jhyuni.kang@samsung.com>
Mon, 9 Mar 2020 08:27:56 +0000 (17:27 +0900)
committerjeon <jhyuni.kang@samsung.com>
Mon, 9 Mar 2020 08:52:48 +0000 (17:52 +0900)
Change-Id: I477e6c490e57733bb4e9941314c3c78a037725a6

src/bin/e_keyrouter_events.c

index 4eede2c7645536c47025515e1860a6a859bbfc58..e17cf36358d3a764a035847074a356dc89dcc791 100644 (file)
@@ -147,7 +147,6 @@ static void
 _e_keyrouter_key_cancel(int keycode)
 {
    Ecore_Event_Key *key_cancel, *key_release;
-   Eina_List *l;
    char *keyname;
    E_Keyrouter_Key_List_NodePtr key_node_data;
    int pid = 0;
@@ -160,7 +159,7 @@ _e_keyrouter_key_cancel(int keycode)
    key_release = _e_keyrouter_key_create(keyname);
    EINA_SAFETY_ON_NULL_GOTO(key_release, failed);
 
-   EINA_LIST_FOREACH(krt->HardKeys[keycode].press_ptr, l, key_node_data)
+   EINA_LIST_FREE(krt->HardKeys[keycode].press_ptr, key_node_data)
      {
         _e_keyrouter_key_send(ECORE_EVENT_KEY_DOWN, key_cancel, key_node_data);
         _e_keyrouter_key_send(ECORE_EVENT_KEY_UP, key_release, key_node_data);
@@ -173,7 +172,10 @@ _e_keyrouter_key_cancel(int keycode)
               key_node_data->surface, key_node_data->wc, pid, pname ?: "Unknown");
         if(pname) E_FREE(pname);
         if(cmd) E_FREE(cmd);
+
+        E_FREE(key_node_data);
      }
+   krt->HardKeys[keycode].press_ptr = NULL;
 
    _e_keyrouter_key_free(key_cancel);
    _e_keyrouter_key_free(key_release);