From: Juyeon Lee Date: Tue, 3 Sep 2019 09:54:47 +0000 (+0900) Subject: e_comp_object: fix infinite loop of client inlist X-Git-Tag: submit/tizen_5.0/20190903.103203~2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=d876f4e5d89f7e6aa53a13f15b1fe780e5febe1e;p=platform%2Fupstream%2Fenlightenment.git 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: I3c8df4c269680ff71c90356f952be3b2095eda55 --- diff --git a/src/bin/e_comp_object.c b/src/bin/e_comp_object.c index b7f185075e..726c371e67 100644 --- a/src/bin/e_comp_object.c +++ b/src/bin/e_comp_object.c @@ -1576,6 +1576,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(); @@ -1609,6 +1613,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