From 8b9b4842383a41219bb1f43b51e414de1a0a8cd8 Mon Sep 17 00:00:00 2001 From: Changyeon Lee Date: Mon, 13 Feb 2023 14:37:36 +0900 Subject: [PATCH] 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 --- src/bin/e_util_transform.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) 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 -- 2.34.1