From: Doyoun Kang Date: Sun, 4 May 2025 07:09:12 +0000 (+0900) Subject: e_tizen_launch_effect: modify code to clean up view's listener X-Git-Tag: accepted/tizen/unified/20250508.083751~13 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F96%2F323696%2F1;p=platform%2Fupstream%2Fenlightenment.git e_tizen_launch_effect: modify code to clean up view's listener Change-Id: I9433d2b11db73fa3988f9b2844fa3fe72ca726ea --- diff --git a/src/bin/server/e_tizen_launch_effect.c b/src/bin/server/e_tizen_launch_effect.c index 1ab1a0f8a9..50cccced67 100644 --- a/src/bin/server/e_tizen_launch_effect.c +++ b/src/bin/server/e_tizen_launch_effect.c @@ -64,6 +64,7 @@ struct _E_Tizen_Launch_Effect_Splash Eina_Bool custom_effect_callee; /* custom effect enabled */ const char *appid; + Eina_Bool set_view_listener; struct wl_listener view_destroy_listener; struct wl_listener view_hide_listener; }; @@ -126,6 +127,21 @@ _e_tizen_launch_effect_e_clients_find_by_pid(pid_t pid) return clients; } +static void +_launch_splash_view_unset(E_Tizen_Launch_Effect_Splash *tzlaunch_splash) +{ + if (!tzlaunch_splash->view) return; + + if (tzlaunch_splash->set_view_listener) + { + e_view_event_listener_del(tzlaunch_splash->view, E_VIEW_HIDE, &tzlaunch_splash->view_hide_listener); + e_view_event_listener_del(tzlaunch_splash->view, E_VIEW_DESTROY, &tzlaunch_splash->view_destroy_listener); + tzlaunch_splash->set_view_listener = EINA_FALSE; + } + + tzlaunch_splash->view = NULL; +} + static void _launch_splash_off(E_Tizen_Launch_Effect_Splash *tzlaunch_splash) { @@ -138,7 +154,7 @@ _launch_splash_off(E_Tizen_Launch_Effect_Splash *tzlaunch_splash) ec = tzlaunch_splash->ec; view_client = e_client_view_get(ec); - tzlaunch_splash->view = NULL; + _launch_splash_view_unset(tzlaunch_splash); tzlaunch_splash->ec = NULL; tzlaunch_splash->valid = EINA_FALSE; if (tzlaunch_splash->timeout) ecore_timer_del(tzlaunch_splash->timeout); @@ -233,7 +249,7 @@ _launchscreen_splash_cb_view_destroy(struct wl_listener *listener, void *data) tzlaunch_splash->view_image = NULL; tzlaunch_splash->view_edje = NULL; - tzlaunch_splash->view = NULL; + _launch_splash_view_unset(tzlaunch_splash); } static void @@ -320,7 +336,7 @@ _launchscreen_splash_setup(E_Tizen_Launch_Effect_Splash *splash, e_view_destroy(e_view_image_view_get(splash->view_image)); splash->view_image = NULL; - splash->view = NULL; + _launch_splash_view_unset(splash); return EINA_FALSE; } @@ -360,7 +376,7 @@ _launchscreen_splash_setup(E_Tizen_Launch_Effect_Splash *splash, e_view_destroy(e_view_edje_view_get(splash->view_edje)); splash->view_edje = NULL; - splash->view = NULL; + _launch_splash_view_unset(splash); return EINA_FALSE; } @@ -432,6 +448,8 @@ _launchscreen_splash_setup(E_Tizen_Launch_Effect_Splash *splash, splash->view_hide_listener.notify = _launchscreen_splash_cb_view_hide; e_view_event_listener_add(splash->view, E_VIEW_HIDE, &splash->view_hide_listener); + + splash->set_view_listener = EINA_TRUE; } splash->valid = EINA_TRUE; @@ -476,7 +494,7 @@ _tzlaunch_splash_iface_cb_launch(struct wl_client *client EINA_UNUSED, struct wl if (tzlaunch_splash->view) { e_view_destroy(tzlaunch_splash->view); - tzlaunch_splash->view = NULL; + _launch_splash_view_unset(tzlaunch_splash); } } } @@ -641,7 +659,7 @@ _tzlaunch_splash_iface_cb_launch_v2(struct wl_client *client EINA_UNUSED, if (tzlaunch_splash->view) { e_view_destroy(tzlaunch_splash->view); - tzlaunch_splash->view = NULL; + _launch_splash_view_unset(tzlaunch_splash); } } } @@ -709,12 +727,6 @@ _tzlaunch_splash_destroy(struct wl_resource *res_tzlaunch_splash) tzlaunch_splash = wl_resource_get_user_data(res_tzlaunch_splash); EINA_SAFETY_ON_NULL_RETURN(tzlaunch_splash); - if (tzlaunch_splash->view) - { - e_view_event_listener_del(tzlaunch_splash->view, E_VIEW_HIDE, &tzlaunch_splash->view_hide_listener); - e_view_event_listener_del(tzlaunch_splash->view, E_VIEW_DESTROY, &tzlaunch_splash->view_destroy_listener); - } - _launch_splash_off(tzlaunch_splash); tzlaunch_effect = tzlaunch_splash->tzlaunch_effect;