From 84c062fbfd6cbd42321d52ead8438bc912be5b9d Mon Sep 17 00:00:00 2001 From: Juyeon Lee Date: Fri, 23 Aug 2019 14:37:41 +0900 Subject: [PATCH] e_comp_object: fix infinite loop of client inlist due to layer change while layer_pending it causes cw-layer dismatch with ec->layer and its evas object layer Change-Id: Iee8fca8e70f83236e45c7a3373e6c1e295b47354 --- src/bin/e_comp_object.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/bin/e_comp_object.c b/src/bin/e_comp_object.c index 40e3828e0e..afb5a5e817 100644 --- a/src/bin/e_comp_object.c +++ b/src/bin/e_comp_object.c @@ -1647,6 +1647,10 @@ _e_comp_intercept_layer_set(void *data, Evas_Object *obj, int layer) { E_Client *ec; + /* if ec->layer and layer are the same but the client is not belong to the given(l) + that means, layer is changed during layer_pending. in this case, need to update layer inlist*/ + if (cw->layer != l) goto layer_set; + if (cw->visible) { e_comp_render_queue(); @@ -1680,6 +1684,8 @@ _e_comp_intercept_layer_set(void *data, Evas_Object *obj, int layer) } return; } + +layer_set: if (cw->layer == l) return; if (e_comp_canvas_client_layer_map(layer) == 9999) return; //invalid layer for clients not doing comp effects -- 2.34.1