ecore_evas wayland: Support atomic move resize behavior. 85/206485/4
authorHermet Park <hermetpark@gmail.com>
Mon, 20 May 2019 11:49:26 +0000 (20:49 +0900)
committerHermet Park <hermetpark@gmail.com>
Tue, 21 May 2019 05:51:28 +0000 (14:51 +0900)
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
src/modules/ecore_evas/engines/cocoa/ecore_evas_cocoa.c
src/modules/ecore_evas/engines/drm/ecore_evas_drm.c
src/modules/ecore_evas/engines/extn/ecore_evas_extn.c
src/modules/ecore_evas/engines/fb/ecore_evas_fb.c
src/modules/ecore_evas/engines/sdl/ecore_evas_sdl.c
src/modules/ecore_evas/engines/tbm/ecore_evas_tbm.c
src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_common.c
src/modules/ecore_evas/engines/win32/ecore_evas_win32.c
src/modules/ecore_evas/engines/x/ecore_evas_x.c

index 34c611e..407a3c8 100644 (file)
@@ -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
index 76f7026..ee92890 100644 (file)
@@ -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 *
index d5bb7b3..b5921b0 100644 (file)
@@ -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
index 373c876..b9ff6ea 100644 (file)
@@ -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
index 2ab3471..5778dbc 100644 (file)
@@ -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 *
index aadb87c..caef058 100644 (file)
@@ -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*
index f163a80..6966088 100644 (file)
@@ -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 *
index dbbfb2b..bcc8ad1 100755 (executable)
@@ -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 *
index 9f63f35..37c1b79 100644 (file)
@@ -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 */
index c3ac574..5097f0b 100644 (file)
@@ -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
 };
 
 /*