ecore-wayland: support "lower" request for wayland surface 90/41290/2
authorMinJeong Kim <minjjj.kim@samsung.com>
Fri, 12 Jun 2015 08:15:29 +0000 (17:15 +0900)
committerGwanglim Lee <gl77.lee@samsung.com>
Wed, 24 Jun 2015 08:32:33 +0000 (01:32 -0700)
Change-Id: I3a8c13161a4a2f3a0ca59934465718cd4e02cdde
Signed-off-by: MinJeong Kim <minjjj.kim@samsung.com>
src/lib/ecore_wayland/Ecore_Wayland.h
src/lib/ecore_wayland/ecore_wl_window.c
src/lib/ecore_wayland/tizen-policy-client-protocol.h
src/lib/ecore_wayland/tizen-policy-protocol.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 dff3dfa..43951a2 100644 (file)
@@ -618,6 +618,7 @@ EAPI void ecore_wl_window_hide(Ecore_Wl_Window *win);
  * @since 1.2
  */
 EAPI void ecore_wl_window_raise(Ecore_Wl_Window *win);
+EAPI void ecore_wl_window_lower(Ecore_Wl_Window *win);
 EAPI void ecore_wl_window_activate(Ecore_Wl_Window *win);
 EAPI void ecore_wl_window_maximized_set(Ecore_Wl_Window *win, Eina_Bool maximized);
 EAPI Eina_Bool ecore_wl_window_maximized_get(Ecore_Wl_Window *win);
index 36fd15f..7c7a3a7 100644 (file)
@@ -520,6 +520,17 @@ ecore_wl_window_raise(Ecore_Wl_Window *win)
 }
 
 EAPI void 
+ecore_wl_window_lower(Ecore_Wl_Window *win)
+{
+   LOGFN(__FILE__, __LINE__, __FUNCTION__);
+
+   if (!win) return;
+   /* FIXME: This should lower the xdg surface also */
+   if (_ecore_wl_disp->wl.tz_policy)
+     tizen_policy_lower(_ecore_wl_disp->wl.tz_policy, win->surface);
+}
+
+EAPI void 
 ecore_wl_window_activate(Ecore_Wl_Window *win)
 {
    LOGFN(__FILE__, __LINE__, __FUNCTION__);
index 8a4113b..2ed23fb 100644 (file)
@@ -22,9 +22,10 @@ extern const struct wl_interface wl_surface_interface;
 
 #define TIZEN_POLICY_GET_VISIBILITY    0
 #define TIZEN_POLICY_ACTIVATE  1
-#define TIZEN_POLICY_POSITION_SET      2
-#define TIZEN_POLICY_FOCUS_SKIP_SET    3
-#define TIZEN_POLICY_FOCUS_SKIP_UNSET  4
+#define TIZEN_POLICY_LOWER     2
+#define TIZEN_POLICY_POSITION_SET      3
+#define TIZEN_POLICY_FOCUS_SKIP_SET    4
+#define TIZEN_POLICY_FOCUS_SKIP_UNSET  5
 
 static inline void
 tizen_policy_set_user_data(struct tizen_policy *tizen_policy, void *user_data)
@@ -63,6 +64,13 @@ tizen_policy_activate(struct tizen_policy *tizen_policy, struct wl_surface *surf
 }
 
 static inline void
+tizen_policy_lower(struct tizen_policy *tizen_policy, struct wl_surface *surface)
+{
+       wl_proxy_marshal((struct wl_proxy *) tizen_policy,
+                        TIZEN_POLICY_LOWER, surface);
+}
+
+static inline void
 tizen_policy_position_set(struct tizen_policy *tizen_policy, struct wl_surface *surface, int32_t x, int32_t y)
 {
        wl_proxy_marshal((struct wl_proxy *) tizen_policy,
index b85438f..70c3b47 100644 (file)
@@ -11,6 +11,7 @@ static const struct wl_interface *types[] = {
        &wl_surface_interface,
        &wl_surface_interface,
        &wl_surface_interface,
+       &wl_surface_interface,
        NULL,
        NULL,
        &wl_surface_interface,
@@ -20,14 +21,15 @@ static const struct wl_interface *types[] = {
 static const struct wl_message tizen_policy_requests[] = {
        { "get_visibility", "no", types + 1 },
        { "activate", "o", types + 3 },
-       { "position_set", "oii", types + 4 },
-       { "focus_skip_set", "o", types + 7 },
-       { "focus_skip_unset", "o", types + 8 },
+       { "lower", "o", types + 4 },
+       { "position_set", "oii", types + 5 },
+       { "focus_skip_set", "o", types + 8 },
+       { "focus_skip_unset", "o", types + 9 },
 };
 
 WL_EXPORT const struct wl_interface tizen_policy_interface = {
        "tizen_policy", 1,
-       5, tizen_policy_requests,
+       6, tizen_policy_requests,
        0, NULL,
 };
 
index 845e469..c8c2c1c 100644 (file)
@@ -1092,6 +1092,18 @@ _ecore_evas_wl_common_raise(Ecore_Evas *ee)
 }
 
 void
+_ecore_evas_wl_common_lower(Ecore_Evas *ee)
+{
+   Ecore_Evas_Engine_Wl_Data *wdata;
+
+   LOGFN(__FILE__, __LINE__, __FUNCTION__);
+
+   if ((!ee) || (!ee->visible)) return;
+   wdata = ee->engine.data;
+   ecore_wl_window_lower(wdata->win);
+}
+
+void
 _ecore_evas_wl_common_activate(Ecore_Evas *ee)
 {
    Ecore_Evas_Engine_Wl_Data *wdata;
index a5f772b..a95ffac 100644 (file)
@@ -42,7 +42,7 @@ static Ecore_Evas_Engine_Func _ecore_wl_engine_func =
    _ecore_evas_wl_show,
    _ecore_evas_wl_hide,
    _ecore_evas_wl_common_raise,
-   NULL, // lower
+   _ecore_evas_wl_common_lower,
    _ecore_evas_wl_common_activate,
    _ecore_evas_wl_common_title_set,
    _ecore_evas_wl_common_name_class_set,
index 395a1e4..57cb623 100644 (file)
@@ -55,6 +55,7 @@ void _ecore_evas_wl_common_callback_mouse_out_set(Ecore_Evas *ee, void (*func)(E
 void _ecore_evas_wl_common_move(Ecore_Evas *ee, int x, int y);
 void _ecore_evas_wl_common_resize(Ecore_Evas *ee, int w, int h);
 void _ecore_evas_wl_common_raise(Ecore_Evas *ee);
+void _ecore_evas_wl_common_lower(Ecore_Evas *ee);
 void _ecore_evas_wl_common_activate(Ecore_Evas *ee);
 void _ecore_evas_wl_common_title_set(Ecore_Evas *ee, const char *title);
 void _ecore_evas_wl_common_name_class_set(Ecore_Evas *ee, const char *n, const char *c);
index d0dc191..3715b82 100644 (file)
@@ -42,7 +42,7 @@ static Ecore_Evas_Engine_Func _ecore_wl_engine_func =
    _ecore_evas_wl_show,
    _ecore_evas_wl_hide,
    _ecore_evas_wl_common_raise,
-   NULL, // lower
+   _ecore_evas_wl_common_lower,
    _ecore_evas_wl_common_activate,
    _ecore_evas_wl_common_title_set,
    _ecore_evas_wl_common_name_class_set,