ecore_wayland: fix initialize on avaialable_rotations_set 75/43075/2 accepted/tizen/mobile/20150708.015626 accepted/tizen/tv/20150708.015644 accepted/tizen/wearable/20150708.015655 submit/tizen/20150707.131424
authorMun, Gwan-gyeong <kk.moon@samsung.com>
Tue, 7 Jul 2015 12:42:53 +0000 (21:42 +0900)
committerGwanglim Lee <gl77.lee@samsung.com>
Tue, 7 Jul 2015 13:09:09 +0000 (06:09 -0700)
ecore_evas_wayland: fix state chagne on window rotation

Change-Id: I68a27f145b2973bfee12d3d86c7cac166129a30e
Signed-off-by: Mun, Gwan-gyeong <kk.moon@samsung.com>
src/lib/ecore_wayland/ecore_wl_window.c
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 1929d34..d61244c 100644 (file)
@@ -1195,7 +1195,7 @@ ecore_wl_window_rotation_preferred_rotation_set(Ecore_Wl_Window *win, int rot)
 EAPI void
 ecore_wl_window_rotation_available_rotations_set(Ecore_Wl_Window *win, const int *rots, unsigned int count)
 {
-   uint32_t angles;
+   uint32_t angles = 0;
    int i = 0;
 
    if (!win) return;
index bef610a..584594a 100644 (file)
@@ -380,7 +380,6 @@ static Eina_Bool
 _ecore_evas_wl_common_cb_window_rotate(void *data EINA_UNUSED, int type EINA_UNUSED, void *event)
 {
    Ecore_Evas *ee;
-   Ecore_Evas_Engine_Wl_Data *wdata;
    Ecore_Wl_Event_Window_Rotate *ev;
    int resize;
 
@@ -391,12 +390,23 @@ _ecore_evas_wl_common_cb_window_rotate(void *data EINA_UNUSED, int type EINA_UNU
    if (!ee) return ECORE_CALLBACK_PASS_ON;
    if (ev->win != ee->prop.window) return ECORE_CALLBACK_PASS_ON;
 
-   wdata = ee->engine.data;
-   if (!wdata) return ECORE_CALLBACK_PASS_ON;
-
-   //Fixme resize
+   //FIXME: resize
    resize = 0;
-   _ecore_evas_wl_common_rotation_set(ee, ev->angle, resize);
+
+   if (!strcmp(ee->driver, "wayland_shm"))
+     {
+#ifdef BUILD_ECORE_EVAS_WAYLAND_SHM
+        _ecore_evas_wayland_shm_window_rotate(ee, ev->angle, resize);
+#endif
+     }
+   else if (!strcmp(ee->driver, "wayland_egl"))
+     {
+#ifdef BUILD_ECORE_EVAS_WAYLAND_EGL
+        _ecore_evas_wayland_egl_window_rotate(ee, ev->angle, resize);
+#endif
+     }
+
+   return ECORE_CALLBACK_PASS_ON;
 }
 
 static void
index a909210..035afb7 100644 (file)
@@ -508,4 +508,12 @@ _ecore_evas_wayland_egl_resize_edge_set(Ecore_Evas *ee, int edge)
      einfo->info.edges = edge;
 }
 
+void
+_ecore_evas_wayland_egl_window_rotate(Ecore_Evas *ee, int rotation, int resize)
+{
+   if (!ee) return;
+   _ecore_evas_wl_rotation_set(ee, rotation, resize);
+   if (ee->func.fn_state_change) ee->func.fn_state_change(ee);
+}
+
 #endif
index 9811628..357aa3c 100644 (file)
@@ -108,11 +108,13 @@ void _ecore_evas_wayland_shm_resize_edge_set(Ecore_Evas *ee, int edge);
 void _ecore_evas_wayland_shm_transparent_do(Ecore_Evas *ee, int transparent);
 void _ecore_evas_wayland_shm_alpha_do(Ecore_Evas *ee, int transparent);
 void _ecore_evas_wayland_shm_buffer_released(void *data);
+void _ecore_evas_wayland_shm_window_rotate(Ecore_Evas *ee, int rotation, int resize);
 #endif
 
 #ifdef BUILD_ECORE_EVAS_WAYLAND_EGL
 void _ecore_evas_wayland_egl_resize(Ecore_Evas *ee, int location);
 void _ecore_evas_wayland_egl_resize_edge_set(Ecore_Evas *ee, int edge);
+void _ecore_evas_wayland_egl_window_rotate(Ecore_Evas *ee, int rotation, int resize);
 #endif
 
 #endif /* _ECORE_EVAS_WAYLAND_PRIVATE_H_ */
index fcf7b10..7290eda 100644 (file)
@@ -526,4 +526,12 @@ _ecore_evas_wayland_shm_buffer_released(void *data)
    _ecore_evas_wl_common_render(ee);
 }
 
+void
+_ecore_evas_wayland_shm_window_rotate(Ecore_Evas *ee, int rotation, int resize)
+{
+   if (!ee) return;
+   _ecore_evas_wl_rotation_set(ee, rotation, resize);
+   if (ee->func.fn_state_change) ee->func.fn_state_change(ee);
+}
+
 #endif