From: Junseok Kim Date: Fri, 6 Dec 2024 07:10:40 +0000 (+0900) Subject: e_desk_area: Add missing mutex lock/unlock of accessing ec inlist X-Git-Tag: accepted/tizen/9.0/unified/20241212.022058~5 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F93%2F315993%2F1;p=platform%2Fupstream%2Fenlightenment.git e_desk_area: Add missing mutex lock/unlock of accessing ec inlist Change-Id: I75c1dd4199345534bfe70bef5825067aa5dc005f --- diff --git a/src/bin/core/e_desk_area.c b/src/bin/core/e_desk_area.c index 1facb36e7e..1a9054d70c 100644 --- a/src/bin/core/e_desk_area.c +++ b/src/bin/core/e_desk_area.c @@ -823,6 +823,7 @@ _desk_area_cb_client_get_above(struct wl_listener *listener, void *data) eda = eda_client->eda; ec = eda_client->ec; + e_comp_ec_list_lock(); if (EINA_INLIST_GET(ec)->next) //check current layer { EINA_INLIST_FOREACH(EINA_INLIST_GET(ec)->next, ec2) @@ -835,10 +836,12 @@ _desk_area_cb_client_get_above(struct wl_listener *listener, void *data) if (!e_object_is_del(E_OBJECT(ec2))) { get_above_data->above_ec = ec2; + e_comp_ec_list_unlock(); return; } } } + e_comp_ec_list_unlock(); if (ec->layer == E_LAYER_CLIENT_CURSOR) return; if (e_util_client_layer_map(ec->layer) == 9999) return; @@ -886,6 +889,7 @@ _desk_area_cb_client_get_below(struct wl_listener *listener, void *data) eda = eda_client->eda; ec = eda_client->ec; + e_comp_ec_list_lock(); if (EINA_INLIST_GET(ec)->prev) //check current layer { for (l = EINA_INLIST_GET(ec)->prev; l; l = l->prev) @@ -899,10 +903,12 @@ _desk_area_cb_client_get_below(struct wl_listener *listener, void *data) if (!e_object_is_del(E_OBJECT(ec2))) { get_below_data->below_ec = ec2; + e_comp_ec_list_unlock(); return; } } } + e_comp_ec_list_unlock(); // check layer validation ec_layer = ec->layer; @@ -967,6 +973,7 @@ _desk_area_cb_client_get_visible_above(struct wl_listener *listener, void *data) eda = eda_client->eda; ec = eda_client->ec; + e_comp_ec_list_lock(); if (EINA_INLIST_GET(ec)->next) //check current layer { EINA_INLIST_FOREACH(EINA_INLIST_GET(ec)->next, ec2) @@ -978,10 +985,12 @@ _desk_area_cb_client_get_visible_above(struct wl_listener *listener, void *data) (ec2->frame)) { get_visible_above_data->above_ec = ec2; + e_comp_ec_list_unlock(); return; } } } + e_comp_ec_list_unlock(); if (ec->layer == E_LAYER_CLIENT_CURSOR) return; if (e_util_client_layer_map(ec->layer) == 9999) return; @@ -1022,6 +1031,7 @@ _desk_area_cb_client_get_visible_below(struct wl_listener *listener, void *data) E_Layer ec_layer, ec_layer_cw; int cw_layer; + e_comp_ec_list_lock(); eda_client = wl_container_of(listener, eda_client, client_get_visible_below); eda = eda_client->eda; ec = eda_client->ec; @@ -1038,10 +1048,12 @@ _desk_area_cb_client_get_visible_below(struct wl_listener *listener, void *data) (ec2->frame)) { get_visible_below_data->below_ec = ec2; + e_comp_ec_list_unlock(); return; } } } + e_comp_ec_list_unlock(); // check layer validation ec_layer = ec->layer; @@ -1065,6 +1077,7 @@ _desk_area_cb_client_get_visible_below(struct wl_listener *listener, void *data) x = e_comp_canvas_layer_map(ec->layer); if (x > 0) x--; + e_comp_ec_list_lock(); for (; x >= e_comp_canvas_layer_map(E_LAYER_CLIENT_DESKTOP); x--) { if (!eda->layers[x].clients) continue; @@ -1077,10 +1090,12 @@ _desk_area_cb_client_get_visible_below(struct wl_listener *listener, void *data) (ec2->frame)) { get_visible_below_data->below_ec = ec2; + e_comp_ec_list_unlock(); return; } } } + e_comp_ec_list_unlock(); } static void