keyrouter: fix missing lock issue 83/320683/1
authorJihoon Kim <jihoon48.kim@samsung.com>
Thu, 21 Nov 2024 02:00:20 +0000 (11:00 +0900)
committerJihoon Kim <jihoon48.kim@samsung.com>
Thu, 21 Nov 2024 02:00:20 +0000 (11:00 +0900)
Change-Id: I94b79c77847dca90f03374a1cef4ea6da218a702
Signed-off-by: Jihoon Kim <jihoon48.kim@samsung.com>
src/bin/e_keyrouter_wl.c

index 66540adb86ec088077fc65921ff4cbb46c4caaac..aa6f9f39f4545091d1eb97ccc8150fa67bb00e0a 100644 (file)
@@ -466,7 +466,9 @@ _e_keyrouter_cb_bind(struct wl_client *client, void *data, uint32_t version, uin
         return;
      }
 
+   g_rec_mutex_lock(&krt->resource_list_mutex);
    krt->resources = eina_list_append(krt->resources, resource);
+   g_rec_mutex_unlock(&krt->resource_list_mutex);
 
    wl_resource_set_implementation(resource, &_e_keyrouter_implementation, krt_instance, _e_keyrouter_cb_unbind);
 
@@ -722,9 +724,12 @@ e_keyrouter_wl_shutdown(void)
         krt->grab_surface_list = eina_list_remove(krt->grab_surface_list, client);
      }
 
+   g_rec_mutex_lock(&krt->resource_list_mutex);
    EINA_LIST_FREE(krt->resources, resource)
      wl_resource_destroy(resource);
 
+   g_rec_mutex_unlock(&krt->resource_list_mutex);
+
    if (krt->global) wl_global_destroy(krt->global);
 
 #ifdef HAVE_CYNARA