From: Changyeon Lee Date: Mon, 13 Feb 2023 05:37:36 +0000 (+0900) Subject: e_util_transform: fix flickering when client attach null buffer X-Git-Tag: accepted/tizen/unified/20230215.100702^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=8b9b4842383a41219bb1f43b51e414de1a0a8cd8;p=platform%2Fupstream%2Fenlightenment.git e_util_transform: fix flickering when client attach null buffer client attach null buffer when it want to unmap size of ec is updated by size of buffer and core transform use size of ec. so ec is transformed by 0x0 size when window is unmapped and core transform is enabled. it cause flickering frame when client attach valid buffer after it is unmapped. ex) window is 1920x1080 and core transform size is 3840x2160 1. client attach null buffer and it is umapped 2. transform is updated by 0x0 size because size of ec is 0x0 3. but ec is visible because hide effect 3. client is rendered with transform 0x0 size 4. client attach 1920x1080 size buffer and transform is updated by 3840x2160 5. client is rendered with transform 3840x2160 size Change-Id: Icd74973ae3bd18fda47fcadc47d9fad37bc667a5 --- diff --git a/src/bin/e_util_transform.c b/src/bin/e_util_transform.c index 43f8cd25fd..8e1f9ae830 100644 --- a/src/bin/e_util_transform.c +++ b/src/bin/e_util_transform.c @@ -486,8 +486,19 @@ e_util_transform_rect_init(E_Util_Transform_Rect *rect, int x, int y, int w, int E_API void e_util_transform_rect_client_rect_get(E_Util_Transform_Rect *rect, E_Client *ec) { + int w, h; + if (!rect || !ec) return; - e_util_transform_rect_init(rect, ec->x, ec->y, ec->w, ec->h); + + if ((ec->w == 0) && (ec->h == 0) && (ec->frame)) + { + evas_object_geometry_get(ec->frame, NULL, NULL, &w, &h); + e_util_transform_rect_init(rect, ec->x, ec->y, w, h); + } + else + { + e_util_transform_rect_init(rect, ec->x, ec->y, ec->w, ec->h); + } } E_API E_Util_Transform_Rect_Vertex