ecore-evas-wayland: Add event handler render_flush_post to handle wm_rotation. accepted/tizen/common/20160421.161722 accepted/tizen/ivi/20160422.065756 accepted/tizen/mobile/20160422.065829 accepted/tizen/tv/20160422.065743 accepted/tizen/wearable/20160422.065722 submit/tizen/20160421.061308
authorSeunghun Lee <shiin.lee@samsung.com>
Tue, 19 Apr 2016 02:20:52 +0000 (11:20 +0900)
committerSeunghun Lee <shiin.lee@samsung.com>
Thu, 21 Apr 2016 04:53:26 +0000 (13:53 +0900)
Ack rotation done to wm after finishing make rotated frame.

Change-Id: I28bfa493379ae21cdfd9995d334ec890c928b401

src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_common.c
src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_egl.c
src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_private.h
src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_shm.c

index 7602b9e..4c203c8 100644 (file)
@@ -360,14 +360,6 @@ _ecore_evas_wl_common_cb_window_rotate(void *data EINA_UNUSED, int type EINA_UNU
 
    wdata->wm_rot.done = 1;
 
-   /* Fixme: rotation done send move to render flush */
-   if (!ee->prop.wm_rot.manual_mode.set)
-     {
-        wdata->wm_rot.request = 0;
-        wdata->wm_rot.done = 0;
-        ecore_wl_window_rotation_change_done_send(wdata->win);
-     }
-
    return ECORE_CALLBACK_PASS_ON;
 }
 
@@ -1631,6 +1623,22 @@ _ecore_evas_wl_common_render_flush_pre(void *data, Evas *evas EINA_UNUSED, void
    ecore_evas_manual_render_set(ee, 1);
 }
 
+void
+_ecore_evas_wl_common_render_flush_post(void *data, Evas *evas EINA_UNUSED, void *event EINA_UNUSED)
+{
+   Ecore_Evas *ee = data;
+   Ecore_Evas_Engine_Wl_Data *wdata;
+
+   wdata = ee->engine.data;
+   if ((wdata) && (wdata->wm_rot.done) &&
+       (!ee->prop.wm_rot.manual_mode.set))
+     {
+        wdata->wm_rot.request = 0;
+        wdata->wm_rot.done = 0;
+        ecore_wl_window_rotation_change_done_send(wdata->win);
+     }
+}
+
 void 
 _ecore_evas_wl_common_render_updates(void *data, Evas *evas EINA_UNUSED, void *event)
 {
index cf6f90d..c1e7f21 100644 (file)
@@ -248,6 +248,8 @@ ecore_evas_wayland_egl_options_new_internal(const char *disp_name, unsigned int
 
    evas_event_callback_add(ee->evas, EVAS_CALLBACK_RENDER_FLUSH_PRE,
                            _ecore_evas_wl_common_render_flush_pre, ee);
+   evas_event_callback_add(ee->evas, EVAS_CALLBACK_RENDER_FLUSH_POST,
+                           _ecore_evas_wl_common_render_flush_post, ee);
 
    /* FIXME: This needs to be set based on theme & scale */
    if (ee->prop.draw_frame)
index b14fe7e..e13f88e 100644 (file)
@@ -85,6 +85,7 @@ int  _ecore_evas_wl_common_render(Ecore_Evas *ee);
 void _ecore_evas_wl_common_screen_geometry_get(const Ecore_Evas *ee, int *x, int *y, int *w, int *h);
 void _ecore_evas_wl_common_screen_dpi_get(const Ecore_Evas *ee, int *xdpi, int *ydpi);
 void _ecore_evas_wl_common_render_flush_pre(void *data, Evas *evas EINA_UNUSED, void *event);
+void _ecore_evas_wl_common_render_flush_post(void *data, Evas *evas EINA_UNUSED, void *event);
 void _ecore_evas_wl_common_render_updates(void *data, Evas *evas, void *event);
 void _ecore_evas_wl_common_rotation_set(Ecore_Evas *ee, int rotation, int resize);
 void _ecore_evas_wl_common_borderless_set(Ecore_Evas *ee, Eina_Bool on);
index 86c9e1a..fa4646b 100644 (file)
@@ -243,6 +243,8 @@ ecore_evas_wayland_shm_new_internal(const char *disp_name, unsigned int parent,
 
    evas_event_callback_add(ee->evas, EVAS_CALLBACK_RENDER_FLUSH_PRE,
                            _ecore_evas_wl_common_render_flush_pre, ee);
+   evas_event_callback_add(ee->evas, EVAS_CALLBACK_RENDER_FLUSH_POST,
+                           _ecore_evas_wl_common_render_flush_post, ee);
 
    /* FIXME: This needs to be set based on theme & scale */
    if (ee->prop.draw_frame)