diff --git a/src/bin/e_comp.c b/src/bin/e_comp.c index 541fd4b18..769ad9d8d 100644 --- a/src/bin/e_comp.c +++ b/src/bin/e_comp.c @@ -960,6 +960,13 @@ _e_comp_shapes_update_job(void *d EINA_UNUSED) win = e_comp->win; else win = e_comp->cm_selection; + + if (e_comp->h <= 0 || e_comp->w <= 0) + { + e_comp->shape_update_on_resize = EINA_TRUE; + return; + } + E_FREE_LIST(e_comp->debug_rects, evas_object_del); tb = eina_tiler_new(e_comp->w, e_comp->h); eina_tiler_tile_size_set(tb, 1, 1); diff --git a/src/bin/e_comp.h b/src/bin/e_comp.h index 686ed1600..639383ae0 100644 --- a/src/bin/e_comp.h +++ b/src/bin/e_comp.h @@ -192,6 +192,7 @@ struct _E_Comp Eina_Bool updating E_BITFIELD; // running client updates Eina_Bool frozen E_BITFIELD; // frozen - when power save freeze mode is on + Eina_Bool shape_update_on_resize E_BITFIELD; //a shape update was scheduled but e_comp size was 0 in one dimension }; diff --git a/src/bin/e_comp_canvas.c b/src/bin/e_comp_canvas.c index de53573bc..d6661a4e8 100644 --- a/src/bin/e_comp_canvas.c +++ b/src/bin/e_comp_canvas.c @@ -625,6 +625,9 @@ e_comp_canvas_resize(int w, int h) e_comp->w = w; e_comp->h = h; ecore_evas_resize(e_comp->ee, w, h); + if (e_comp->shape_update_on_resize) { + e_comp_shape_queue(); + } } E_API void