From 04db77c4a90e0a3caf4a02e553fe6dc03beec7c0 Mon Sep 17 00:00:00 2001 From: Marcel Hollerbach Date: Tue, 7 Mar 2023 18:39:27 +0100 Subject: [PATCH] e_comp: reschedule when size is invalid there is no point updating when the size of the comp is 0x0 --- src/bin/e_comp.c | 7 +++++++ src/bin/e_comp.h | 1 + src/bin/e_comp_canvas.c | 3 +++ 3 files changed, 11 insertions(+) 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