From d2dd185c3f0fe619fa7b5b43056651b9a12ebdf6 Mon Sep 17 00:00:00 2001 From: Hermet Park Date: Mon, 20 May 2019 20:49:26 +0900 Subject: [PATCH] ecore_evas wayland: Support atomic move resize behavior. Current move-resize requests wayland server to handle them as the separate requests. This brings windows look flickering since it does both behavior sequencially. Remove Tizen only engine serial_get function, We can handle this in ecore_evas_move_resize() instead. and Call the tizen specific wayland function to guarantee the atmoic move resize behavior. Change-Id: I2a8cf2298b7548fefc7c00744391e36fbcd8ab92 --- src/lib/ecore_evas/ecore_evas_private.h | 2 - .../ecore_evas/engines/cocoa/ecore_evas_cocoa.c | 2 - .../ecore_evas/engines/drm/ecore_evas_drm.c | 2 - .../ecore_evas/engines/extn/ecore_evas_extn.c | 2 - src/modules/ecore_evas/engines/fb/ecore_evas_fb.c | 2 - .../ecore_evas/engines/sdl/ecore_evas_sdl.c | 2 - .../ecore_evas/engines/tbm/ecore_evas_tbm.c | 2 - .../engines/wayland/ecore_evas_wayland_common.c | 67 ++++++++++++---------- .../ecore_evas/engines/win32/ecore_evas_win32.c | 2 - src/modules/ecore_evas/engines/x/ecore_evas_x.c | 2 - 10 files changed, 36 insertions(+), 49 deletions(-) diff --git a/src/lib/ecore_evas/ecore_evas_private.h b/src/lib/ecore_evas/ecore_evas_private.h index 34c611e..407a3c8 100644 --- a/src/lib/ecore_evas/ecore_evas_private.h +++ b/src/lib/ecore_evas/ecore_evas_private.h @@ -178,8 +178,6 @@ struct _Ecore_Evas_Engine_Func //TIZEN_ONLY : Evas Engine Resource Free void (*fn_evas_engine_rsc_free) (Ecore_Evas *ee); - //TIZEN_ONLY(20180817) : Add to get current serial number - void (*fn_serial_get) (Ecore_Evas *ee); }; struct _Ecore_Evas_Interface diff --git a/src/modules/ecore_evas/engines/cocoa/ecore_evas_cocoa.c b/src/modules/ecore_evas/engines/cocoa/ecore_evas_cocoa.c index 76f7026..ee92890 100644 --- a/src/modules/ecore_evas/engines/cocoa/ecore_evas_cocoa.c +++ b/src/modules/ecore_evas/engines/cocoa/ecore_evas_cocoa.c @@ -510,8 +510,6 @@ static Ecore_Evas_Engine_Func _ecore_cocoa_engine_func = NULL, //fn_last_tick_get //TIZEN_ONLY(20171218) : Add to free evas engine rsc before free evas NULL, //fn_evas_engine_rsc_free - //TIZEN_ONLY(20180817) : Add to get current serial number - NULL, //fn_serial_get }; static Ecore_Cocoa_Window * diff --git a/src/modules/ecore_evas/engines/drm/ecore_evas_drm.c b/src/modules/ecore_evas/engines/drm/ecore_evas_drm.c index d5bb7b3..b5921b0 100644 --- a/src/modules/ecore_evas/engines/drm/ecore_evas_drm.c +++ b/src/modules/ecore_evas/engines/drm/ecore_evas_drm.c @@ -932,8 +932,6 @@ static Ecore_Evas_Engine_Func _ecore_evas_drm_engine_func = _drm_last_tick_get, //TIZEN_ONLY(20171218) : Add to free evas engine rsc before free evas NULL, //fn_evas_engine_rsc_free - //TIZEN_ONLY(20180817) : Add to get current serial number - NULL, //fn_serial_get }; #ifdef BUILD_ECORE_EVAS_GL_DRM diff --git a/src/modules/ecore_evas/engines/extn/ecore_evas_extn.c b/src/modules/ecore_evas/engines/extn/ecore_evas_extn.c index 373c876..b9ff6ea 100644 --- a/src/modules/ecore_evas/engines/extn/ecore_evas_extn.c +++ b/src/modules/ecore_evas/engines/extn/ecore_evas_extn.c @@ -932,8 +932,6 @@ static const Ecore_Evas_Engine_Func _ecore_extn_plug_engine_func = NULL, //fn_last_tick_get //TIZEN_ONLY(20171218) : Add to free evas engine rsc before free evas NULL, //fn_evas_engine_rsc_free - //TIZEN_ONLY(20180817) : Add to get current serial number - NULL, //fn_serial_get }; static Eina_Bool diff --git a/src/modules/ecore_evas/engines/fb/ecore_evas_fb.c b/src/modules/ecore_evas/engines/fb/ecore_evas_fb.c index 2ab3471..5778dbc 100644 --- a/src/modules/ecore_evas/engines/fb/ecore_evas_fb.c +++ b/src/modules/ecore_evas/engines/fb/ecore_evas_fb.c @@ -564,8 +564,6 @@ static Ecore_Evas_Engine_Func _ecore_fb_engine_func = NULL, //fn_last_tick_get //TIZEN_ONLY(20171218) : Add to free evas engine rsc before free evas NULL, //fn_evas_engine_rsc_free - //TIZEN_ONLY(20180817) : Add to get current serial number - NULL, //fn_serial_get }; EAPI Ecore_Evas * diff --git a/src/modules/ecore_evas/engines/sdl/ecore_evas_sdl.c b/src/modules/ecore_evas/engines/sdl/ecore_evas_sdl.c index aadb87c..caef058 100644 --- a/src/modules/ecore_evas/engines/sdl/ecore_evas_sdl.c +++ b/src/modules/ecore_evas/engines/sdl/ecore_evas_sdl.c @@ -457,8 +457,6 @@ static Ecore_Evas_Engine_Func _ecore_sdl_engine_func = NULL, //fn_last_tick_get //TIZEN_ONLY(20171218) : Add to free evas engine rsc before free evas NULL, //fn_evas_engine_rsc_free - //TIZEN_ONLY(20180817) : Add to get current serial number - NULL, //fn_serial_get }; static Ecore_Evas* diff --git a/src/modules/ecore_evas/engines/tbm/ecore_evas_tbm.c b/src/modules/ecore_evas/engines/tbm/ecore_evas_tbm.c index f163a80..6966088 100644 --- a/src/modules/ecore_evas/engines/tbm/ecore_evas_tbm.c +++ b/src/modules/ecore_evas/engines/tbm/ecore_evas_tbm.c @@ -965,8 +965,6 @@ static Ecore_Evas_Engine_Func _ecore_tbm_engine_func = NULL, //fn_last_tick_get //TIZEN_ONLY(20171218) : Add to free evas engine rsc before free evas NULL, //fn_evas_engine_rsc_free - //TIZEN_ONLY(20180817) : Add to get current serial number - NULL, //fn_serial_get }; static void * diff --git a/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_common.c b/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_common.c index dbbfb2b..bcc8ad1 100755 --- a/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_common.c +++ b/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_common.c @@ -52,33 +52,6 @@ _ecore_evas_wl_common_engine_rotation_get(Ecore_Evas *ee) return einfo->info.rotation; } -//TIZEN_ONLY(20180817) : Add to get current serial number -static void -_ecore_evas_wl_common_engine_serial_get(Ecore_Evas *ee, unsigned int *serial) -{ - *serial = 0; - - if (!strncmp(ee->driver, "wayland_shm", 11)) - { -#ifdef BUILD_ECORE_EVAS_WAYLAND_SHM - Evas_Engine_Info_Wayland *einfo; - einfo = (Evas_Engine_Info_Wayland *)evas_engine_info_get(ee->evas); - if (!einfo) return; - *serial = einfo->info.serial; -#endif - } - else if (!strcmp(ee->driver, "wayland_egl")) - { -#ifdef BUILD_ECORE_EVAS_WAYLAND_EGL - Evas_Engine_Info_Wayland *einfo; - einfo = (Evas_Engine_Info_Wayland *)evas_engine_info_get(ee->evas); - if (!einfo) return; - *serial = einfo->info.serial; -#endif - } -} -// end of TIZEN_ONLY(20180817) - void _ecore_evas_wl_common_engine_info_rotation_set(Ecore_Evas *ee, Evas_Engine_Info *info) { @@ -1914,12 +1887,46 @@ _ecore_evas_wl_common_move_resize(Ecore_Evas *ee, int x, int y, int w, int h) LOGFN(__FILE__, __LINE__, __FUNCTION__); if (!ee) return; -// TIZEN_ONLY + + //TIZEN_ONLY(20180817) : atomic move + resize of window + unsigned int serial = 0; + Ecore_Evas_Engine_Wl_Data *wdata = ee->engine.data; + if (!wdata) return; + + //TODO: Need ee->func.fn_geometry() ? + if ((ee->x != x) || (ee->y != y)) _ecore_evas_wl_common_move(ee, x, y); -// + + if ((ee->w != w) || (ee->h != h)) + _ecore_evas_wl_common_resize(ee, w, h); + + if (!strncmp(ee->driver, "wayland_shm", 11)) + { +#ifdef BUILD_ECORE_EVAS_WAYLAND_SHM + Evas_Engine_Info_Wayland *einfo; + einfo = (Evas_Engine_Info_Wayland *)evas_engine_info_get(ee->evas); + if (!einfo) return; + serial = einfo->info.serial; +#endif + } + else if (!strcmp(ee->driver, "wayland_egl")) + { +#ifdef BUILD_ECORE_EVAS_WAYLAND_EGL + Evas_Engine_Info_Wayland *einfo; + einfo = (Evas_Engine_Info_Wayland *)evas_engine_info_get(ee->evas); + if (!einfo) return; + serial = einfo->info.serial; +#endif + } + + ecore_wl2_window_sync_geometry_set(wdata->win, serial, x, y, w, h); + // end of TIZEN_ONLY(20180817) + +/* if ((ee->w != w) || (ee->h != h)) _ecore_evas_wl_common_resize(ee, w, h); +*/ } static void @@ -3357,8 +3364,6 @@ static Ecore_Evas_Engine_Func _ecore_wl_engine_func = NULL, //fn_last_tick_get //TIZEN_ONLY(20171218) : Add to free evas engine rsc before free evas _ecore_evas_wl_common_evas_engine_rsc_free, - //TIZEN_ONLY(20180817) : Add to get current serial number - _ecore_evas_wl_common_engine_serial_get, //fn_serial_get }; Ecore_Evas * diff --git a/src/modules/ecore_evas/engines/win32/ecore_evas_win32.c b/src/modules/ecore_evas/engines/win32/ecore_evas_win32.c index 9f63f35..37c1b79 100644 --- a/src/modules/ecore_evas/engines/win32/ecore_evas_win32.c +++ b/src/modules/ecore_evas/engines/win32/ecore_evas_win32.c @@ -1286,8 +1286,6 @@ static Ecore_Evas_Engine_Func _ecore_win32_engine_func = NULL, //fn_last_tick_get //TIZEN_ONLY(20171218) : Add to free evas engine rsc before free evas NULL, //fn_evas_engine_rsc_free - //TIZEN_ONLY(20180817) : Add to get current serial number - NULL, //fn_serial_get }; #endif /* BUILD_ECORE_EVAS_WIN32 */ diff --git a/src/modules/ecore_evas/engines/x/ecore_evas_x.c b/src/modules/ecore_evas/engines/x/ecore_evas_x.c index c3ac574..5097f0b 100644 --- a/src/modules/ecore_evas/engines/x/ecore_evas_x.c +++ b/src/modules/ecore_evas/engines/x/ecore_evas_x.c @@ -3838,8 +3838,6 @@ static Ecore_Evas_Engine_Func _ecore_x_engine_func = NULL, //fn_last_tick_get //TIZEN_ONLY(20171218) : Add to free evas engine rsc before free evas NULL, //fn_evas_engine_rsc_free - //TIZEN_ONLY(20180817) : Add to get current serial number - NULL, //fn_serial_get }; /* -- 2.7.4