From cd9ac5945d1324f1576c95f4bea794c5d6515405 Mon Sep 17 00:00:00 2001 From: "duna.oh" Date: Mon, 21 Oct 2024 11:59:36 +0900 Subject: [PATCH] e_devicemgr: destroy the user_data only when device resource becomes inert Commit 109c4835e2926886553de29cffe2b9cd1092d104 modified the behavior to invoke wl_resource_destroy() rather than destroying user_data alone. However, it'd better to rever this change since wl_resource will be destroied after its destoy func is executed. Change-Id: I9411dae6912cff0effa80eb2946627b0d7bdf3f6 --- src/bin/server/e_devicemgr_wl.c | 26 ++++++++++---------------- 1 file changed, 10 insertions(+), 16 deletions(-) diff --git a/src/bin/server/e_devicemgr_wl.c b/src/bin/server/e_devicemgr_wl.c index 00c2340a0e..69175b1320 100644 --- a/src/bin/server/e_devicemgr_wl.c +++ b/src/bin/server/e_devicemgr_wl.c @@ -86,6 +86,11 @@ _e_devicemgr_wl_device_data_destroy(E_Tizen_Devicemgr_User_Data *device_user_dat device_user_data->seat_destroy_listener.notify = NULL; } + device_user_data->seat_res = NULL; + device_user_data->mgr_res = NULL; + device_user_data->resource = NULL; + device_user_data->dev = NULL; + E_FREE(device_user_data); } @@ -94,7 +99,6 @@ _e_devicemgr_wl_device_cb_seat_destroy(struct wl_listener *l, void *data) { struct wl_resource *seat_resource = (struct wl_resource *)data; E_Tizen_Devicemgr_User_Data *device_user_data; - struct wl_resource *temp = NULL; DMDBG("Listener(%p) called: seat_resource: %p destroyed", l, seat_resource); @@ -109,13 +113,8 @@ _e_devicemgr_wl_device_cb_seat_destroy(struct wl_listener *l, void *data) wl_list_remove(&device_user_data->seat_destroy_listener.link); device_user_data->seat_destroy_listener.notify = NULL; } - if (device_user_data->resource) - { - DMDBG("Destroy device resource. (res: %u)", wl_resource_get_id(device_user_data->resource)); - temp = device_user_data->resource; - device_user_data->resource = NULL; - wl_resource_destroy(temp); - } + + _e_devicemgr_wl_device_data_destroy(device_user_data); // Make inert } static void @@ -123,7 +122,6 @@ _e_devicemgr_wl_device_cb_manager_destroy(struct wl_listener *l, void *data) { struct wl_resource *mgr_resource = (struct wl_resource *)data; E_Tizen_Devicemgr_User_Data *device_user_data; - struct wl_resource *temp = NULL; DMDBG("Listener(%p) called: mgr_resource: %p destroyed", l, mgr_resource); @@ -138,13 +136,8 @@ _e_devicemgr_wl_device_cb_manager_destroy(struct wl_listener *l, void *data) wl_list_remove(&device_user_data->manager_destroy_listener.link); device_user_data->manager_destroy_listener.notify = NULL; } - if (device_user_data->resource) - { - DMDBG("Destroy device resource. (res: %u)", wl_resource_get_id(device_user_data->resource)); - temp = device_user_data->resource; - device_user_data->resource = NULL; - wl_resource_destroy(temp); - } + + _e_devicemgr_wl_device_data_destroy(device_user_data); // Make inert } static void @@ -251,6 +244,7 @@ e_devicemgr_wl_device_del(E_Devicemgr_Input_Device *dev) { device_user_data = wl_resource_get_user_data(res); if (!device_user_data) continue; + if (device_user_data->dev != dev) continue; if (!device_user_data->mgr_res || !device_user_data->seat_res || !device_user_data->resource) continue; -- 2.34.1