Apply e_view 03/316203/1
authorJunkyeong Kim <jk0430.kim@samsung.com>
Wed, 14 Aug 2024 05:14:45 +0000 (14:14 +0900)
committerTizen Window System <tizen.windowsystem@gmail.com>
Fri, 16 Aug 2024 01:08:38 +0000 (10:08 +0900)
Change-Id: I12c63838a92fb84456e962be617e07f464f8c833

73 files changed:
src/bin/compmgr/e_alpha_mask_rect.c
src/bin/compmgr/e_alpha_mask_rect_intern.h
src/bin/compmgr/e_comp_canvas.c
src/bin/core/e_client.c
src/bin/core/e_desk.c
src/bin/core/e_desk_area.c
src/bin/core/e_pixmap.c
src/bin/core/e_view.c
src/bin/core/e_view_client.c
src/bin/core/e_view_client_intern.h
src/bin/core/e_view_edje.c
src/bin/core/e_zone.c
src/bin/debug/e_info_client.c
src/bin/debug/e_info_server.c
src/bin/displaymgr/e_hwc.c
src/bin/displaymgr/e_hwc_planes.c
src/bin/displaymgr/e_hwc_window.c
src/bin/displaymgr/e_hwc_window_queue.c
src/bin/displaymgr/e_hwc_windows.c
src/bin/displaymgr/e_output.c
src/bin/displaymgr/e_plane.c
src/bin/displaymgr/video/e_video_hwc.c
src/bin/displaymgr/video/e_video_hwc_intern.h
src/bin/displaymgr/video/e_video_hwc_planes.c
src/bin/e_comp_screen.c
src/bin/server/e_blender.c
src/bin/server/e_comp_wl.c
src/bin/server/e_comp_wl_data.c
src/bin/server/e_comp_wl_data_intern.h
src/bin/server/e_comp_wl_input.c
src/bin/server/e_comp_wl_rsm.c
src/bin/server/e_comp_wl_shell.c
src/bin/server/e_comp_wl_subsurface.c
src/bin/server/e_comp_wl_video.c
src/bin/server/e_comp_wl_viewport.c
src/bin/server/e_compositor.c
src/bin/server/e_foreign_shell.c
src/bin/server/e_policy_wl.c
src/bin/server/e_video_shell.c
src/bin/utils/e_map.c
src/bin/utils/e_theme.c
src/bin/utils/e_theme_intern.h
src/bin/utils/e_util_transform.c
src/bin/windowmgr/e_dnd.c
src/bin/windowmgr/e_dnd_intern.h
src/bin/windowmgr/e_focus_policy_history.c
src/bin/windowmgr/e_focus_policy_topmost.c
src/bin/windowmgr/e_magnifier.c
src/bin/windowmgr/e_place.c
src/bin/windowmgr/e_pointer.c
src/bin/windowmgr/e_pointer_intern.h
src/bin/windowmgr/e_policy.c
src/bin/windowmgr/e_policy_conformant.c
src/bin/windowmgr/e_policy_softkey.c
src/bin/windowmgr/e_policy_stack.c
src/bin/windowmgr/e_policy_visibility.c
src/bin/windowmgr/services/e_service_cbhm.c
src/bin/windowmgr/services/e_service_kvm.c
src/bin/windowmgr/services/e_service_launcher.c
src/bin/windowmgr/services/e_service_quickpanel.c
src/bin/windowmgr/services/e_service_softkey.c
src/bin/windowmgr/services/e_service_volume.c
src/include/e_client.h
src/include/e_comp.h
src/include/e_comp_canvas.h
src/include/e_hwc_window.h
src/include/e_map.h
src/include/e_pointer.h
src/include/e_policy.h
src/include/e_service_softkey.h
src/include/e_view_client.h
src/include/e_zone.h
tests/tc-e_view.cpp

index 67c709d..1605c1b 100644 (file)
@@ -6,16 +6,23 @@
 #include "e_comp_wl_subsurface_intern.h"
 #include "e_comp_object_intern.h"
 #include "e_map_intern.h"
+#include "e_view_intern.h"
+#include "e_view_client_intern.h"
+#include "e_view_rect.h"
 
 struct _E_Alpha_Mask_Rect
 {
-   Evas_Object *eo;
+   E_View_Rect *view;
    E_Map *map;
    E_Client *ec;
    E_Comp_Wl_Hook *subsurface_create_hook;
 
    struct wl_listener destroy;
    struct wl_listener transform_change;
+   struct wl_listener show;
+   struct wl_listener hide;
+   struct wl_listener reposition;
+   struct wl_listener resize;
 };
 
 static void _e_alpha_mask_rect_destroy(E_Alpha_Mask_Rect *rect);
@@ -36,7 +43,7 @@ _e_alpha_mask_rect_map_apply(E_Alpha_Mask_Rect *rect)
 
    e_map_util_points_populate_from_object_full(rect->map, rect->ec->frame, 0);
 
-   evas_object_geometry_get(rect->eo, NULL, NULL, &w, &h);
+   e_view_rect_size_get(rect->view, &w, &h);
    e_map_point_image_uv_set(rect->map, 0, 0, 0);
    e_map_point_image_uv_set(rect->map, 1, w, 0);
    e_map_point_image_uv_set(rect->map, 2, w, h);
@@ -44,7 +51,7 @@ _e_alpha_mask_rect_map_apply(E_Alpha_Mask_Rect *rect)
 
    enable = e_client_transform_core_enable_get(rect->ec);
    if (enable)
-     map = e_comp_object_map_get(rect->ec->frame);
+     map = e_view_client_map_get(e_client_view_get(rect->ec));
 
    if ((enable) && (map))
      {
@@ -61,48 +68,48 @@ _e_alpha_mask_rect_map_apply(E_Alpha_Mask_Rect *rect)
         e_map_point_image_uv_set(new_map, 2, w, h);
         e_map_point_image_uv_set(new_map, 3, 0, h);
 
-        e_comp_object_map_set(rect->eo, new_map);
-        e_comp_object_map_enable_set(rect->eo, EINA_TRUE);
+        e_view_map_set(e_view_rect_view_get(rect->view), new_map);
+        e_view_map_enable_set(e_view_rect_view_get(rect->view), true);
         e_map_free(new_map);
      }
    else
      {
-        e_comp_object_map_set(rect->eo, rect->map);
-        e_comp_object_map_enable_set(rect->eo, EINA_TRUE);
+        e_view_map_set(e_view_rect_view_get(rect->view), rect->map);
+        e_view_map_enable_set(e_view_rect_view_get(rect->view), true);
      }
 
     if (map) e_map_free(map);
 }
 
 static void
-_e_alpha_mask_rect_cb_frame_show(void *data, Evas *evas EINA_UNUSED, Evas_Object *eo EINA_UNUSED, void *event EINA_UNUSED)
+_e_alpha_mask_rect_cb_view_client_show(struct wl_listener *listener, void *data)
 {
-   E_Alpha_Mask_Rect *rect = data;
+   E_Alpha_Mask_Rect *rect = wl_container_of(listener, rect, show);
 
-   evas_object_show(rect->eo);
+   e_view_show(e_view_rect_view_get(rect->view));
 }
 
 static void
-_e_alpha_mask_rect_cb_frame_hide(void *data, Evas *evas EINA_UNUSED, Evas_Object *eo EINA_UNUSED, void *event EINA_UNUSED)
+_e_alpha_mask_rect_cb_view_client_hide(struct wl_listener *listener, void *data)
 {
-   E_Alpha_Mask_Rect *rect = data;
+   E_Alpha_Mask_Rect *rect = wl_container_of(listener, rect, hide);
 
-   evas_object_hide(rect->eo);
+   e_view_hide(e_view_rect_view_get(rect->view));
 }
 
 static void
-_e_alpha_mask_rect_cb_frame_move(void *data, Evas *evas EINA_UNUSED, Evas_Object *eo EINA_UNUSED, void *event EINA_UNUSED)
+_e_alpha_mask_rect_cb_view_client_reposition(struct wl_listener *listener, void *data)
 {
-   E_Alpha_Mask_Rect *rect = data;
+   E_Alpha_Mask_Rect *rect = wl_container_of(listener, rect, reposition);
 
-   evas_object_move(rect->eo, rect->ec->x, rect->ec->y);
+   e_view_position_set(e_view_rect_view_get(rect->view), rect->ec->x, rect->ec->y);
    _e_alpha_mask_rect_map_apply(rect);
 }
 
 static void
-_e_alpha_mask_rect_cb_frame_resize(void *data, Evas *evas EINA_UNUSED, Evas_Object *eo EINA_UNUSED, void *event EINA_UNUSED)
+_e_alpha_mask_rect_cb_view_client_resize(struct wl_listener *listener, void *data)
 {
-   E_Alpha_Mask_Rect *rect = data;
+   E_Alpha_Mask_Rect *rect = wl_container_of(listener, rect, resize);
 
    _e_alpha_mask_rect_map_apply(rect);
 }
@@ -154,14 +161,14 @@ _e_alpha_mask_rect_destroy(E_Alpha_Mask_Rect *rect)
 
    e_comp_wl_hook_del(rect->subsurface_create_hook);
    evas_object_smart_callback_del(rect->ec->frame, "client_resize", _e_alpha_mask_rect_cb_client_resize);
-   evas_object_event_callback_del(rect->ec->frame, EVAS_CALLBACK_SHOW, _e_alpha_mask_rect_cb_frame_show);
-   evas_object_event_callback_del(rect->ec->frame, EVAS_CALLBACK_HIDE, _e_alpha_mask_rect_cb_frame_hide);
-   evas_object_event_callback_del(rect->ec->frame, EVAS_CALLBACK_MOVE, _e_alpha_mask_rect_cb_frame_move);
-   evas_object_event_callback_del(rect->ec->frame, EVAS_CALLBACK_RESIZE, _e_alpha_mask_rect_cb_frame_resize);
-   evas_object_del(rect->eo);
-   e_map_free(rect->map);
+   wl_list_remove(&rect->show.link);
+   wl_list_remove(&rect->hide.link);
+   wl_list_remove(&rect->reposition.link);
+   wl_list_remove(&rect->resize.link);
    wl_list_remove(&rect->transform_change.link);
    wl_list_remove(&rect->destroy.link);
+   e_view_destroy(e_view_rect_view_get(rect->view));
+   e_map_free(rect->map);
    free(rect);
 }
 
@@ -169,14 +176,19 @@ EINTERN E_Alpha_Mask_Rect *
 e_alpha_mask_rect_create(E_Client *ec)
 {
    E_Alpha_Mask_Rect *rect;
-   short layer;
+   E_View_Client *view_client;
+   E_View_Tree *parent;
+   E_View *view;
+   const int color[4] = {0, 0, 0, 0};
 
    rect = E_NEW(E_Alpha_Mask_Rect, 1);
    if (!rect)
      return NULL;
 
-   rect->eo = evas_object_rectangle_add(e_comp->evas);
-   if (!rect->eo)
+   view_client = e_client_view_get(ec);
+   parent = e_view_parent_get(e_view_client_view_get(view_client));
+   rect->view = e_view_rect_create(parent, 1, 1, color);
+   if (!rect->view)
      {
         free(rect);
         return NULL;
@@ -186,26 +198,19 @@ e_alpha_mask_rect_create(E_Client *ec)
    if (!rect->map)
      {
         ERR("Failed to new e_map ec:%p", ec);
-        evas_object_del(rect->eo);
+        e_view_destroy(e_view_rect_view_get(rect->view));
         free(rect);
         return NULL;
      }
 
+   view = e_view_rect_view_get(rect->view);
+
    /* This object doesn't care about mouse event. And It's also
     * to avoid events of mouse on the E_Client. */
-   evas_object_pass_events_set(rect->eo, EINA_TRUE);
-
-   layer = evas_object_layer_get(ec->frame);
-   evas_object_layer_set(rect->eo, layer);
-   evas_object_render_op_set(rect->eo, EVAS_RENDER_COPY);
-
-   /* It's more reasonable to use the transparent color instead of black because
-    * we can show the alpha value of the 24 depth topmost window.
-    */
-   evas_object_color_set(rect->eo, 0x00, 0x00, 0x00, 0x00);
-   evas_object_move(rect->eo, ec->x, ec->y);
-   evas_object_resize(rect->eo, 1, 1);
-   evas_object_name_set(rect->eo, "below_bg_rectangle");
+   e_view_pass_events_set(view, true);
+   e_view_render_op_set(view, E_VIEW_RENDER_COPY);
+   e_view_position_set(view, ec->x, ec->y);
+   e_view_name_set(view, "below_bg_rectangle");
 
    rect->ec = ec;
 
@@ -217,28 +222,35 @@ e_alpha_mask_rect_create(E_Client *ec)
 
    _e_alpha_mask_rect_map_apply(rect);
 
-   if (evas_object_visible_get(ec->frame))
-     evas_object_show(rect->eo);
+   if (e_view_visible_get(e_view_client_view_get(e_client_view_get(ec))))
+     e_view_show(e_view_rect_view_get(rect->view));
+
+   rect->show.notify = _e_alpha_mask_rect_cb_view_client_show;
+   e_view_show_listener_add(e_view_client_view_get(view_client), &rect->show);
+   rect->hide.notify = _e_alpha_mask_rect_cb_view_client_hide;
+   e_view_hide_listener_add(e_view_client_view_get(view_client), &rect->hide);
+   rect->reposition.notify = _e_alpha_mask_rect_cb_view_client_reposition;
+   e_view_reposition_listener_add(e_view_client_view_get(view_client), &rect->reposition);
+   rect->resize.notify = _e_alpha_mask_rect_cb_view_client_resize;
+   e_view_client_resize_listener_add(view_client, &rect->resize);
 
-   evas_object_event_callback_add(ec->frame, EVAS_CALLBACK_SHOW, _e_alpha_mask_rect_cb_frame_show, rect);
-   evas_object_event_callback_add(ec->frame, EVAS_CALLBACK_HIDE, _e_alpha_mask_rect_cb_frame_hide, rect);
-   evas_object_event_callback_add(ec->frame, EVAS_CALLBACK_MOVE, _e_alpha_mask_rect_cb_frame_move, rect);
-   evas_object_event_callback_add(ec->frame, EVAS_CALLBACK_RESIZE, _e_alpha_mask_rect_cb_frame_resize, rect);
+   // TODO : view
    evas_object_smart_callback_add(ec->frame, "client_resize", _e_alpha_mask_rect_cb_client_resize, rect);
 
    rect->subsurface_create_hook = e_comp_wl_hook_add(E_COMP_WL_HOOK_SUBSURFACE_CREATE, _e_alpha_mask_rect_cb_subsurface_create, rect);
 
    /* set alpha only if SW path */
-   e_comp_object_alpha_set(ec->frame, EINA_TRUE);
+   e_view_client_alpha_set(view_client, true);
 
    /* force update for changing alpha value. if the native surface has been already
     * set before, changing alpha value can't be applied to egl image.
     */
+   // TODO : view
    e_comp_object_native_surface_set(ec->frame, EINA_FALSE);
    e_pixmap_image_refresh(ec->pixmap);
-   e_comp_object_damage(ec->frame, 0, 0, ec->w, ec->h);
-   e_comp_object_dirty(ec->frame);
-   e_comp_object_render(ec->frame);
+   e_view_client_damage(view_client, 0, 0, ec->w, ec->h);
+   e_view_client_dirty(view_client);
+   e_view_client_render(view_client);
 
    e_comp_wl_subsurface_restack(ec);
    e_alpha_mask_rect_restack(rect);
@@ -275,23 +287,31 @@ e_alpha_mask_rect_try_from_ec(E_Client *ec)
 EINTERN void
 e_alpha_mask_rect_restack(E_Alpha_Mask_Rect *rect)
 {
-   E_Client *bottom = rect->ec;
+   E_View_Client *view_client;
+   E_View_Tree *parent;
+   E_Client *tmp, *bottom;
 
+   view_client = e_client_view_get(rect->ec);
+   parent = e_view_parent_get(e_view_client_view_get(view_client));
+   e_view_reparent(e_view_rect_view_get(rect->view), parent);
+
+   bottom = rect->ec;
    while (bottom)
      {
-        short layer = evas_object_layer_get(bottom->frame);
-
-        if (evas_object_layer_get(rect->eo) != layer)
-          evas_object_layer_set(rect->eo, layer);
+        tmp = eina_list_nth(bottom->comp_data->sub.below_list, 0);
+        if (!tmp)
+          break;
 
-        evas_object_stack_below(rect->eo, bottom->frame);
-        bottom = eina_list_nth(bottom->comp_data->sub.below_list, 0);
+        bottom = tmp;
      }
+
+   view_client = e_client_view_get(bottom);
+   e_view_place_below(e_view_rect_view_get(rect->view), e_view_client_view_get(view_client));
 }
 
-EINTERN Evas_Object *
-e_alpha_mask_rect_evas_object_get(E_Alpha_Mask_Rect *rect)
+EINTERN E_View *
+e_alpha_mask_rect_view_get(E_Alpha_Mask_Rect *rect)
 {
    EINA_SAFETY_ON_NULL_RETURN_VAL(rect, NULL);
-   return rect->eo;
+   return e_view_rect_view_get(rect->view);
 }
index fd9c98b..e146e98 100644 (file)
@@ -3,6 +3,7 @@
 
 #include <Evas.h>
 #include "e_client.h"
+#include "e_view.h"
 
 struct _E_Alpha_Mask_Rect;
 typedef struct _E_Alpha_Mask_Rect E_Alpha_Mask_Rect;
@@ -10,7 +11,7 @@ typedef struct _E_Alpha_Mask_Rect E_Alpha_Mask_Rect;
 E_Alpha_Mask_Rect *e_alpha_mask_rect_create(E_Client *ec);
 void e_alpha_mask_rect_destroy(E_Alpha_Mask_Rect *rect);
 E_Alpha_Mask_Rect *e_alpha_mask_rect_try_from_ec(E_Client *ec);
-Evas_Object *e_alpha_mask_rect_evas_object_get(E_Alpha_Mask_Rect *rect);
+E_View *e_alpha_mask_rect_view_get(E_Alpha_Mask_Rect *rect);
 void e_alpha_mask_rect_restack(E_Alpha_Mask_Rect *rect);
 
 #endif
index 1bd1873..6288d80 100644 (file)
@@ -9,19 +9,13 @@
 #include "e_tizen_screen_manager_intern.h"
 #include "e_display_intern.h"
 #include "e_utils_intern.h"
+#include "e_view_intern.h"
+#include "e_view_edje_intern.h"
 
 static Eina_List *handlers;
 static Eina_Bool _ev_freeze = EINA_FALSE;
 
 static void
-_e_comp_canvas_cb_del()
-{
-   E_FREE_LIST(handlers, ecore_event_handler_del);
-}
-
-///////////////////////////////////
-
-static void
 _e_comp_canvas_render_post(void *data EINA_UNUSED, Evas *e EINA_UNUSED, void *event_info EINA_UNUSED)
 {
    E_Client *ec;
@@ -40,38 +34,6 @@ _e_comp_canvas_render_post(void *data EINA_UNUSED, Evas *e EINA_UNUSED, void *ev
      }
 }
 
-///////////////////////////////////
-
-static void
-_e_comp_canvas_cb_mouse_in(void *d EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
-   /* Do nothing */
-   ;
-}
-
-static void
-_e_comp_canvas_cb_mouse_down(void *d EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info)
-{
-   /* Do nothing */
-   ;
-}
-
-static void
-_e_comp_canvas_cb_mouse_up(void *d EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info)
-{
-   /* Do nothing */
-   ;
-}
-
-static void
-_e_comp_canvas_cb_mouse_wheel(void *d EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info)
-{
-   /* Do nothing */
-   ;
-}
-
-////////////////////////////////////
-
 static Eina_Bool
 _e_comp_cb_zone_change()
 {
@@ -123,49 +85,43 @@ _e_comp_cb_compositor_enabled()
 EINTERN Eina_Bool
 e_comp_canvas_init(int w, int h)
 {
-   Evas_Object *o;
+   E_View_Rect *rect;
+   E_View *view;
+   E_View_Tree *layer_tree;
    Eina_List *screens;
-   unsigned int r, g, b, a;
-   Evas_Render_Op opmode;
+   E_View_Render_Op opmode = E_VIEW_RENDER_BLEND;
+   int color[4] = {0, 0, 0, 255};
    E_Zone *zone;
    E_Tizen_Screen *tizen_screen;
 
    TRACE_DS_BEGIN(COMP_CANVAS:INIT);
 
    e_comp->evas = ecore_evas_get(e_comp->ee);
+   e_comp->canvas = e_canvas_create(e_comp->evas);
    e_comp->w = w;
    e_comp->h = h;
 
-   r = g = b = 0;
-   a = 255;
-   opmode = EVAS_RENDER_BLEND;
-
    if (e_config)
      {
-        r = e_config->comp_canvas_bg.r;
-        g = e_config->comp_canvas_bg.g;
-        b = e_config->comp_canvas_bg.b;
-        a = e_config->comp_canvas_bg.a;
-        opmode = e_config->comp_canvas_bg.opmode;
+        color[0] = e_config->comp_canvas_bg.r;
+        color[1] = e_config->comp_canvas_bg.g;
+        color[2] = e_config->comp_canvas_bg.b;
+        color[3] = e_config->comp_canvas_bg.a;
+
+        if (e_config->comp_canvas_bg.opmode == EVAS_RENDER_COPY)
+          opmode = E_VIEW_RENDER_COPY;
      }
 
-   o = evas_object_rectangle_add(e_comp->evas);
-   e_comp->bg_blank_object = o;
-   evas_object_layer_set(o, E_LAYER_BOTTOM);
-   evas_object_move(o, 0, 0);
-   evas_object_resize(o, e_comp->w, e_comp->h);
-   evas_object_color_set(o, r, g, b, a);
+   layer_tree = e_canvas_layer_view_tree_get(e_comp->canvas, E_CANVAS_LAYER_BOTTOM);
+   rect = e_view_rect_create(layer_tree, e_comp->w, e_comp->h, color);
+   e_comp->bg_blank_view = view = e_view_rect_view_get(rect);
+   e_view_position_set(view, 0, 0);
 
-   if (opmode != evas_object_render_op_get(o))
-     evas_object_render_op_set(o, opmode);
+   if (opmode != e_view_render_op_get(view))
+     e_view_render_op_set(view, opmode);
 
-   evas_object_name_set(o, "comp->bg_blank_object");
-   evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_DOWN, (Evas_Object_Event_Cb)_e_comp_canvas_cb_mouse_down, NULL);
-   evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_UP, (Evas_Object_Event_Cb)_e_comp_canvas_cb_mouse_up, NULL);
-   evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_IN, (Evas_Object_Event_Cb)_e_comp_canvas_cb_mouse_in, NULL);
-   evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_WHEEL, (Evas_Object_Event_Cb)_e_comp_canvas_cb_mouse_wheel, NULL);
-   evas_object_event_callback_add(o, EVAS_CALLBACK_DEL, _e_comp_canvas_cb_del, NULL);
-   evas_object_show(o);
+   e_view_name_set(view, "comp->bg_blank_view");
+   e_view_show(view);
 
    ecore_evas_name_class_set(e_comp->ee, "E", "Comp_EE");
    ecore_evas_show(e_comp->ee);
@@ -207,14 +163,26 @@ e_comp_canvas_init(int w, int h)
    return EINA_TRUE;
 }
 
+E_API E_Canvas *
+e_comp_canvas_get(void)
+{
+   EINA_SAFETY_ON_NULL_RETURN_VAL(e_comp, NULL);
+
+   return e_comp->canvas;
+}
+
 EINTERN void
 e_comp_canvas_clear(void)
 {
+   E_FREE_LIST(handlers, ecore_event_handler_del);
+
+   e_view_destroy(e_comp->bg_blank_view);
+   e_canvas_destroy(e_comp->canvas);
    evas_event_freeze(e_comp->evas);
    edje_freeze();
 
-   E_FREE_FUNC(e_comp->fps_fg, evas_object_del);
-   E_FREE_FUNC(e_comp->fps_bg, evas_object_del);
+   E_FREE_FUNC(e_comp->fps_fg, e_view_destroy);
+   E_FREE_FUNC(e_comp->fps_bg, e_view_destroy);
    E_FREE_FUNC(e_comp->autoclose.rect, evas_object_del);
    E_FREE_FUNC(e_comp->pointer, e_object_del);
 }
@@ -277,7 +245,9 @@ e_comp_zone_id_get(int id)
 EINTERN void
 e_comp_canvas_zone_update(E_Zone *zone)
 {
-   Evas_Object *o;
+   E_View_Tree *layer_tree;
+   E_View_Edje *view_edje;
+   E_View *view;
    const char *const over_styles[] =
    {
       "e/comp/screen/overlay/default",
@@ -292,34 +262,34 @@ e_comp_canvas_zone_update(E_Zone *zone)
 
    if (zone->over && zone->base)
      {
-        e_theme_edje_object_set(zone->base, "base/theme/comp",
-                                under_styles[conf->disable_screen_effects]);
-        e_theme_edje_object_set(zone->over, "base/theme/comp",
-                                over_styles[conf->disable_screen_effects]);
+        e_theme_edje_view_set(e_view_edje_from_view(zone->base), "base/theme/comp",
+                              under_styles[conf->disable_screen_effects]);
+        e_theme_edje_view_set(e_view_edje_from_view(zone->over), "base/theme/comp",
+                              over_styles[conf->disable_screen_effects]);
         return;
      }
-   E_FREE_FUNC(zone->base, evas_object_del);
-   E_FREE_FUNC(zone->over, evas_object_del);
-   zone->base = o = edje_object_add(e_comp->evas);
-   evas_object_repeat_events_set(o, 1);
-   evas_object_name_set(zone->base, "zone->base");
-   e_theme_edje_object_set(o, "base/theme/comp", under_styles[conf->disable_screen_effects]);
-   evas_object_move(o, zone->x, zone->y);
-   evas_object_resize(o, zone->w, zone->h);
-   evas_object_layer_set(o, E_LAYER_BG);
-   evas_object_show(o);
-
-   zone->over = o = edje_object_add(e_comp->evas);
-   //edje_object_signal_callback_add(o, "e,state,screensaver,active", "e", _e_comp_canvas_screensaver_active, NULL);
-   evas_object_layer_set(o, E_LAYER_MAX);
-   evas_object_raise(o);
-   evas_object_name_set(zone->over, "zone->over");
-   evas_object_pass_events_set(o, 1);
-   e_theme_edje_object_set(o, "base/theme/comp", over_styles[conf->disable_screen_effects]);
-   evas_object_move(o, zone->x, zone->y);
-   evas_object_resize(o, zone->w, zone->h);
-   evas_object_raise(o);
-   evas_object_show(o);
+   E_FREE_FUNC(zone->base, e_view_destroy);
+   E_FREE_FUNC(zone->over, e_view_destroy);
+   layer_tree = e_canvas_layer_view_tree_get(e_comp->canvas, E_CANVAS_LAYER_BG);
+   view_edje = e_view_edje_create(layer_tree);
+   zone->base = view = e_view_edje_view_get(view_edje);
+   e_view_repeat_events_set(view, true);
+   e_view_name_set(view, "zone->base");
+   e_theme_edje_view_set(view_edje, "base/theme/comp", under_styles[conf->disable_screen_effects]);
+   e_view_position_set(view, zone->x, zone->y);
+   e_view_edje_size_set(view_edje, zone->w, zone->h);
+   e_view_show(view);
+
+   layer_tree = e_canvas_layer_view_tree_get(e_comp->canvas, E_CANVAS_LAYER_MAX);
+   view_edje = e_view_edje_create(layer_tree);
+   zone->over = view = e_view_edje_view_get(view_edje);
+   e_view_name_set(view, "zone->over");
+   e_view_pass_events_set(view, true);
+   e_theme_edje_view_set(view_edje, "base/theme/comp", over_styles[conf->disable_screen_effects]);
+   e_view_position_set(view, zone->x, zone->y);
+   e_view_edje_size_set(view_edje, zone->w, zone->h);
+   e_view_raise_to_top(view);
+   e_view_show(view);
 }
 
 EINTERN void
index 8416edd..389edd7 100644 (file)
@@ -4,6 +4,7 @@
 #include "e_bindings_intern.h"
 #include "e_uuid_store_intern.h"
 #include "e_utils_intern.h"
+#include "e_comp_canvas_intern.h"
 #include "e_comp_wl_intern.h"
 #include "e_comp_wl_subsurface_intern.h"
 #include "e_comp_intern.h"
@@ -20,6 +21,8 @@
 #include "e_config_intern.h"
 #include "e_input_thread_client_intern.h"
 #include "e_compositor_intern.h"
+#include "e_view_intern.h"
+#include "e_view_client_intern.h"
 
 #define PRI(ec) ((E_Client_Private *)e_object_data_get(E_OBJECT(ec)))
 
@@ -118,6 +121,8 @@ struct _E_Client_Private
 
    E_Client *modal;
 
+   E_View_Client *view_client;
+
    struct
    {
       int x, y;
@@ -695,7 +700,7 @@ _e_client_transform_resize_handle(E_Client *ec)
      new_y += (new_h - org_h);
 
    /* step 5: set geometry to new value */
-   evas_object_geometry_set(ec->frame, new_x, new_y, new_w, new_h);
+   e_view_client_geometry_set(PRI(ec)->view_client, new_x, new_y, new_w, new_h);
 }
 
 void
@@ -1097,6 +1102,7 @@ _e_client_free(E_Client *ec)
    eina_stringshare_replace(&ec->icccm.window_role, NULL);
    e_client_netwm_name_set(ec, NULL);
 
+   e_view_destroy(e_view_client_view_get(PRI(ec)->view_client));
    E_FREE_FUNC(ec->frame, evas_object_del);
 
    E_OBJECT(ec)->references--;
@@ -1155,7 +1161,7 @@ _e_client_del(E_Client *ec)
    if (!stopping)
      {
         e_client_comp_hidden_set(ec, 1);
-        evas_object_pass_events_set(ec->frame, 1);
+        e_view_pass_events_set(e_view_client_view_get(PRI(ec)->view_client), true);
      }
 
    E_FREE_FUNC(ec->ping_poller, ecore_poller_del);
@@ -1645,7 +1651,7 @@ e_client_resize_handle(E_Client *ec)
 
    if (e_config->interactive_resize)
      {
-        evas_object_geometry_set(ec->frame, new_x, new_y, new_w, new_h);
+        e_view_client_geometry_set(PRI(ec)->view_client, new_x, new_y, new_w, new_h);
      }
    else
      {
@@ -1820,14 +1826,14 @@ _e_client_position_inside_input_rect(E_Client *ec, int tx, int ty)
 }
 
 static Eina_Bool
-_e_client_under_pointer_helper_ignore_client(E_Desk *desk, E_Client *client)
+_e_client_under_pointer_helper_ignore_client(E_Desk *desk, E_Client *ec)
 {
    /* If a border was specified which should be excluded from the list
     * (because it will be closed shortly for example), skip */
-   if (e_client_util_ignored_get(client) || (!e_desk_has_ec(desk, client))) return EINA_TRUE;
-   if (!evas_object_visible_get(client->frame)) return EINA_TRUE;
-   if (e_policy_client_is_cursor(client)) return EINA_TRUE;
-   if (e_comp_wl->drag_client == client) return EINA_TRUE;
+   if (e_client_util_ignored_get(ec) || (!e_desk_has_ec(desk, ec))) return EINA_TRUE;
+   if (!e_view_client_visible_get(PRI(ec)->view_client)) return EINA_TRUE;
+   if (e_policy_client_is_cursor(ec)) return EINA_TRUE;
+   if (e_comp_wl->drag_client == ec) return EINA_TRUE;
 
    return EINA_FALSE;
 }
@@ -1973,7 +1979,7 @@ _e_client_cb_evas_move(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UN
 
    _e_client_event_simple(ec, E_EVENT_CLIENT_MOVE);
 
-   evas_object_geometry_get(ec->frame, &x, &y, NULL, NULL);
+   e_view_position_get(e_view_client_view_get(PRI(ec)->view_client), &x, &y);
    if ((e_config->transient.move) && (ec->transients))
      {
         Eina_List *list = eina_list_clone(ec->transients);
@@ -1983,9 +1989,9 @@ _e_client_cb_evas_move(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UN
           {
              if (child->vkbd.vkbd) continue;
 
-             evas_object_move(child->frame,
-                              child->x + x - ec->pre_cb.x,
-                              child->y + y - ec->pre_cb.y);
+             e_view_position_set(e_view_client_view_get(PRI(child)->view_client),
+                                 child->x + x - ec->pre_cb.x,
+                                 child->y + y - ec->pre_cb.y);
           }
      }
    if (ec->moving || (ecmove == ec))
@@ -2020,7 +2026,7 @@ _e_client_cb_evas_resize(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_
 
    _e_client_event_simple(ec, E_EVENT_CLIENT_RESIZE);
 
-   evas_object_geometry_get(ec->frame, &x, &y, &w, &h);
+   e_view_client_geometry_get(PRI(ec)->view_client, &x, &y, &w, &h);
    if ((e_config->transient.resize) && (ec->transients))
      {
         Eina_List *list = eina_list_clone(ec->transients);
@@ -2038,7 +2044,7 @@ _e_client_cb_evas_resize(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_
                   nh = (child->h * h) / ec->pre_cb.h;
                   nx += ((nw - child->w) / 2);
                   ny += ((nh - child->h) / 2);
-                  evas_object_move(child->frame, nx, ny);
+                  e_view_position_set(e_view_client_view_get(PRI(child)->view_client), nx, ny);
                }
           }
      }
@@ -2194,7 +2200,7 @@ _e_client_eval(E_Client *ec)
    if (ec->changes.size)
      {
         ec->changes.size = 0;
-        evas_object_resize(ec->frame, ec->w, ec->h);
+        e_view_client_size_set(PRI(ec)->view_client, ec->w, ec->h);
 
         prop |= E_CLIENT_PROPERTY_SIZE;
      }
@@ -2202,7 +2208,8 @@ _e_client_eval(E_Client *ec)
      {
         ec->changes.tz_position = 0;
         ec->changes.pos = 0;
-        evas_object_move(ec->frame, ec->x, ec->y);
+
+        e_view_position_set(e_view_client_view_get(PRI(ec)->view_client), ec->x, ec->y);
         prop |= E_CLIENT_PROPERTY_POS;
      }
 
@@ -2250,8 +2257,8 @@ _e_client_eval(E_Client *ec)
                }
           }
 
-        evas_object_show(ec->frame);
-        if (evas_object_visible_get(ec->frame))
+        e_view_client_show(PRI(ec)->view_client);
+        if (e_view_client_visible_get(PRI(ec)->view_client))
           {
              ec->changes.visible = 0;
              _e_client_event_show(ec);
@@ -2630,7 +2637,7 @@ _e_client_transform_core_check_change(E_Client *ec)
    if (!ec) return EINA_FALSE;
 
    if (ec->frame)
-     evas_object_geometry_get(ec->frame, 0, 0, &w, &h);
+     e_view_client_geometry_get(PRI(ec)->view_client, NULL, NULL, &w, &h);
 
    // check client position or size change
    if (ec->x != ec->transform_core.backup.client_x ||
@@ -3075,13 +3082,13 @@ e_client_idler_before(Eina_Bool *check_focus)
                       (!ec->changes.pos) &&
                       (!ec->changes.size))
                     {
-                       evas_object_show(ec->frame);
-                       ec->changes.visible = !evas_object_visible_get(ec->frame);
+                       e_view_client_show(PRI(ec)->view_client);
+                       ec->changes.visible = !e_view_client_visible_get(PRI(ec)->view_client);
                     }
                }
              else
                {
-                  evas_object_hide(ec->frame);
+                  e_view_client_hide(PRI(ec)->view_client);
                   ec->changes.visible = 0;
                }
           }
@@ -3103,8 +3110,8 @@ e_client_idler_before(Eina_Bool *check_focus)
 
         if ((ec->changes.visible) && (ec->visible) && (!ec->changed))
           {
-             evas_object_show(ec->frame);
-             ec->changes.visible = !evas_object_visible_get(ec->frame);
+             e_view_client_show(PRI(ec)->view_client);
+             ec->changes.visible = !e_view_client_visible_get(PRI(ec)->view_client);
              ec->changed = ec->changes.visible;
              e_comp_visibility_calculation_set(EINA_TRUE);
           }
@@ -3237,6 +3244,19 @@ _e_client_input_thread_clone_new(E_Client *ec)
    e_input_backend_thread_safe_call(_e_input_thread_client_new, &ec_new_data, sizeof(E_Input_Thread_Request_EClient_Data));
 }
 
+static void
+_e_client_view_init(E_Client *ec)
+{
+   E_Client_Private *priv = PRI(ec);
+   E_View_Tree *tree;
+
+   tree = e_canvas_layer_view_tree_get(e_comp->canvas, E_CANVAS_LAYER_CLIENT_NORMAL);
+   if (!tree)
+     return;
+
+   priv->view_client = e_view_client_create(ec, tree);
+}
+
 E_API E_Client *
 e_client_new(E_Pixmap *cp, int first_map, int internal)
 {
@@ -3356,6 +3376,7 @@ e_client_new(E_Pixmap *cp, int first_map, int internal)
    e_comp_object_client_add(ec);
    if (ec->frame)
      {
+        _e_client_view_init(ec);
         evas_object_event_callback_add(ec->frame, EVAS_CALLBACK_SHOW, _e_client_cb_evas_show, ec);
         evas_object_event_callback_add(ec->frame, EVAS_CALLBACK_HIDE, _e_client_cb_evas_hide, ec);
         evas_object_event_callback_add(ec->frame, EVAS_CALLBACK_MOVE, _e_client_cb_evas_move, ec);
@@ -3644,7 +3665,7 @@ e_client_res_change_geometry_restore(E_Client *ec)
           x = zx + zw - w;
         if ((y + h) > (zy + zh))
           y = zy + zh - h;
-        evas_object_geometry_set(ec->frame, x, y, w, h);
+        e_view_client_geometry_set(PRI(ec)->view_client, x, y, w, h);
      }
    memcpy(&ec->pre_res_change, &pre_res_change, sizeof(pre_res_change));
 }
@@ -3719,7 +3740,7 @@ e_client_geometry_get(E_Client *ec, int *x, int *y, int *w, int *h)
      {
         if (ec->frame)
           {
-             evas_object_geometry_get(ec->frame, &gx, &gy, &gw, &gh);
+             e_view_client_geometry_get(PRI(ec)->view_client, &gx, &gy, &gw, &gh);
              if (gw == 0 && gh == 0)
                {
                   /* In this case, there is no image buffer in e_comp_object, thus it
@@ -4514,7 +4535,7 @@ e_client_act_move_keyboard(E_Client *ec)
 
    wl_signal_emit(&PRI(ec)->events.move_update, NULL);
    if (!_e_client_hook_call(E_CLIENT_HOOK_MOVE_UPDATE, ec)) return;
-   evas_object_freeze_events_set(ec->frame, 1);
+   e_view_freeze_events_set(e_view_client_view_get(PRI(ec)->view_client), true);
 
    if (!action_handler_mouse)
      action_handler_mouse = ecore_event_handler_add(ECORE_EVENT_MOUSE_BUTTON_DOWN, _e_client_move_mouse_down, NULL);
@@ -4535,7 +4556,7 @@ e_client_act_resize_keyboard(E_Client *ec)
 
    _e_client_action_init(ec);
    _e_client_action_resize_timeout_add();
-   evas_object_freeze_events_set(ec->frame, 1);
+   e_view_freeze_events_set(e_view_client_view_get(PRI(ec)->view_client), true);
 
    if (!action_handler_mouse)
      action_handler_mouse = ecore_event_handler_add(ECORE_EVENT_MOUSE_BUTTON_DOWN, _e_client_resize_mouse_down, NULL);
@@ -5623,6 +5644,15 @@ e_client_base_output_resolution_desk_useful_geometry_get(E_Client *ec, int *x, i
    return EINA_TRUE;
 }
 
+E_API E_View_Client *
+e_client_view_get(E_Client *ec)
+{
+   E_OBJECT_CHECK_RETURN(ec, NULL);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(PRI(ec)->view_client, NULL);
+
+   return PRI(ec)->view_client;
+}
+
 /* change the base_output_resolution of the bind_ec by checking the base_output_resolution of provider_ec's appinfo */
 EINTERN Eina_Bool
 e_client_base_output_resolution_rsm_update(E_Client *bind_ec, E_Client *provider_ec)
@@ -5770,7 +5800,7 @@ E_API void
 e_client_frame_focus_set(E_Client *ec, Eina_Bool focus)
 {
    if (!ec) return;
-   evas_object_focus_set(ec->frame, focus);
+   e_view_client_focus_set(PRI(ec)->view_client, focus);
 }
 
 E_API void
@@ -5780,7 +5810,7 @@ e_client_frame_geometry_set(E_Client *ec, int x, int y, int w, int h)
 
    if (ec->internal || ec->input_only)
      {
-        evas_object_geometry_set(ec->frame, x, y, w, h);
+        e_view_client_geometry_set(PRI(ec)->view_client, x, y, w, h);
      }
    else
      {
@@ -5793,10 +5823,10 @@ e_client_frame_geometry_set(E_Client *ec, int x, int y, int w, int h)
                }
 
              e_client_pos_set(ec, x, y);
-             evas_object_resize(ec->frame, w, h);
+             e_view_client_size_set(PRI(ec)->view_client, w, h);
           }
         else
-          evas_object_geometry_set(ec->frame, x, y, w, h);
+          e_view_client_geometry_set(PRI(ec)->view_client, x, y, w, h);
      }
 }
 
@@ -5804,16 +5834,16 @@ E_API void
 e_client_util_move_without_frame(E_Client *ec, int x, int y)
 {
    if (!ec) return;
-   e_comp_object_frame_xy_adjust(ec->frame, x, y, &x, &y);
-   evas_object_move(ec->frame, x, y);
+   e_view_client_frame_xy_adjust(e_client_view_get(ec), x, y, &x, &y);
+   e_view_position_set(e_view_client_view_get(e_client_view_get(ec)), x, y);
 }
 
 E_API void
 e_client_util_resize_without_frame(E_Client *ec, int w, int h)
 {
    if (!ec) return;
-   e_comp_object_frame_wh_adjust(ec->frame, w, h, &w, &h);
-   evas_object_resize(ec->frame, w, h);
+   e_view_client_frame_wh_adjust(e_client_view_get(ec), w, h, &w, &h);
+   e_view_client_size_set(e_client_view_get(ec), w, h);
    e_client_stay_within_canvas_margin(ec);
 }
 
@@ -5966,7 +5996,11 @@ e_client_layer_set(E_Client *ec,
    if (e_util_client_layer_map(layer) == 9999)
      return EINA_FALSE; //invalid layer is not allowed
 
-   evas_object_layer_set(ec->frame, layer);
+   if (ec->layer != layer)
+     {
+        e_view_position_set(e_view_client_view_get(e_client_view_get(ec)), ec->x, ec->y);
+     }
+   e_view_client_layer_set(PRI(ec)->view_client, e_canvas_util_e_layer_map(layer));
    if (ec->layer != layer)
      {
         /* check exceptional case */
@@ -6004,7 +6038,7 @@ e_client_layer_get(E_Client *ec)
    E_OBJECT_TYPE_CHECK_RETURN(ec, E_CLIENT_TYPE, E_LAYER_BOTTOM);
    if (!ec->frame) return E_LAYER_BOTTOM;
 
-   layer = evas_object_layer_get(ec->frame);
+   layer = e_view_layer_index_get(e_view_client_view_get(PRI(ec)->view_client));
    if (ec->layer != layer)
      {
         /* client could be on temperory layer while pending or block,
@@ -6069,7 +6103,7 @@ e_client_raise(E_Client *ec)
    if (ec->parent && e_client_is_belong_to_parent(ec))
      _raise_belong_to_parent(ec);
    else
-     evas_object_raise(ec->frame);
+     e_view_raise_to_top(e_view_client_view_get(PRI(ec)->view_client));
 
    wl_signal_emit(&PRI(ec)->events.raise, NULL);
 }
@@ -6178,7 +6212,7 @@ e_client_lower(E_Client *ec)
    if (ec->parent && e_client_is_belong_to_parent(ec))
      _lower_belong_to_parent(ec);
    else
-     evas_object_lower(ec->frame);
+     e_view_lower_to_bottom(e_view_client_view_get(PRI(ec)->view_client));
 
    wl_signal_emit(&PRI(ec)->events.lower, NULL);
 }
@@ -6186,12 +6220,20 @@ e_client_lower(E_Client *ec)
 E_API void
 e_client_stack_above(E_Client *ec, E_Client *above)
 {
+   E_View *ec_view, *above_view;
+
    if (!ec) return;
    if (!ec->frame) return;
    if (!above) return;
    if (!above->frame) return;
 
-   evas_object_stack_above(ec->frame, above->frame);
+   ec_view = e_view_client_view_get(PRI(ec)->view_client);
+   above_view = e_view_client_view_get(PRI(above)->view_client);
+
+   if (e_view_parent_get(ec_view) != e_view_parent_get(above_view))
+     e_view_reparent(ec_view, e_view_parent_get(above_view));
+
+   e_view_place_above(ec_view , above_view);
 
    wl_signal_emit(&PRI(ec)->events.stack_above, NULL);
 }
@@ -6199,12 +6241,20 @@ e_client_stack_above(E_Client *ec, E_Client *above)
 E_API void
 e_client_stack_below(E_Client *ec, E_Client *below)
 {
+   E_View *ec_view, *below_view;
+
    if (!ec) return;
    if (!ec->frame) return;
    if (!below) return;
    if (!below->frame) return;
 
-   evas_object_stack_below(ec->frame, below->frame);
+   ec_view = e_view_client_view_get(PRI(ec)->view_client);
+   below_view = e_view_client_view_get(PRI(below)->view_client);
+
+   if (e_view_parent_get(ec_view) != e_view_parent_get(below_view))
+     e_view_reparent(ec_view, e_view_parent_get(below_view));
+
+   e_view_place_below(ec_view, below_view);
 
    wl_signal_emit(&PRI(ec)->events.stack_below, NULL);
 }
@@ -6232,8 +6282,8 @@ e_client_show_pending_unset(E_Client *ec)
         ec->show_pending.running = EINA_FALSE;
         if (ec->frame)
           {
-             ELOGF("E_CLIENT", "evas_object_show by unset show_pending", ec);
-             evas_object_show(ec->frame);
+             ELOGF("E_CLIENT", "e_view_client_show by unset show_pending", ec);
+             e_view_client_show(PRI(ec)->view_client);
              //e_comp_object_damage(ec->frame, 0, 0, ec->w, ec->h);
              EC_CHANGED(ec);
           }
@@ -6344,7 +6394,7 @@ e_client_map_enable_set(E_Client *ec, Eina_Bool enable)
    EINA_SAFETY_ON_NULL_RETURN_VAL(ec, EINA_FALSE);
    EINA_SAFETY_ON_NULL_RETURN_VAL(ec->frame, EINA_FALSE);
 
-   evas_object_map_enable_set(ec->frame, enable);
+   e_view_map_enable_set(e_view_client_view_get(PRI(ec)->view_client), enable);
 
    return EINA_TRUE;
 }
@@ -7211,7 +7261,7 @@ e_client_show(E_Client *ec)
               ec, ec->internal, (ec == e_comp_wl->drag_client));
         ec->visible = EINA_TRUE;
         ec->ignored = 0;
-        evas_object_show(ec->frame);
+        e_view_client_show(PRI(ec)->view_client);
         ec->comp_data->mapped = 1;
      }
 }
@@ -7254,7 +7304,7 @@ e_client_hide(E_Client *ec)
         ELOGF("E_CLIENT", "Unmap. internal:%d, sub:%p, drag:%d",
               ec, ec->internal, ec->comp_data->sub.data, (ec == e_comp_wl->drag_client));
         ec->visible = EINA_FALSE;
-        evas_object_hide(ec->frame);
+        e_view_client_hide(PRI(ec)->view_client);
         ec->comp_data->mapped = 0;
      }
 }
index 14d43f2..d43923a 100644 (file)
@@ -4,12 +4,13 @@
 #include "e_utils_intern.h"
 #include "e_comp_wl_subsurface_intern.h"
 #include "e_output_intern.h"
-#include "e_comp_object_intern.h"
 #include "e_zone_intern.h"
 #include "e_config_intern.h"
 #include "e_policy_wl_intern.h"
 #include "e_policy_intern.h"
 #include "e_display_intern.h"
+#include "e_view_intern.h"
+#include "e_view_client_intern.h"
 
 #include <libds-tizen/screen.h>
 
@@ -287,7 +288,7 @@ e_desk_client_top_visible_get(E_Desk *desk)
    E_OBJECT_TYPE_CHECK_RETURN(desk, E_DESK_TYPE, NULL);
 
    E_CLIENT_REVERSE_FOREACH(ec)
-     if (e_desk_has_ec(desk, ec) && evas_object_visible_get(ec->frame)) return ec;
+     if (e_desk_has_ec(desk, ec) && e_view_client_visible_get(e_client_view_get(ec))) return ec;
    return NULL;
 }
 
@@ -662,7 +663,7 @@ e_desks_count(void)
 static void
 _e_desk_client_data_del(E_Desk *desk, E_Client *ec)
 {
-   evas_object_data_del(ec->frame, DESK_EC_DATA_KEY);
+   e_view_data_del(e_view_client_view_get(e_client_view_get(ec)), DESK_EC_DATA_KEY);
 }
 
 static void
@@ -670,7 +671,7 @@ _e_desk_client_data_set(E_Desk *desk, E_Client *ec)
 {
   E_Desk *data;
 
-  data = evas_object_data_get(ec->frame, DESK_EC_DATA_KEY);
+  data = e_view_data_get(e_view_client_view_get(e_client_view_get(ec)), DESK_EC_DATA_KEY);
   if (data)
     {
        if (data == desk)
@@ -679,10 +680,10 @@ _e_desk_client_data_set(E_Desk *desk, E_Client *ec)
             return;
          }
 
-       evas_object_data_del(ec->frame, DESK_EC_DATA_KEY);
+       _e_desk_client_data_del(desk, ec);
     }
 
-  evas_object_data_set(ec->frame, DESK_EC_DATA_KEY, desk);
+  e_view_data_set(e_view_client_view_get(e_client_view_get(ec)), DESK_EC_DATA_KEY, desk);
 }
 
 static void
@@ -692,20 +693,20 @@ _e_desk_client_set(E_Desk *desk, E_Client *ec)
 
    if (!ec->new_client)
      {
-        if (ec->frame)
+        if (e_client_view_get(ec))
           {
-             e_comp_object_effect_unclip(ec->frame);
-             e_comp_object_effect_set(ec->frame, NULL);
+             e_view_client_effect_unclip(e_client_view_get(ec));
+             e_view_client_effect_set(e_client_view_get(ec), NULL);
           }
         if (desk->visible || ec->sticky)
           {
              if ((!ec->hidden) && (!ec->iconic))
-               evas_object_show(ec->frame);
+               e_view_client_show(e_client_view_get(ec));
           }
         else
           {
              ec->hidden = 1;
-             evas_object_hide(ec->frame);
+             e_view_client_hide(e_client_view_get(ec));
           }
      }
 
@@ -1532,13 +1533,13 @@ _e_desk_event_desk_geometry_change_free(void *data EINA_UNUSED, void *event)
 static Eina_Bool
 _e_desk_transition_setup(E_Client *ec, int dx, int dy, int state)
 {
-   e_comp_object_effect_set(ec->frame, "none");
+   e_view_client_effect_set(e_client_view_get(ec), "none");
 
    return EINA_FALSE;
 }
 
 static void
-_e_desk_show_end(void *data, Evas_Object *obj EINA_UNUSED, const char *emission EINA_UNUSED, const char *source EINA_UNUSED)
+_e_desk_show_end(void *data, E_View_Client *client, const char *emission, const char *source)
 {
    E_Client *ec = data;
    E_Zone *ec_zone;
@@ -1550,15 +1551,16 @@ _e_desk_show_end(void *data, Evas_Object *obj EINA_UNUSED, const char *emission
      ec_desk->animate_count--;
 
    e_client_comp_hidden_set(ec, 0);
-   e_comp_object_effect_unclip(ec->frame);
+   e_view_client_effect_unclip(e_client_view_get(ec));
    ec->hidden = 0;
-   if (!ec->visible) evas_object_show(ec->frame);
+   if (!ec->visible)
+     e_view_client_show(e_client_view_get(ec));
 
    if (ec_desk != e_desk_current_get(ec_zone)) return;
 }
 
 static void
-_e_desk_hide_end(void *data, Evas_Object *obj EINA_UNUSED, const char *emission EINA_UNUSED, const char *source EINA_UNUSED)
+_e_desk_hide_end(void *data, E_View_Client *client, const char *emission, const char *source)
 {
    E_Client *ec = data;
    E_Desk *ec_desk;
@@ -1567,7 +1569,7 @@ _e_desk_hide_end(void *data, Evas_Object *obj EINA_UNUSED, const char *emission
    if (ec_desk)
      ec_desk->animate_count--;
    ec->hidden = 1;
-   evas_object_hide(ec->frame);
+   e_view_client_hide(e_client_view_get(ec));
 }
 
 static void
@@ -1587,21 +1589,21 @@ _e_desk_show_begin(E_Desk *desk, int dx, int dy)
         if (ec->moving)
           {
              e_desk_client_add(desk, ec);
-             evas_object_show(ec->frame);
+             e_view_client_show(e_client_view_get(ec));
              continue;
           }
         if ((!e_desk_has_ec(desk, ec)) || (ec->sticky)) continue;
         if ((!starting) && (!ec->new_client) && _e_desk_transition_setup(ec, dx, dy, 1))
           {
-             e_comp_object_effect_stop(ec->frame, _e_desk_hide_end);
-             e_comp_object_effect_start(ec->frame, _e_desk_show_end, ec);
+             e_view_client_effect_stop(e_client_view_get(ec), _e_desk_hide_end);
+             e_view_client_effect_start(e_client_view_get(ec), _e_desk_show_end, ec);
              desk->animate_count++;
           }
         else
           ec->hidden = 0;
 
         e_client_comp_hidden_set(ec, ec->hidden);
-        evas_object_show(ec->frame);
+        e_view_client_show(e_client_view_get(ec));
      }
 }
 
@@ -1624,16 +1626,16 @@ _e_desk_hide_begin(E_Desk *desk, int dx, int dy)
         if ((!e_desk_has_ec(desk, ec)) || (ec->sticky)) continue;
         if ((!starting) && (!ec->new_client) && _e_desk_transition_setup(ec, -dx, -dy, 0))
           {
-             e_comp_object_effect_stop(ec->frame, _e_desk_show_end);
-             e_comp_object_effect_start(ec->frame, _e_desk_hide_end, ec);
+             e_view_client_effect_stop(e_client_view_get(ec), _e_desk_show_end);
+             e_view_client_effect_start(e_client_view_get(ec), _e_desk_hide_end, ec);
              desk->animate_count++;
           }
         else
           {
              ec->hidden = 1;
-             evas_object_show(ec->frame);
+             e_view_client_show(e_client_view_get(ec));
              ec->changes.visible = 0;
-             evas_object_hide(ec->frame);
+             e_view_client_hide(e_client_view_get(ec));
           }
         e_client_comp_hidden_set(ec, EINA_TRUE);
      }
@@ -1897,12 +1899,12 @@ _e_desk_client_zoom(E_Client *ec, double zoomx, double zoomy, Evas_Coord cx, Eva
 
    _e_desk_client_deskzoom_set(ec, zoomx, zoomy, cx, cy);
 
-   if (evas_object_visible_get(ec->frame))
+   if (e_view_client_visible_get(e_client_view_get(ec)))
      {
         // force update
-        e_comp_object_damage(ec->frame, 0, 0, ec->w, ec->h);
-        e_comp_object_dirty(ec->frame);
-        e_comp_object_render(ec->frame);
+        e_view_client_damage(e_client_view_get(ec), 0, 0, ec->w, ec->h);
+        e_view_client_dirty(e_client_view_get(ec));
+        e_view_client_render(e_client_view_get(ec));
      }
 }
 
@@ -2183,7 +2185,7 @@ e_desk_has_ec(E_Desk *desk, E_Client *ec)
 
    EINA_SAFETY_ON_NULL_RETURN_VAL(desk, EINA_FALSE);
 
-   data = evas_object_data_get(ec->frame, DESK_EC_DATA_KEY);
+   data = e_view_data_get(e_view_client_view_get(e_client_view_get(ec)), DESK_EC_DATA_KEY);
    if (data == desk) return EINA_TRUE;
 
    return EINA_FALSE;
index 84146e8..e80c015 100644 (file)
@@ -15,6 +15,8 @@
 #include "e_comp_intern.h"
 #include "e_comp_wl_intern.h"
 #include "e_input_thread_client_intern.h"
+#include "e_view_intern.h"
+#include "e_view_client_intern.h"
 
 #include <libds-tizen/screen.h>
 
@@ -127,27 +129,27 @@ EVAS_SMART_SUBCLASS_NEW(E_DESK_AREA_SMART_OBJ_TYPE, _e_desk_area,
 static void
 _e_desk_area_client_data_del(E_Desk_Area *eda, E_Client *ec)
 {
-   evas_object_data_del(ec->frame, DESK_AREA_EC_DATA_KEY);
+   e_view_data_del(e_view_client_view_get(e_client_view_get(ec)), DESK_AREA_EC_DATA_KEY);
 }
 
 static void
 _e_desk_area_client_data_set(E_Desk_Area *eda, E_Client *ec)
 {
-  E_Desk_Area *data;
+   E_Desk_Area *data;
 
-  data = evas_object_data_get(ec->frame, DESK_AREA_EC_DATA_KEY);
-  if (data)
-    {
-       if (data == eda)
-         {
-            ELOGF("EDA", "EC is already added to desk_area_id:%d", ec, eda->id);
-            return;
-         }
+   data = e_view_data_get(e_view_client_view_get(e_client_view_get(ec)), DESK_AREA_EC_DATA_KEY);
+   if (data)
+     {
+        if (data == eda)
+          {
+             ELOGF("EDA", "EC is already added to desk_area_id:%d", ec, eda->id);
+             return;
+          }
 
-       evas_object_data_del(ec->frame, DESK_AREA_EC_DATA_KEY);
-    }
+        _e_desk_area_client_data_del(eda, ec);
+     }
 
-  evas_object_data_set(ec->frame, DESK_AREA_EC_DATA_KEY, eda);
+   e_view_data_set(e_view_client_view_get(e_client_view_get(ec)), DESK_AREA_EC_DATA_KEY, eda);
 }
 
 static void
@@ -157,7 +159,7 @@ _e_desk_area_configure_send(E_Client *ec, Eina_Bool edges, Eina_Bool send_size)
 
    if (send_size)
      {
-        if (e_comp_object_frame_exists(ec->frame))
+        if (e_view_client_frame_exists(e_client_view_get(ec)))
           w = ec->client.w, h = ec->client.h;
         else
           w = ec->w, h = ec->h;
@@ -1135,7 +1137,7 @@ _desk_area_cb_client_fullscreen(struct wl_listener *listener, void *data)
    if (!e_client_util_ignored_get(ec))
      e_client_frame_update(ec);
 
-   e_comp_object_fullscreen(ec->frame);
+   e_view_client_fullscreen(e_client_view_get(ec));
 
    if (ec->comp_data->shell.configure_send)
      _e_desk_area_configure_send(ec, 0, 1);
@@ -1163,7 +1165,7 @@ _desk_area_cb_client_unfullscreen(struct wl_listener *listener, void *data)
    if (!e_client_util_ignored_get(ec))
      e_client_frame_update(ec);
 
-   e_comp_object_unfullscreen(ec->frame);
+   e_view_client_unfullscreen(e_client_view_get(ec));
 
    if (ec->comp_data->shell.configure_send)
      _e_desk_area_configure_send(ec, 0, 0);
@@ -1239,7 +1241,7 @@ _desk_area_cb_client_iconify(struct wl_listener *listener, void *data)
    if (ec->fullscreen)
      eda->fullscreen_clients = eina_list_remove(eda->fullscreen_clients, ec);
    e_client_comp_hidden_set(ec, 1);
-   evas_object_hide(ec->frame);
+   e_view_client_hide(e_client_view_get(ec));
 
    e_client_iconify_event_send(ec);
 
@@ -1302,7 +1304,7 @@ _desk_area_cb_client_uniconify(struct wl_listener *listener, void *data)
    if (ec->internal)
      {
         ELOGF("EDA", "UNICONIFY|internal object force show. eda:%p", ec, eda);
-        evas_object_show(ec->frame);
+        e_view_client_show(e_client_view_get(ec));
      }
 
    if (ec->pixmap)
@@ -1315,9 +1317,9 @@ _desk_area_cb_client_uniconify(struct wl_listener *listener, void *data)
           {
              if (cdata && cdata->mapped)
                {
-                  ELOGF("EDA", "UNICONIFY|object show. eda:%p frame_visible:%d",
-                        ec, eda, evas_object_visible_get(ec->frame));
-                  evas_object_show(ec->frame);
+                  ELOGF("EDA", "UNICONIFY|object show. eda:%p frame_visible:%d(%d)",
+                        ec, eda, evas_object_visible_get(ec->frame), e_view_client_visible_get(e_client_view_get(ec)));
+                  e_view_client_show(e_client_view_get(ec));
                }
              else
                {
@@ -1332,9 +1334,9 @@ _desk_area_cb_client_uniconify(struct wl_listener *listener, void *data)
                {
                   if (cdata && cdata->mapped)
                     {
-                       ELOGF("EDA", "UNICONIFY|object show. no use buffer flush. eda:%p frame_visible:%d",
-                           ec, eda, evas_object_visible_get(ec->frame));
-                       evas_object_show(ec->frame);
+                       ELOGF("EDA", "UNICONIFY|object show. no use buffer flush. eda:%p frame_visible:%d(%d)",
+                           ec, eda, evas_object_visible_get(ec->frame), e_view_client_visible_get(e_client_view_get(ec)));
+                       e_view_client_show(e_client_view_get(ec));
                     }
                }
           }
@@ -1393,7 +1395,7 @@ _desk_area_cb_client_stick(struct wl_listener *listener, void *data)
         EINA_LIST_FREE(list, child)
           {
              child->sticky = 1;
-             evas_object_show(ec->frame);
+             e_view_client_show(e_client_view_get(ec));
           }
      }
 }
@@ -1520,7 +1522,7 @@ _e_desk_area_ec_maximize(E_Desk_Area *eda, E_Client *ec, E_Maximize max)
               zh = y2 - yy1;
            }
 
-         e_comp_object_maximize(ec->frame);
+         e_view_client_maximize(e_client_view_get(ec));
 
          switch (max & E_MAXIMIZE_DIRECTION)
            {
@@ -1779,8 +1781,8 @@ _desk_area_cb_client_kill_request(struct wl_listener *listener, void *data)
           e_client_comp_hidden_set(ec, EINA_TRUE);
      }
 
-   evas_object_pass_events_set(ec->frame, EINA_TRUE);
-   if (ec->visible) evas_object_hide(ec->frame);
+   e_view_pass_events_set(e_view_client_view_get(e_client_view_get(ec)), true);
+   if (ec->visible) e_view_client_hide(e_client_view_get(ec));
    if (!ec->internal) e_object_del(E_OBJECT(ec));
 
    e_comp_wl_focus_check();
@@ -1822,25 +1824,25 @@ _desk_area_cb_client_redirect(struct wl_listener *listener, void *data)
     */
 
    w = ec->w, h = ec->h;
-   e_comp_object_frame_wh_unadjust(ec->frame, w, h, &pw, &ph);
+   e_view_client_frame_wh_unadjust(e_client_view_get(ec), w, h, &pw, &ph);
 
-   e_comp_object_frame_recalc(ec->frame);
+   e_view_client_frame_recalc(e_client_view_get(ec));
 
    if (!ec->fullscreen)
-     e_comp_object_frame_wh_adjust(ec->frame, ec->client.w, ec->client.h, &w, &h);
+     e_view_client_frame_wh_adjust(e_client_view_get(ec), ec->client.w, ec->client.h, &w, &h);
 
    if (ec->fullscreen)
      {
-        evas_object_resize(ec->frame, eda->w, eda->h);
+        e_view_client_size_set(e_client_view_get(ec), eda->w, eda->h);
      }
    else if (ec->new_client)
      {
         if ((ec->w < 1) || (ec->h < 1)) return;
-        e_comp_object_frame_wh_adjust(ec->frame, pw, ph, &w, &h);
-        evas_object_resize(ec->frame, w, h);
+        e_view_client_frame_wh_adjust(e_client_view_get(ec), pw, ph, &w, &h);
+        e_view_client_size_set(e_client_view_get(ec), w, h);
      }
    else if ((w != ec->w) || (h != ec->h))
-     evas_object_resize(ec->frame, w, h);
+     e_view_client_size_set(e_client_view_get(ec), w, h);
 }
 
 static void
@@ -1965,7 +1967,7 @@ _desk_area_cb_client_stay_within_margin(struct wl_listener *listener, void *data
         _e_client_stay_within_canvas_margin(ec, ec->x, ec->y, &new_x, &new_y);
 
         if ((ec->x != new_x) || (ec->y != new_y))
-          evas_object_move(ec->frame, new_x, new_y);
+          e_view_position_set(e_view_client_view_get(e_client_view_get(ec)), new_x, new_y);
      }
 }
 
@@ -2049,7 +2051,7 @@ _e_client_move_handle(E_Client *ec)
    if (ec->floating)
      _e_client_stay_within_canvas_margin(ec, x, y, &x, &y);
 
-   evas_object_move(ec->frame, x, y);
+   e_view_position_set(e_view_client_view_get(e_client_view_get(ec)), x, y);
 
    if (e_client_transform_core_enable_get(ec))
      {
@@ -2413,8 +2415,8 @@ _desk_area_cb_comp_object_resize(struct wl_listener *listener, void *data)
 
         w = ec->mouse.last_down[ec->moveinfo.down.button - 1].w;
         h = ec->mouse.last_down[ec->moveinfo.down.button - 1].h;
-        if (e_comp_object_frame_exists(ec->frame))
-          e_comp_object_frame_wh_unadjust(ec->frame, w, h, &w, &h);
+        if (e_view_client_frame_exists(e_client_view_get(ec)))
+          e_view_client_frame_wh_unadjust(e_client_view_get(ec), w, h, &w, &h);
 
         switch (ec->resize_mode)
           {
@@ -2477,7 +2479,7 @@ _desk_area_cb_comp_object_color_set(struct wl_listener *listener, void *data)
    eda_client = wl_container_of(listener, eda_client, comp_object_color_set);
    ec = eda_client->ec;
 
-   evas_object_color_get(ec->frame, NULL, NULL, NULL, &a);
+   e_view_client_color_get(e_client_view_get(ec), NULL, NULL, NULL, &a);
    if (ec->netwm.opacity == a) return;
 
    ec->netwm.opacity = a;
@@ -2614,7 +2616,7 @@ e_desk_area_raise(E_Desk_Area *eda)
      {
         EINA_LIST_REVERSE_FOREACH_SAFE(eda->ec_lists[i], l, ll, ec)
           {
-             evas_object_raise(ec->frame);
+             e_view_raise_to_top(e_view_client_view_get(e_client_view_get(ec)));
           }
      }
 }
@@ -2634,7 +2636,7 @@ e_desk_area_lower(E_Desk_Area *eda)
         //EINA_LIST_FOREACH(eda->ec_lists[i], l, ec)
         EINA_LIST_FOREACH_SAFE(eda->ec_lists[i], l, ll, ec)
           {
-             evas_object_lower(ec->frame);
+             e_view_lower_to_bottom(e_view_client_view_get(e_client_view_get(ec)));
           }
      }
 }
@@ -2936,7 +2938,7 @@ e_desk_area_has_ec(E_Desk_Area *eda, E_Client *ec)
 
    EINA_SAFETY_ON_NULL_RETURN_VAL(eda, EINA_FALSE);
 
-   data = evas_object_data_get(ec->frame, DESK_AREA_EC_DATA_KEY);
+   data = e_view_data_get(e_view_client_view_get(e_client_view_get(ec)), DESK_AREA_EC_DATA_KEY);
    if (data == eda) return EINA_TRUE;
 
    return EINA_FALSE;
index 68b69ff..e4283fe 100644 (file)
@@ -1,6 +1,8 @@
 #include "e_pixmap_intern.h"
 #include "e_comp_wl_buffer_intern.h"
 #include "e_comp_object_intern.h"
+#include "e_view_intern.h"
+#include "e_view_client_intern.h"
 
 #ifndef EGL_TEXTURE_RGBA
 # define EGL_TEXTURE_RGBA 0x305E
@@ -611,7 +613,7 @@ e_pixmap_image_refresh(E_Pixmap *cp)
         return EINA_FALSE;
      }
 
-   if (e_comp_object_render_update_lock_get(ec->frame))
+   if (e_view_client_render_update_lock_get(e_client_view_get(ec)))
      {
         ELOGF("PIXMAP", "Render update locked, cp:%p", NULL, cp);
         return EINA_FALSE;
@@ -676,7 +678,7 @@ e_pixmap_image_refresh(E_Pixmap *cp)
          * managed and be pending if previous buffer is not rendered yet. */
         /* set size of image object to new buffer size */
         e_pixmap_size_get(cp, &bw, &bh);
-        e_comp_object_size_update(ec->frame, bw, bh);
+        e_view_client_size_update(e_client_view_get(ec), bw, bh);
      }
    else if (buffer->type == E_COMP_WL_BUFFER_TYPE_TBM)
      {
@@ -693,7 +695,7 @@ e_pixmap_image_refresh(E_Pixmap *cp)
          * managed and be pending if previous buffer is not rendered yet. */
         /* set size of image object to new buffer size */
         e_pixmap_size_get(cp, &bw, &bh);
-        e_comp_object_size_update(ec->frame, bw, bh);
+        e_view_client_size_update(e_client_view_get(ec), bw, bh);
 
         /* buffer has no client resources */
         return EINA_TRUE;
index f78cf2f..5da2d1e 100644 (file)
@@ -272,9 +272,6 @@ e_view_place_above(E_View *view, E_View *sibling)
    if (!view->reorderable)
      return;
 
-   if (view->link.prev == &sibling->link)
-     return;
-
    wl_list_remove(&view->link);
    wl_list_insert(&sibling->link, &view->link);
 
@@ -296,9 +293,6 @@ e_view_place_below(E_View *view, E_View *sibling)
    if (!view->reorderable)
      return;
 
-   if (view->link.next == &sibling->link)
-     return;
-
    wl_list_remove(&view->link);
    wl_list_insert(sibling->link.prev, &view->link);
 
@@ -439,9 +433,6 @@ e_view_visible_get(E_View *view)
 E_API void
 e_view_position_set(E_View *view, int x, int y)
 {
-   if (view->x == x && view->y == y)
-     return;
-
    view->x = x;
    view->y = y;
 
@@ -541,6 +532,7 @@ e_view_map_get(E_View *view)
 E_API void
 e_view_map_set(E_View *view, E_Map *map)
 {
+#if 1
    if (view->map == map)
      return;
 
@@ -555,6 +547,22 @@ e_view_map_set(E_View *view, E_Map *map)
 
    if (view->eo)
      e_map_set_to_comp_object(map, view->eo);
+#else
+   E_Map *map_tmp;
+
+   if (!view) return;
+   if (!map) return;
+
+   map_tmp = e_map_dup(map);
+
+   if (view->map)
+     e_map_free(view->map);
+
+   view->map = map_tmp;
+
+   if (view->eo)
+     e_map_set_to_comp_object(map, view->eo);
+#endif
 }
 
 E_API void
index 8f75956..eb464e6 100644 (file)
@@ -574,15 +574,7 @@ e_view_client_render_update_lock_get(E_View_Client *client)
 E_API void
 e_view_client_geometry_get(E_View_Client *client, int *x, int *y, int *width, int *height)
 {
-   if (client == NULL) return;
-
-   if (width)
-     *width = client->width;
-
-   if (height)
-     *height = client->height;
-
-   e_view_position_get(&client->view, x, y);
+   evas_object_geometry_get(client->view.eo, x, y, width, height);
 }
 
 E_API void
@@ -597,15 +589,18 @@ e_view_client_geometry_set(E_View_Client *client, int x, int y, int width, int h
 E_API void
 e_view_client_size_set(E_View_Client *client, int width, int height)
 {
-   if (client->width == width && client->height == height)
-     return;
+   int w, h;
+
+   w = client->width;
+   h = client->height;
 
    client->width = width;
    client->height = height;
 
    evas_object_resize(client->view.eo, width, height);
 
-   wl_signal_emit_mutable(&client->events.resize, client);
+   if (client->width != w || client->height != h)
+     wl_signal_emit_mutable(&client->events.resize, client);
 }
 
 E_API void
@@ -987,4 +982,4 @@ e_view_client_input_rect_get(E_View_Client *client, Eina_List **list)
    if (client == NULL) return;
 
    e_comp_object_input_rect_get(client->view.eo, list);
-}
\ No newline at end of file
+}
index 8367080..c4332fd 100644 (file)
@@ -62,6 +62,9 @@ void e_view_client_clear(E_View_Client *client);
 void e_view_client_size_update(E_View_Client *client, int w, int h);
 void e_view_client_native_surface_set(E_View_Client *client, bool set);
 void e_view_client_input_rect_get(E_View_Client *client, Eina_List **list);
+void e_view_client_layer_set(E_View_Client *client, E_Canvas_Layer layer);
+void e_view_client_show(E_View_Client *client);
+void e_view_client_hide(E_View_Client *client);
 
 #ifdef  __cplusplus
 }
index f5c17fc..4ce4043 100644 (file)
@@ -50,6 +50,8 @@ _view_edje_handle_destroy(E_View *view)
    E_View_Edje_Signal *signal, *signal_tmp;
    E_View_Edje_Swallow *swallow, *swallow_tmp;
 
+   e_view_event_listener_del(view, E_VIEW_RESTACK, &edje->restack);
+
    evas_object_del(view->eo);
 
    if (!wl_list_empty(&edje->signals))
@@ -386,10 +388,239 @@ e_view_edje_geometry_set(E_View_Edje *edje, int x, int y, int w, int h)
    e_view_position_set(&edje->view, x, y);
 }
 
+static void
+_e_view_edje_util_show(void *data EINA_UNUSED, Evas_Object *obj)
+{
+   Eina_Bool ref = EINA_TRUE;
+   if (evas_object_visible_get(obj))
+     {
+        void *d;
+
+        d = evas_object_data_del(obj, "comp_hiding");
+        if (d)
+          /* currently trying to hide */
+          ref = EINA_FALSE;
+        else
+          /* already visible */
+          return;
+     }
+
+   evas_object_show(obj);
+   if (ref)
+     {
+        evas_object_ref(obj);
+        evas_object_data_set(obj, "comp_ref", (void*)1);
+     }
+   edje_object_signal_emit(obj, "e,state,visible", "e");
+   evas_object_data_set(obj, "comp_showing", (void*)1);
+   if (e_comp_util_object_is_above_nocomp(obj))
+     {
+        evas_object_data_set(obj, "comp_override", (void*)1);
+        e_comp_override_add();
+     }
+}
+
+static void
+_e_view_edje_util_hide(void *data EINA_UNUSED, Evas_Object *obj)
+{
+   if (!evas_object_visible_get(obj)) return;
+   /* already hiding */
+   if (evas_object_data_get(obj, "comp_hiding")) return;
+   if (!evas_object_data_del(obj, "comp_showing"))
+     {
+        evas_object_ref(obj);
+        evas_object_data_set(obj, "comp_ref", (void*)1);
+     }
+   edje_object_signal_emit(obj, "e,state,hidden", "e");
+   evas_object_data_set(obj, "comp_hiding", (void*)1);
+
+   if (evas_object_data_del(obj, "comp_override"))
+     e_comp_override_timed_pop();
+}
+
+static void
+_e_view_edje_util_done_defer(void *data, E_View_Edje *edje, const char *emission, const char *source)
+{
+   E_View *edje_view;
+
+   EINA_SAFETY_ON_NULL_RETURN(edje);
+
+   edje_view = e_view_edje_view_get(edje);
+   if (!e_util_strcmp(emission, "e,action,hide,done"))
+     {
+        if (!e_view_data_del(edje_view, "comp_hiding")) return;
+
+        evas_object_intercept_hide_callback_del(edje_view->eo, _e_view_edje_util_hide);
+        e_view_hide(edje_view);
+        evas_object_intercept_hide_callback_add(edje_view->eo, _e_view_edje_util_hide, data);
+     }
+   else
+     e_view_data_del(edje_view, "comp_showing");
+   if (e_view_data_del(edje_view, "comp_ref"))
+     evas_object_unref(edje_view->eo);
+}
+
+static void
+_e_view_edje_util_del(struct wl_listener *listener, void *data)
+{
+   E_View_Edje *edje;
+   E_View *edje_view;
+   Eina_List *l;
+   Eina_Bool comp_object;
+
+   edje = wl_container_of(listener, edje, destroy);
+   edje_view = e_view_edje_view_get(edje);
+
+   comp_object = !!e_view_data_get(edje_view, "comp_object");
+   if (comp_object)
+     {
+        E_View *view;
+
+        view = e_view_edje_part_swallow_get(edje, "e.swallow.content");
+        if (view)
+          {
+             e_view_edje_part_unswallow(edje, view);
+             e_view_destroy(view);
+          }
+
+        e_comp_render_queue();
+     }
+   l = e_view_data_get(edje_view, "comp_object-to_del");
+   E_FREE_LIST(l, evas_object_del);
+}
+
+static void
+_e_view_edje_util_restack(struct wl_listener *listener, void *data)
+{
+   E_View_Edje *edje;
+   E_View *edje_view;
+
+   edje = wl_container_of(listener, edje, restack);
+   edje_view = e_view_edje_view_get(edje);
+
+   if (e_comp_util_object_is_above_nocomp(edje_view->eo) &&
+       (!e_view_data_get(edje_view, "comp_override")))
+     {
+        e_view_data_set(edje_view, "comp_override", (void*)1);
+        e_comp_override_add();
+     }
+}
+
+static void
+_e_view_edje_event_free(void *d EINA_UNUSED, void *event)
+{
+   E_Event_Comp_Object *ev = event;
+   E_Client *ec;
+
+   ec = evas_object_data_get(ev->comp_object, "E_Client");
+   if (ec)
+     {
+        UNREFD(ec, 1);
+        e_object_unref(E_OBJECT(ec));
+     }
+   evas_object_unref(ev->comp_object);
+   free(ev);
+}
+
+static void
+_e_view_edje_event_add(E_View_Edje *edje)
+{
+   E_Event_Comp_Object *ev;
+   E_View *edje_view;
+   E_Client *ec;
+
+   if (stopping) return;
+   ev = E_NEW(E_Event_Comp_Object, 1);
+   EINA_SAFETY_ON_NULL_RETURN(ev);
+
+   edje_view = e_view_edje_view_get(edje);
+   evas_object_ref(edje_view->eo);
+   ec = e_view_data_get(edje_view, "E_Client");
+   if (ec)
+     {
+        REFD(ec, 1);
+        e_object_ref(E_OBJECT(ec));
+     }
+   ecore_event_add(E_EVENT_COMP_OBJECT_ADD, ev, _e_view_edje_event_free, NULL);
+}
+
+
 E_API E_View_Edje *
 e_view_edje_util_add(E_View *view)
 {
-   return NULL;
+   E_View_Edje *edje;
+   E_View *edje_view;
+   const char *name;
+   E_Comp_Config *conf = e_comp_config_get();
+   Eina_Bool skip = EINA_FALSE;
+   char buf[1024];
+   int ok = 0;
+   int x, y, w, h;
+   Eina_Bool vis;
+
+   EINA_SAFETY_ON_NULL_RETURN_VAL(view, NULL);
+
+   name = e_view_name_get(view);
+   vis = e_view_visible_get(view);
+   edje = e_view_edje_create(e_view_parent_get(view));
+   EINA_SAFETY_ON_NULL_RETURN_VAL(edje, NULL);
+
+   edje_view = e_view_edje_view_get(edje);
+   e_view_data_set(edje_view, "comp_object", (void*)1);
+   if (name)
+     skip = (!strncmp(name, "noshadow", 8));
+   if (skip)
+     e_view_data_set(edje_view, "comp_object_skip", (void*)1);
+
+   if (conf->shadow_style)
+     {
+        snprintf(buf, sizeof(buf), "e/comp/frame/%s", conf->shadow_style);
+        ok = e_theme_edje_view_set(edje, NULL, buf);
+     }
+   if (!ok)
+     e_theme_edje_view_set(edje, NULL, "e/comp/frame/default");
+   if ((view->type == E_VIEW_TYPE_EDJE) || (!e_view_edje_data_get(edje, "noshadow")))
+     e_view_edje_signal_emit(edje, "e,state,shadow,on", "e");
+   else
+     e_view_edje_signal_emit(edje, "e,state,shadow,off", "e");
+
+   if (view->type == E_VIEW_TYPE_CLIENT)
+     e_view_client_geometry_get((E_View_Client *)view, &x, &y, &w, &h);
+   else if (view->type == E_VIEW_TYPE_EDJE)
+     e_view_edje_geometry_get((E_View_Edje *)view, &x, &y, &w, &h);
+   else
+     {
+        e_view_position_get(view, &x, &y);
+        if (view->type == E_VIEW_TYPE_RECT)
+          e_view_rect_size_get((E_View_Rect *)view, &w, &h);
+        else //E_VIEW_TYPE_IMAGE
+          e_view_image_size_get((E_View_Image *)view, &w, &h);
+     }
+
+   e_view_edje_geometry_set(edje, x, y, w, h);
+   e_view_pass_events_set(edje_view, e_view_pass_events_get(view));
+
+   e_view_edje_signal_callback_add(edje, "e,action,*,done", "e", _e_view_edje_util_done_defer, NULL);
+
+   evas_object_intercept_show_callback_add(edje_view->eo, _e_view_edje_util_show, NULL);
+   evas_object_intercept_hide_callback_add(edje_view->eo, _e_view_edje_util_hide, NULL);
+
+   edje->destroy.notify = _e_view_edje_util_del;
+   e_view_event_listener_add(edje_view, E_VIEW_DESTROY, &edje->destroy);
+
+   edje->restack.notify = _e_view_edje_util_restack;
+   e_view_event_listener_add(edje_view, E_VIEW_RESTACK, &edje->restack);
+
+   e_view_edje_signal_emit(edje, "e,state,hidden", "e");
+
+   e_view_edje_part_swallow(edje, "e.swallow.content", view);
+
+   _e_view_edje_event_add(edje);
+
+   if (vis)
+     e_view_show(edje_view);
+
+   return edje;
 }
 
 E_API bool
index 7deaa25..23915e6 100644 (file)
@@ -19,6 +19,8 @@
 #include "e_comp_canvas_intern.h"
 #include "e_comp_input_intern.h"
 #include "e_input_thread_client_intern.h"
+#include "e_view_intern.h"
+#include "e_view_client_intern.h"
 
 #define ZONE_EC_DATA_KEY  "E_Zone_Client"
 
@@ -202,7 +204,7 @@ _e_zone_client_apply_auto_placement(E_Zone *zone, E_Client *ec)
    else
      new_y = zy;
 
-   e_comp_object_frame_geometry_get(ec->frame, NULL, NULL, &t, NULL);
+   e_view_client_frame_geometry_get(e_client_view_get(ec), NULL, NULL, &t, NULL);
 
    parent_ec = ec->parent;
    if (parent_ec)
@@ -332,8 +334,8 @@ _zone_cb_client_eval_post_new_client(struct wl_listener *listener, void *data)
    if (ec->re_manage)
       {
          int x = ec->x, y = ec->y;
-         if (ec->x) e_comp_object_frame_xy_adjust(ec->frame, ec->x, 0, &ec->x, NULL);
-         if (ec->y) e_comp_object_frame_xy_adjust(ec->frame, 0, ec->y, NULL, &ec->y);
+         if (ec->x) e_view_client_frame_xy_adjust(e_client_view_get(ec), ec->x, 0, &ec->x, NULL);
+         if (ec->y) e_view_client_frame_xy_adjust(e_client_view_get(ec), 0, ec->y, NULL, &ec->y);
          if ((x != ec->x) || (y != ec->y)) ec->changes.pos = 1;
          ec->placed = 1;
          ec->pre_cb.x = ec->x; ec->pre_cb.y = ec->y;
@@ -449,7 +451,7 @@ _e_zone_client_data_set(E_Zone *zone, E_Client *ec)
 {
   E_Zone *data;
 
-  data = evas_object_data_get(ec->frame, ZONE_EC_DATA_KEY);
+  data = e_view_data_get(e_view_client_view_get(e_client_view_get(ec)), ZONE_EC_DATA_KEY);
   if (data)
     {
        if (data == zone)
@@ -458,10 +460,10 @@ _e_zone_client_data_set(E_Zone *zone, E_Client *ec)
             return;
          }
 
-       evas_object_data_del(ec->frame, ZONE_EC_DATA_KEY);
+       e_view_data_del(e_view_client_view_get(e_client_view_get(ec)), ZONE_EC_DATA_KEY);
     }
 
-  evas_object_data_set(ec->frame, ZONE_EC_DATA_KEY, zone);
+  e_view_data_set(e_view_client_view_get(e_client_view_get(ec)), ZONE_EC_DATA_KEY, zone);
 }
 
 static void
@@ -626,7 +628,7 @@ e_zone_reconfigure_clients(E_Zone *zone, int dx, int dy, int dw, int dh)
         if (!e_zone_has_ec(zone, ec)) continue;
 
         if ((dx != 0) || (dy != 0))
-          evas_object_move(ec->frame, ec->x + dx, ec->y + dy);
+          e_view_position_set(e_view_client_view_get(e_client_view_get(ec)), ec->x + dx, ec->y + dy);
         // we shrank the zone - adjust windows more
         if ((dw < 0) || (dh < 0))
           {
@@ -1288,8 +1290,8 @@ _e_zone_free(E_Zone *zone)
    evas_object_del(zone->bg_event_object);
    evas_object_del(zone->bg_clip_object);
 
-   evas_object_del(zone->base);
-   evas_object_del(zone->over);
+   e_view_destroy(zone->base);
+   e_view_destroy(zone->over);
 
    /* free desks */
    for (x = 0; x < zone->desk_x_count; x++)
@@ -1715,7 +1717,7 @@ _e_zone_client_set(E_Zone *zone, E_Client *ec)
              if (y < zone->y) y = zone->y;
              if (y >= zone->y + zone->h) y = zone->y + zone->h - ec->h;
           }
-        evas_object_move(ec->frame, x, y);
+        e_view_position_set(e_view_client_view_get(e_client_view_get(ec)), x, y);
      }
 
    ec->zone = zone; // FIXME: This line must be deleted.
@@ -1784,7 +1786,7 @@ e_zone_has_ec(E_Zone *zone, E_Client *ec)
 
    EINA_SAFETY_ON_NULL_RETURN_VAL(zone, EINA_FALSE);
 
-   data = evas_object_data_get(ec->frame, ZONE_EC_DATA_KEY);
+   data = e_view_data_get(e_view_client_view_get(e_client_view_get(ec)), ZONE_EC_DATA_KEY);
    if (data == zone) return EINA_TRUE;
 
    return EINA_FALSE;
@@ -1867,7 +1869,7 @@ e_zone_visibility_calculate(E_Zone *zone)
         if (e_object_is_del(E_OBJECT(ec))) continue;
         if (e_client_util_ignored_get(ec)) continue;
         if (!e_zone_has_ec(zone, ec)) continue;
-        if (!ec->frame) continue;
+        if (!e_client_view_get(ec)) continue;
         if (ec->visibility.skip) continue;
         if (ec->is_cursor) continue;
         cdata = e_client_cdata_get(ec);
@@ -1889,8 +1891,8 @@ e_zone_visibility_calculate(E_Zone *zone)
 
         if (!e_config->calc_vis_without_effect)
           {
-             if ((e_comp_object_is_animating(ec->frame)) ||
-                 (evas_object_data_get(ec->frame, "effect_running")))
+             if ((e_view_client_is_animating(e_client_view_get(ec))) ||
+                 (e_view_data_get(e_view_client_view_get(e_client_view_get(ec)), "effect_running")))
                {
                   effect_running = EINA_TRUE;
                   if (ec->launching)
@@ -1906,7 +1908,7 @@ e_zone_visibility_calculate(E_Zone *zone)
         ec_vis = ec_opaque = skip_rot_pending_show = is_vis_on_skip = EINA_FALSE;
         skip_by_pending_show = 0;
         calc_region = EINA_TRUE;
-        ec_frame_visible = evas_object_visible_get(ec->frame);
+        ec_frame_visible = e_view_client_visible_get(e_client_view_get(ec));
         iconified_by_client = e_client_is_iconified_by_client(ec);
 
         if (!ec->visible)
index a3ba740..a6d8f72 100644 (file)
@@ -5472,6 +5472,184 @@ _e_info_client_proc_screen_info(int argc, char **argv)
 }
 
 static void
+_cb_view_info_get(const Eldbus_Message *msg)
+{
+   const char *name = NULL, *text = NULL;
+   Eldbus_Message_Iter *array;
+   char *engine;
+   Eina_Bool res;
+
+   res = eldbus_message_error_get(msg, &name, &text);
+   EINA_SAFETY_ON_TRUE_GOTO(res, finish);
+
+   res = eldbus_message_arguments_get(msg, "iiiiisiiia("VALUE_TYPE_FOR_TOPVWINS")",
+                                      &e_info_client.use_gl, &e_info_client.use_hwc, &e_info_client.use_multi_layer,
+                                      &e_info_client.hwc, &e_info_client.hwc_windows,
+                                      &engine, &e_info_client.config_engine,
+                                      &e_info_client.use_buffer_flush, &e_info_client.deiconify_approve,
+                                      &array);
+
+   EINA_SAFETY_ON_FALSE_GOTO(res, finish);
+   e_info_client.engine = eina_stringshare_add(engine);
+
+   _e_win_info_make_array(array);
+
+finish:
+   if ((name) || (text))
+     {
+        printf("errname:%s errmsg:%s\n", name, text);
+     }
+}
+
+static void
+_e_info_client_proc_view_info(int argc, char **argv)
+{
+   E_Win_Info *win;
+   Eina_List *l;
+   E_Zone_Info *zone_info;
+   Eina_List *zl;
+   int i = 0;
+   int prev_layer = -1;
+   int hwc_off = 0;
+
+   const char *prev_layer_name = NULL;
+
+   if (!_e_info_client_eldbus_message("get_zone_info", _cb_zone_info_get))
+     goto ec_info;
+
+   if (!_e_info_client_eldbus_message("view_info", _cb_view_info_get))
+     goto ec_info;
+
+   printf("GL :  %s\n", e_info_client.use_gl ? "on":"off");
+   printf("ENG:  %s (config: %d)\n", e_info_client.engine, e_info_client.config_engine);
+   if (e_info_client.use_hwc)
+     {
+        if (e_info_client.hwc)
+          {
+             printf("HWC:  ");
+             if (e_info_client.hwc_windows)
+               printf("hwc windows policy\n");
+             else
+               printf("hwc planes policy and multiple plane is %s\n", e_info_client.use_multi_layer ? "on":"off");
+          }
+        else
+          printf("HWC:  off");
+     }
+   else
+     printf("HWC:  configuration is off");
+
+   printf("Buffer flush: %s\n", e_info_client.use_buffer_flush ? "on":"off");
+   if (e_info_client.use_buffer_flush)
+     printf("Deiconify Approve: %s\n", "auto on");
+   else
+     printf("Deiconify Approve: %s\n", e_info_client.deiconify_approve ? "on":"off");
+
+   EINA_LIST_FOREACH(e_info_client.zone_list, zl, zone_info)
+     {
+        printf("\n====================================================================================================================================\n");
+        printf("Zone[%d] Info %s\n", zone_info->id, zone_info->is_current ? "(current)" : "");
+        printf("------------------------------------------------------------------------------------------------------------------------------------\n");
+
+        printf("Geometry : %d,%d,%dx%d\n", zone_info->x, zone_info->y, zone_info->w, zone_info->h);
+        if (zone_info->display_state == E_ZONE_DISPLAY_STATE_OFF)
+          printf("Display State: %s\n", "Off");
+        else if (zone_info->display_state == E_ZONE_DISPLAY_STATE_ON)
+          printf("Display State: %s\n", "On");
+        else
+          printf("Display State: %s\n", "Unknown");
+        printf("Angle: Cur(%d), Active(%d)\n", zone_info->angle_cur, zone_info->angle_active);
+        printf("------------------------------------------------------------------------------------------------------------------------------------\n");
+
+        printf("%d Top level windows in view tree\n", eina_list_count(e_info_client.win_list));
+        printf("--------------------------------------[ topvwins ]----------------------------------------------------------------------------------\n");
+        if (e_info_client.hwc_windows)
+          printf(" No   Win_ID    RcsID    PID     w     h       x      y  L Zone Foc InReg Dep Opaq Vsbt Icon Vis Map  Frame  HWC_ST  Parent   TP    Title\n");
+        else
+          printf(" No   Win_ID    RcsID    PID     w     h       x      y  L Zone Foc InReg Dep Opaq Vsbt Icon Vis Map  Frame  PL@ZPos Parent   TP    Title\n");
+        printf("------------------------------------------------------------------------------------------------------------------------------------\n");
+
+        if (!e_info_client.win_list)
+          {
+             printf("no window\n");
+             goto ec_info;
+          }
+
+        EINA_LIST_FOREACH(e_info_client.win_list, l, win)
+          {
+             if (!win) goto ec_info;
+             if (win->zone_id != zone_info->id) continue;
+
+             char tmp[20];
+             i++;
+             if (win->layer != prev_layer)
+               {
+                  if (prev_layer != -1)
+                    printf("------------------------------------------------------------------------------------------------------------------------------------[%s]\n",
+                           prev_layer_name ? prev_layer_name : " ");
+                  prev_layer = win->layer;
+                  prev_layer_name = win->layer_name;
+               }
+
+             if (win->hwc >= 0)
+               {
+                  if (win->hwc_policy == E_HWC_POLICY_WINDOWS) // hwc windows
+                    {
+                       switch(win->pl_zpos)
+                         {
+                          case E_HWC_WINDOW_STATE_NONE:   snprintf(tmp, sizeof(tmp), "  NO  "); break;
+                          case E_HWC_WINDOW_STATE_CLIENT: snprintf(tmp, sizeof(tmp), "  CL  "); break;
+                          case E_HWC_WINDOW_STATE_DEVICE: snprintf(tmp, sizeof(tmp), "  DV  "); break;
+                          case E_HWC_WINDOW_STATE_VIDEO:  snprintf(tmp, sizeof(tmp), "  VD  "); break;
+                          case E_HWC_WINDOW_STATE_CURSOR: snprintf(tmp, sizeof(tmp), "  CS  "); break;
+                          default:                        snprintf(tmp, sizeof(tmp), "  -  "); break;
+                         }
+                    }
+                  else // hwc planes
+                    {
+                       if ((!win->iconic) && (win->frame_visible))
+                         {
+                            if (win->pl_zpos == -999)
+                              snprintf(tmp, sizeof(tmp), " - ");
+                            else
+                              {
+                                 if (win->hwc) snprintf(tmp, sizeof(tmp), "hwc@%i", win->pl_zpos);
+                                 else snprintf(tmp, sizeof(tmp), "comp@%i", win->pl_zpos);
+                              }
+                         }
+                       else
+                         snprintf(tmp, sizeof(tmp), " - ");
+                    }
+               }
+             else
+               {
+                  hwc_off = 1;
+                  snprintf(tmp, sizeof(tmp), " - ");
+               }
+
+             printf("%3d 0x%08zx  %5d  %5d  %5d %5d %6d %6d  %c %2d   %c    %c   %3d  %2d   ", i, win->id, win->res_id, win->pid, win->w, win->h, win->x, win->y, win->is_apply_layout ? 'L':' ', win->zone_id, win->focused ? 'O':' ', win->has_input_region?'C':' ', win->alpha? 32:24, win->opaque);
+             printf("%2d%c   %d   %d   %s   %3d    %-8s%-8zx %c  %s\n", win->visibility, win->force_obscured ? 'f':' ', win->iconic, win->vis, win->mapped? "V":"N", win->frame_visible, tmp, win->parent_id, win->parent_id?(win->transient_policy?'B':'A'):' ',win->name?:"No Name");
+          }
+
+        if (prev_layer_name)
+          printf("------------------------------------------------------------------------------------------------------------------------------------[%s]\n\n",
+                 prev_layer_name);
+     }
+
+   if(hwc_off)
+     printf("\nHWC is disabled\n\n");
+
+   E_FREE_LIST(e_info_client.win_list, _e_win_info_free);
+   if (e_info_client.engine)
+     {
+        eina_stringshare_del(e_info_client.engine);
+        e_info_client.engine = NULL;
+     }
+
+ec_info:
+   _e_info_client_proc_ec_list_info(EINA_TRUE);
+}
+
+static void
 _e_info_client_cb_focus_policy_ext(const Eldbus_Message *msg)
 {
    const char *errname = NULL, *errtext = NULL;
@@ -6971,6 +7149,11 @@ static ProcInfo procs_to_printinfo[] =
       "Print screen and output information",
       _e_info_client_proc_screen_info
    },
+   {
+      "view", NULL,
+      "Print view info",
+      _e_info_client_proc_view_info
+   },
 };
 
 static ProcInfo procs_to_execute[] =
index 85c68b6..d4014b7 100644 (file)
@@ -21,6 +21,7 @@
 #include "e_module_intern.h"
 #include "e_magnifier_intern.h"
 #include "e_hwc_windows_intern.h"
+#include "e_hwc_window_intern.h"
 #include "e_hwc_intern.h"
 #include "e_focus_intern.h"
 #include "e_client_video_intern.h"
@@ -40,6 +41,9 @@
 #include "e_alpha_mask_rect_intern.h"
 #include "e_display_intern.h"
 #include "e_video_shell_intern.h"
+#include "e_comp_canvas.h"
+#include "e_view_intern.h"
+#include "e_view_client_intern.h"
 #include "e_blur_intern.h"
 
 #include <tbm_bufmgr.h>
@@ -88,6 +92,12 @@ typedef struct _E_Info_Transform
    int               background;
 } E_Info_Transform;
 
+typedef struct _E_Info_Canvas
+{
+   Eina_List *windows_list;
+   Eina_Bool visible;
+} E_Info_Canvas;
+
 static E_Info_Server e_info_server;
 static Eina_List    *e_info_transform_list = NULL;
 
@@ -3048,7 +3058,7 @@ _e_info_server_cb_subsurface(const Eldbus_Service_Interface *iface EINA_UNUSED,
         int x = 0, y = 0, w = 0, h = 0;
         unsigned int transform = 0, visible = 0, alpha = 0, ignore = 0, maskobj = 0, video = 0, stand = 0;
         E_Alpha_Mask_Rect *mask_rect;
-        Ecore_Window mask_rect_object = 0;
+        Ecore_Window mask_rect_view = 0;
         const char *name = NULL;
         E_Comp_Wl_Buffer *buffer;
         E_Map *map;
@@ -3099,7 +3109,7 @@ _e_info_server_cb_subsurface(const Eldbus_Service_Interface *iface EINA_UNUSED,
              ignore = e_client_util_ignored_get(ec);
              mask_rect = e_alpha_mask_rect_try_from_ec(ec);
              if (mask_rect)
-               mask_rect_object = (Ecore_Window)e_alpha_mask_rect_evas_object_get(mask_rect);
+               mask_rect_view = (Ecore_Window)e_alpha_mask_rect_view_get(mask_rect);
              maskobj = e_comp_object_mask_has(ec->frame);
              video = (ec->comp_data->video_client || e_client_video_hw_composition_check(ec)) ? 1 : 0;
              name = e_client_util_name_get(ec);
@@ -3111,7 +3121,7 @@ _e_info_server_cb_subsurface(const Eldbus_Service_Interface *iface EINA_UNUSED,
 
         eldbus_message_iter_arguments_append
            (struct_of_ec, SIGNATURE_SUBSURFACE,
-            win, parent, buf_id, x, y, w, h, transform, visible, alpha, ignore, maskobj, video, stand, mask_rect_object, name);
+            win, parent, buf_id, x, y, w, h, transform, visible, alpha, ignore, maskobj, video, stand, mask_rect_view, name);
 
         eldbus_message_iter_container_close(array_of_ec, struct_of_ec);
      }
@@ -3669,10 +3679,10 @@ _e_info_server_cb_bgcolor_set(const Eldbus_Service_Interface *iface EINA_UNUSED,
         return reply;
      }
 
-   evas_object_color_get(e_comp->bg_blank_object, &pa, &pr, &pg, &pb);
-   evas_object_color_set(e_comp->bg_blank_object, r, g, b, a);
+   e_view_color_get(e_comp->bg_blank_view, &pa, &pr, &pg, &pb);
+   e_view_color_set(e_comp->bg_blank_view, r, g, b, a);
 
-   INF("The background color of bg_blank_object has been changed.");
+   INF("The background color of bg_blank_view has been changed.");
    INF("(A, R, G, B) : %d, %d, %d, %d -> %d, %d, %d, %d", pa, pr, pg, pb, a, r, g, b);
 
    return reply;
@@ -6506,6 +6516,188 @@ _e_info_server_cb_screen_info_get(const Eldbus_Service_Interface *iface EINA_UNU
    return reply;
 }
 
+static E_Client *
+_e_info_server_client_get_from_view(E_View *view, E_Info_Canvas *canvas_info)
+{
+   E_Client *ec = NULL;
+
+   if (view->type != E_VIEW_TYPE_CLIENT)
+     {
+        if (e_view_visible_get(view))
+          {
+             if (!e_util_strcmp(e_view_name_get(view), "blur_obj"))
+               {
+                  return NULL;
+               }
+
+             ec = e_view_data_get(view, "effect_client");
+             return ec;
+          }
+     }
+
+   ec = e_view_data_get(view, "E_Client");
+
+   return ec;
+}
+
+static void
+_e_info_server_canvas_tree(E_View *view, int sx, int sy, void *user_data)
+{
+   E_Info_Canvas *canvas_info = (E_Info_Canvas *)user_data;
+   E_Hwc_Window *hwc_window;
+   E_Client *ec = NULL;
+
+   ec = _e_info_server_client_get_from_view(view, canvas_info);
+   if (!ec) return;
+   if (canvas_info->visible)
+     {
+        if (e_client_util_ignored_get(ec))
+          return;
+     }
+
+   hwc_window = ec->hwc_window;
+   if (!hwc_window) return;
+
+   if (eina_list_data_find(canvas_info->windows_list, hwc_window))
+     return;
+
+   canvas_info->windows_list = eina_list_append(canvas_info->windows_list, hwc_window);
+}
+
+static Eina_List *
+_e_info_server_view_windows_list_get(Eina_Bool visible)
+{
+   Eina_List *windows_list;
+   E_Info_Canvas *canvas_info = E_NEW(E_Info_Canvas, 1);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(canvas_info, NULL);
+
+   canvas_info->visible = visible;
+
+   e_canvas_tree_for_each_reverse(e_comp_canvas_get(), _e_info_server_canvas_tree, canvas_info);
+
+   windows_list = eina_list_clone(canvas_info->windows_list);
+   E_FREE(canvas_info);
+
+   return windows_list;
+}
+
+static void
+_msg_view_append(Eldbus_Message_Iter *iter, Eina_Bool is_visible)
+{
+   Eldbus_Message_Iter *array_of_ec;
+   E_Hwc_Window *hwc_window;
+   Eina_List *windows_list;
+
+   eldbus_message_iter_arguments_append(iter, "a("VALUE_TYPE_FOR_TOPVWINS")", &array_of_ec);
+
+   windows_list = _e_info_server_view_windows_list_get(EINA_TRUE);
+
+   EINA_LIST_FREE(windows_list, hwc_window)
+     {
+        Eldbus_Message_Iter *struct_of_ec;
+        E_Client *ec;
+        pid_t pid = -1;
+        Eina_Bool mapped = EINA_FALSE;
+        int iconified = 0;
+        E_Iconified_Type iconified_type;
+        int hwc = -1, hwc_policy = E_HWC_POLICY_NONE, pl_zpos = -999;
+        E_Canvas_Layer canvas_layer;
+        char layer_name[128] = {0,};
+        Eina_Bool has_input_region = EINA_FALSE;
+        Eina_List *list_input_region = NULL;
+        int zone_id = -1;
+        E_Zone *zone;
+        int x, y, w, h;
+
+        ec = hwc_window->ec;
+
+        pid = ec->netwm.pid;
+        if (pid <= 0)
+          {
+             if (ec->comp_data)
+               {
+                  E_Comp_Wl_Client_Data *cdata = (E_Comp_Wl_Client_Data*)ec->comp_data;
+                  if (cdata->surface)
+                    wl_client_get_credentials(wl_resource_get_client(cdata->surface), &pid, NULL, NULL);
+               }
+          }
+
+        if (ec->comp_data)
+          mapped = ec->comp_data->mapped;
+
+        if (ec->iconic)
+          {
+             iconified_type = e_client_iconified_type_get(ec);
+             if (iconified_type == 0)
+               {
+                  // if iconified_type is 0, then there is code not to set iconify_type
+                  // before calling e_client_iconify. We have to find and fix it.
+                  iconified = -1;
+               }
+             else
+               iconified = iconified_type;
+          }
+
+        _e_info_server_ec_hwc_info_get(ec, &hwc, &hwc_policy, &pl_zpos);
+
+        canvas_layer = e_view_layer_index_get(e_view_client_view_get(e_client_view_get(ec)));
+
+        e_comp_layer_name_get(e_comp_canvas_layer_map_to(canvas_layer), layer_name, sizeof(layer_name));
+
+        e_view_client_input_rect_get(e_client_view_get(ec), &list_input_region);
+        if (list_input_region)
+          {
+             has_input_region = EINA_TRUE;
+             list_input_region = eina_list_free(list_input_region);
+          }
+
+        zone = e_comp_zone_find_by_ec(ec);
+        if (zone)
+          zone_id = zone->id;
+
+        e_view_client_geometry_get(e_client_view_get(ec), &x, &y, &w, &h);
+        eldbus_message_iter_arguments_append(array_of_ec, "("VALUE_TYPE_FOR_TOPVWINS")", &struct_of_ec);
+
+        eldbus_message_iter_arguments_append
+           (struct_of_ec, VALUE_TYPE_FOR_TOPVWINS,
+            e_client_util_win_get(ec),
+            ec->pixmap ? e_pixmap_res_id_get(ec->pixmap) : 0,
+            pid,
+            e_client_util_name_get(ec) ?: "NO NAME",
+//            ec->x, ec->y, ec->w, ec->h, ec->layer,
+            x, y, w, h, ec->layer,
+            ec->visible, mapped, ec->argb, ec->visibility.opaque, e_client_visibility_get(ec), ec->visibility.force_obscured, iconified,
+            e_view_client_visible_get(e_client_view_get(ec)), ec->focused, hwc, hwc_policy, pl_zpos,
+            e_client_util_win_get(ec->parent), layer_name, has_input_region, e_client_transform_core_enable_get(ec), ec->transient_policy,
+            zone_id, e_client_is_layout_apply(ec));
+
+        eldbus_message_iter_container_close(array_of_ec, struct_of_ec);
+     }
+
+   eldbus_message_iter_container_close(iter, array_of_ec);
+}
+
+static Eldbus_Message *
+_e_info_server_cb_view_info_get(const Eldbus_Service_Interface *iface EINA_UNUSED, const Eldbus_Message *msg)
+{
+   Eldbus_Message *reply = eldbus_message_method_return_new(msg);
+   Eldbus_Message_Iter *iter = eldbus_message_iter_get(reply);
+
+   eldbus_message_iter_basic_append(iter, 'i', e_comp_gl_get());
+   eldbus_message_iter_basic_append(iter, 'i', e_comp_config_get()->hwc);
+   eldbus_message_iter_basic_append(iter, 'i', e_comp_config_get()->hwc_use_multi_plane);
+   eldbus_message_iter_basic_append(iter, 'i', e_comp->hwc);
+   eldbus_message_iter_basic_append(iter, 'i', _e_info_server_is_hwc_windows());
+   eldbus_message_iter_basic_append(iter, 's', ecore_evas_engine_name_get(e_comp->ee));
+   eldbus_message_iter_basic_append(iter, 'i', e_comp_config_get()->engine);
+   eldbus_message_iter_basic_append(iter, 'i', e_config->use_buffer_flush);
+   eldbus_message_iter_basic_append(iter, 'i', e_config->deiconify_approve);
+
+   _msg_view_append(iter, EINA_TRUE);
+
+   return reply;
+}
+
 static Eldbus_Message *
 _e_info_server_cb_focus_policy_ext_set(const Eldbus_Service_Interface *iface EINA_UNUSED, const Eldbus_Message *msg)
 {
@@ -7418,6 +7610,7 @@ static const Eldbus_Method methods[] = {
    { "input_region", ELDBUS_ARGS({"siiii", "options"}), ELDBUS_ARGS({"a(iiii)", "path"}), _e_info_server_cb_input_region, 0},
    { "hwc_wins", ELDBUS_ARGS({"i", "option"}), ELDBUS_ARGS({"as", "hwc wins info"}), _e_info_server_cb_hwc_wins_info_get, 0 },
    { "screen_info", ELDBUS_ARGS({"i", "option"}), ELDBUS_ARGS({"as", "screen info"}), _e_info_server_cb_screen_info_get, 0 },
+   { "view_info", NULL, ELDBUS_ARGS({"iiiiisiiia("VALUE_TYPE_FOR_TOPVWINS")", "array of ec"}), _e_info_server_cb_view_info_get, 0 },
    { "focus_policy_ext_set", ELDBUS_ARGS({"i", "option"}), ELDBUS_ARGS({"bi", "isChanged and result"}), _e_info_server_cb_focus_policy_ext_set, 0 },
    { "focus_history", NULL, ELDBUS_ARGS({"a(ubbbs)", "history array"}), _e_info_server_cb_focus_history, 0 },
    { "init_device", ELDBUS_ARGS({"us", "device information"}), ELDBUS_ARGS({"s", "result message"}), _e_info_server_cb_init_device, 0},
index 77b7bf8..7d51c1f 100644 (file)
@@ -7,6 +7,8 @@
 #include "e_error_intern.h"
 #include "e_hwc_window_queue_intern.h"
 #include "e_display_intern.h"
+#include "e_view_intern.h"
+#include "e_view_client_intern.h"
 
 #include <Evas_GL.h>
 #include <gbm.h>
@@ -711,30 +713,35 @@ e_hwc_deactive_get(E_Hwc *hwc)
 EINTERN Eina_Bool
 e_hwc_client_is_above_hwc(E_Client *ec, E_Client *hwc_ec)
 {
-   Evas_Object *o;
-   int layer, hwc_layer;
+   E_View *view, *view_hwc, *view_tmp;
+   E_Canvas_Layer layer, layer_hwc;
 
    EINA_SAFETY_ON_NULL_RETURN_VAL(ec, EINA_FALSE);
    EINA_SAFETY_ON_NULL_RETURN_VAL(hwc_ec, EINA_FALSE);
 
    if (ec == hwc_ec) return EINA_FALSE;
-   if (!evas_object_visible_get(ec->frame)) return EINA_FALSE;
+   if (!e_view_client_visible_get(e_client_view_get(ec))) return EINA_FALSE;
 
-   layer = evas_object_layer_get(ec->frame);
-   hwc_layer = evas_object_layer_get(hwc_ec->frame);
+   view = e_view_client_view_get(e_client_view_get(ec));
+   view_hwc = e_view_client_view_get(e_client_view_get(hwc_ec));
+
+   layer = e_canvas_layer_find(e_comp->canvas, view);
+   layer_hwc = e_canvas_layer_find(e_comp->canvas, view_hwc);
 
    /* compare layer */
-   if (hwc_layer > layer) return EINA_FALSE;
-   if (layer > hwc_layer) return EINA_TRUE;
+   if (layer_hwc > layer) return EINA_FALSE;
+   if (layer > layer_hwc) return EINA_TRUE;
 
-   o = evas_object_above_get(hwc_ec->frame);
-   if (evas_object_layer_get(o) == hwc_layer)
+   view_tmp = e_view_above_get(view);
+   if (e_canvas_layer_find(e_comp->canvas, view_tmp) == layer_hwc)
      {
-        do {
-           if (o == ec->frame)
-             return EINA_TRUE;
-           o = evas_object_above_get(o);
-        } while (o && (evas_object_layer_get(o) == hwc_layer));
+        do
+          {
+             if (view_tmp == view)
+               return EINA_TRUE;
+             view_tmp = e_view_above_get(view_tmp);
+          }
+        while (view_tmp && (e_canvas_layer_find(e_comp->canvas, view_tmp) == layer_hwc));
      }
    else
      return EINA_TRUE;
index 0f337c4..b29b6a0 100644 (file)
@@ -6,8 +6,10 @@
 #include "e_hwc_intern.h"
 #include "e_policy_private_data.h"
 #include "e_client_intern.h"
-#include "e_comp_object_intern.h"
 #include "e_utils_intern.h"
+#include "e_comp_canvas.h"
+#include "e_view_intern.h"
+#include "e_view_client_intern.h"
 
 #include <wayland-tbm-server.h>
 
@@ -35,7 +37,7 @@ _e_hwc_planes_ec_check(E_Client *ec)
 
    if (ec->comp_override > 0) return EINA_FALSE;
 
-   if (e_comp_object_is_animating(ec->frame)) return EINA_FALSE;
+   if (e_view_client_is_animating(e_client_view_get(ec))) return EINA_FALSE;
 
    if ((!cdata) ||
        (!cdata->buffer_ref.buffer) ||
@@ -92,7 +94,7 @@ _e_hwc_planes_ec_check(E_Client *ec)
           return EINA_FALSE;
      }
 
-   if (e_comp_object_image_filter_get(ec->frame) != E_COMP_IMAGE_FILTER_NONE)
+   if (e_view_client_image_filter_get(e_client_view_get(ec)) != E_COMP_IMAGE_FILTER_NONE)
      return EINA_FALSE;
 
    return EINA_TRUE;
@@ -414,6 +416,7 @@ _e_hwc_planes_prepare(E_Hwc *hwc, E_Zone *zone)
    int n_vis = 0, n_ec = 0, n_cur = 0, n_skip = 0;
    Eina_List *hwc_ok_clist = NULL, *vis_clist = NULL;
    E_Output *output = hwc->output;
+   E_View *view;
 
    _e_hwc_planes_prepare_init(hwc);
 
@@ -425,15 +428,16 @@ _e_hwc_planes_prepare(E_Hwc *hwc, E_Zone *zone)
    // check clients not able to use hwc
    EINA_LIST_FOREACH(vis_clist, vl, ec)
      {
+        view = e_view_client_view_get(e_client_view_get(ec));
         // if there is a ec which is lower than quickpanel and quickpanel is opened.
-        if (E_POLICY_QUICKPANEL_LAYER >= evas_object_layer_get(ec->frame))
+        if (E_CANVAS_LAYER_CLIENT_ALERT >= e_canvas_layer_find(e_comp_canvas_get(), view))
           {
              // check whether quickpanel is open than break
              if (e_qps_visible_get()) goto done;
           }
 
         // if ec->frame is not for client buffer (e.g. launchscreen)
-        if (e_comp_object_content_type_get(ec->frame) != E_COMP_OBJECT_CONTENT_TYPE_INT_IMAGE)
+        if (e_view_client_content_type_get(e_client_view_get(ec)) != E_COMP_OBJECT_CONTENT_TYPE_INT_IMAGE)
            goto done;
 
         // if there is UI subfrace, it means need to composite
@@ -891,7 +895,7 @@ e_hwc_planes_presentation_update(E_Hwc *hwc, E_Client *ec)
               return EINA_FALSE;
            }
 
-        e_comp_object_hwc_update_set(ec->frame, EINA_TRUE);
+        e_view_client_hwc_update_set(e_client_view_get(ec), EINA_TRUE);
      }
    else
      {
index aa18494..742aef0 100644 (file)
 #include "e_policy_visibility_intern.h"
 #include "e_client_video_intern.h"
 #include "e_client_intern.h"
-#include "e_comp_object_intern.h"
 #include "e_utils_intern.h"
 #include "e_blur_intern.h"
+#include "e_view_intern.h"
+#include "e_view_client_intern.h"
 
 #include <pixman.h>
 #include <wayland-tbm-server.h>
@@ -621,11 +622,12 @@ _e_hwc_window_free(E_Hwc_Window *hwc_window)
 }
 
 static void
-_e_hwc_window_obj_cb_show(void *data, Evas *evas EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED)
+_e_hwc_window_view_cb_show(struct wl_listener *listener, void *data)
 {
    E_Hwc_Window *hwc_window;
 
-   if (!(hwc_window = data)) return;
+   hwc_window = wl_container_of(listener, hwc_window, show_listener);
+   if (!hwc_window) return;
 
    hwc_window->evas_visible = EINA_TRUE;
 
@@ -633,11 +635,12 @@ _e_hwc_window_obj_cb_show(void *data, Evas *evas EINA_UNUSED, Evas_Object *obj E
 }
 
 static void
-_e_hwc_window_obj_cb_hide(void *data, Evas *evas EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED)
+_e_hwc_window_view_cb_hide(struct wl_listener *listener, void *data)
 {
    E_Hwc_Window *hwc_window;
 
-   if (!(hwc_window = data)) return;
+   hwc_window = wl_container_of(listener, hwc_window, hide_listener);
+   if (!hwc_window) return;
 
    hwc_window->evas_visible = EINA_FALSE;
 
@@ -645,11 +648,12 @@ _e_hwc_window_obj_cb_hide(void *data, Evas *evas EINA_UNUSED, Evas_Object *obj E
 }
 
 static void
-_e_hwc_window_obj_cb_move(void *data, Evas *evas EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED)
+_e_hwc_window_view_cb_move(struct wl_listener *listener, void *data)
 {
    E_Hwc_Window *hwc_window;
 
-   if (!(hwc_window = data)) return;
+   hwc_window = wl_container_of(listener, hwc_window, move_listener);
+   if (!hwc_window) return;
 
    e_hwc_window_changed_set(hwc_window, E_HWC_WINS_CHANGED_WIN_GEOMETRY);
 
@@ -666,11 +670,12 @@ _e_hwc_window_obj_cb_move(void *data, Evas *evas EINA_UNUSED, Evas_Object *obj E
 }
 
 static void
-_e_hwc_window_obj_cb_resize(void *data, Evas *evas EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED)
+_e_hwc_window_view_cb_resize(struct wl_listener *listener, void *data)
 {
    E_Hwc_Window *hwc_window;
 
-   if (!(hwc_window = data)) return;
+   hwc_window = wl_container_of(listener, hwc_window, resize_listener);
+   if (!hwc_window) return;
 
    e_hwc_window_changed_set(hwc_window, E_HWC_WINS_CHANGED_WIN_GEOMETRY);
 
@@ -687,11 +692,12 @@ _e_hwc_window_obj_cb_resize(void *data, Evas *evas EINA_UNUSED, Evas_Object *obj
 }
 
 static void
-_e_hwc_window_obj_cb_restack(void *data, Evas *evas EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED)
+_e_hwc_window_view_cb_restack(struct wl_listener *listener, void *data)
 {
    E_Hwc_Window *hwc_window;
 
-   if (!(hwc_window = data)) return;
+   hwc_window = wl_container_of(listener, hwc_window, restack_listener);
+   if (!hwc_window) return;
 
    e_hwc_window_changed_set(hwc_window, E_HWC_WINS_CHANGED_WIN_VISIBLE);
 }
@@ -700,6 +706,8 @@ static void
 _e_hwc_window_del(E_Hwc_Window *hwc_window)
 {
    E_Client *ec;
+   E_View *view;
+   E_View_Client *view_client;
 
    EINA_SAFETY_ON_NULL_RETURN(hwc_window);
 
@@ -708,21 +716,14 @@ _e_hwc_window_del(E_Hwc_Window *hwc_window)
    ec = hwc_window->ec;
    EINA_SAFETY_ON_NULL_RETURN(ec);
 
-   evas_object_event_callback_del_full(hwc_window->ec->frame, EVAS_CALLBACK_SHOW,
-                                       _e_hwc_window_obj_cb_show,
-                                       hwc_window);
-   evas_object_event_callback_del_full(hwc_window->ec->frame, EVAS_CALLBACK_HIDE,
-                                       _e_hwc_window_obj_cb_hide,
-                                       hwc_window);
-   evas_object_event_callback_del_full(hwc_window->ec->frame, EVAS_CALLBACK_MOVE,
-                                       _e_hwc_window_obj_cb_move,
-                                       hwc_window);
-   evas_object_event_callback_del_full(hwc_window->ec->frame, EVAS_CALLBACK_RESIZE,
-                                       _e_hwc_window_obj_cb_resize,
-                                       hwc_window);
-   evas_object_event_callback_del_full(hwc_window->ec->frame, EVAS_CALLBACK_RESTACK,
-                                       _e_hwc_window_obj_cb_restack,
-                                       hwc_window);
+   view_client = e_client_view_get(ec);
+   view = e_view_client_view_get(view_client);
+
+   e_view_event_listener_del(view, E_VIEW_SHOW, &hwc_window->show_listener);
+   e_view_event_listener_del(view, E_VIEW_HIDE, &hwc_window->hide_listener);
+   e_view_event_listener_del(view, E_VIEW_MOVE, &hwc_window->move_listener);
+   e_view_event_listener_del(view, E_VIEW_RESIZE, &hwc_window->resize_listener);
+   e_view_event_listener_del(view, E_VIEW_RESTACK, &hwc_window->restack_listener);
 
    ec->hwc_window = NULL;
    hwc_window->ec = NULL;
@@ -795,7 +796,7 @@ _e_hwc_window_cb_image_filter_set(struct wl_listener *listener, void *data)
    hwc_window = container_of(listener, E_Hwc_Window, image_filter_set_listener);
    if (!hwc_window->ec) return;
 
-   if (e_comp_object_image_filter_get(hwc_window->ec->frame) != E_COMP_IMAGE_FILTER_NONE)
+   if (e_view_client_image_filter_get(e_client_view_get(hwc_window->ec)) != E_COMP_IMAGE_FILTER_NONE)
      e_hwc_window_restriction_set(hwc_window, E_HWC_WINDOW_RESTRICTION_IMAGE_FILTER);
    else
      e_hwc_window_restriction_unset(hwc_window, E_HWC_WINDOW_RESTRICTION_IMAGE_FILTER);
@@ -809,7 +810,7 @@ _e_hwc_window_cb_render_op_set(struct wl_listener *listener, void *data)
    hwc_window = container_of(listener, E_Hwc_Window, render_op_set_listener);
    if (!hwc_window->ec) return;
 
-   if (e_comp_object_render_op_get(hwc_window->ec->frame) != EVAS_RENDER_BLEND)
+   if (e_view_client_render_op_get(e_client_view_get(hwc_window->ec)) != E_VIEW_RENDER_BLEND)
      e_hwc_window_restriction_set(hwc_window, E_HWC_WINDOW_RESTRICTION_BLEND_EQUATION);
    else
      e_hwc_window_restriction_unset(hwc_window, E_HWC_WINDOW_RESTRICTION_BLEND_EQUATION);
@@ -823,7 +824,7 @@ _e_hwc_window_cb_content_type_set(struct wl_listener *listener, void *data)
    hwc_window = container_of(listener, E_Hwc_Window, content_type_set_listener);
    if (!hwc_window->ec) return;
 
-   if (e_comp_object_content_type_get(hwc_window->ec->frame) != E_COMP_OBJECT_CONTENT_TYPE_INT_IMAGE)
+   if (e_view_client_content_type_get(e_client_view_get(hwc_window->ec)) != E_COMP_OBJECT_CONTENT_TYPE_INT_IMAGE)
      e_hwc_window_restriction_set(hwc_window, E_HWC_WINDOW_RESTRICTION_CONTENT_IMAGE);
    else
      e_hwc_window_restriction_unset(hwc_window, E_HWC_WINDOW_RESTRICTION_CONTENT_IMAGE);
@@ -838,9 +839,9 @@ _e_hwc_window_cb_color_set(struct wl_listener *listener, void *data)
    hwc_window = container_of(listener, E_Hwc_Window, color_set_listener);
    if (!hwc_window->ec) return;
 
-   e_comp_object_color_get(hwc_window->ec->frame, NULL, NULL, NULL, &alpha);
+   e_view_client_color_get(e_client_view_get(hwc_window->ec), NULL, NULL, NULL, &alpha);
 
-   if ((alpha != 255) && e_comp_object_redirected_get(hwc_window->ec->frame))
+   if ((alpha != 255) && e_view_client_redirected_get(e_client_view_get(hwc_window->ec)))
      e_hwc_window_restriction_set(hwc_window, E_HWC_WINDOW_RESTRICTION_BLEND_ALPHA);
    else
      e_hwc_window_restriction_unset(hwc_window, E_HWC_WINDOW_RESTRICTION_BLEND_ALPHA);
@@ -968,24 +969,24 @@ _e_hwc_window_restriction_init(E_Hwc_Window *hwc_window)
 
    if (!hwc_window->ec) return;
 
-   if (e_comp_object_image_filter_get(hwc_window->ec->frame) != E_COMP_IMAGE_FILTER_NONE)
+   if (e_view_client_image_filter_get(e_client_view_get(hwc_window->ec)) != E_COMP_IMAGE_FILTER_NONE)
      e_hwc_window_restriction_set(hwc_window, E_HWC_WINDOW_RESTRICTION_IMAGE_FILTER);
    else
      e_hwc_window_restriction_unset(hwc_window, E_HWC_WINDOW_RESTRICTION_IMAGE_FILTER);
 
-   if (e_comp_object_render_op_get(hwc_window->ec->frame) != EVAS_RENDER_BLEND)
+   if (e_view_client_render_op_get(e_client_view_get(hwc_window->ec)) != E_VIEW_RENDER_BLEND)
      e_hwc_window_restriction_set(hwc_window, E_HWC_WINDOW_RESTRICTION_BLEND_EQUATION);
    else
      e_hwc_window_restriction_unset(hwc_window, E_HWC_WINDOW_RESTRICTION_BLEND_EQUATION);
 
-   e_comp_object_color_get(hwc_window->ec->frame, NULL, NULL, NULL, &alpha);
+   e_view_client_color_get(e_client_view_get(hwc_window->ec), NULL, NULL, NULL, &alpha);
 
-   if ((alpha != 255) && e_comp_object_redirected_get(hwc_window->ec->frame))
+   if ((alpha != 255) && e_view_client_redirected_get(e_client_view_get(hwc_window->ec)))
      e_hwc_window_restriction_set(hwc_window, E_HWC_WINDOW_RESTRICTION_BLEND_ALPHA);
    else
      e_hwc_window_restriction_unset(hwc_window, E_HWC_WINDOW_RESTRICTION_BLEND_ALPHA);
 
-   if (e_comp_object_render_update_lock_get(hwc_window->ec->frame))
+   if (e_view_client_render_update_lock_get(e_client_view_get(hwc_window->ec)))
      e_hwc_window_restriction_set(hwc_window, E_HWC_WINDOW_RESTRICTION_RENDER_UPDATE_LOCK);
    else
      e_hwc_window_restriction_unset(hwc_window, E_HWC_WINDOW_RESTRICTION_RENDER_UPDATE_LOCK);
@@ -1019,6 +1020,7 @@ static E_Hwc_Window *
 _e_hwc_window_new(E_Hwc *hwc, E_Client *ec, E_Hwc_Window_State state)
 {
    E_Hwc_Window *hwc_window;
+   E_View *view;
    tdm_hwc *thwc;;
    tdm_error error;
 
@@ -1064,37 +1066,33 @@ _e_hwc_window_new(E_Hwc *hwc, E_Client *ec, E_Hwc_Window_State state)
    e_hwc_presentation_callback_list_init(&hwc_window->presentation_callbacks);
 
    hwc_window->image_filter_set_listener.notify = _e_hwc_window_cb_image_filter_set;
-   e_comp_object_image_filter_set_listener_add(ec->frame, &hwc_window->image_filter_set_listener);
+   e_view_client_image_filter_set_listener_add(e_client_view_get(ec), &hwc_window->image_filter_set_listener);
 
    hwc_window->render_op_set_listener.notify = _e_hwc_window_cb_render_op_set;
-   e_comp_object_render_op_set_listener_add(ec->frame, &hwc_window->render_op_set_listener);
+   e_view_client_render_op_set_listener_add(e_client_view_get(ec), &hwc_window->render_op_set_listener);
 
    hwc_window->content_type_set_listener.notify = _e_hwc_window_cb_content_type_set;
-   e_comp_object_content_type_set_listener_add(ec->frame, &hwc_window->content_type_set_listener);
+   e_view_client_content_type_set_listener_add(e_client_view_get(ec), &hwc_window->content_type_set_listener);
 
    hwc_window->color_set_listener.notify = _e_hwc_window_cb_color_set;
-   e_comp_object_color_set_listener_add(ec->frame, &hwc_window->color_set_listener);
+   e_view_client_color_set_listener_add(e_client_view_get(ec), &hwc_window->color_set_listener);
 
    hwc_window->color_visible_set_listener.notify = _e_hwc_window_cb_color_visible_set;
-   e_comp_object_color_visible_set_listener_add(ec->frame, &hwc_window->color_visible_set_listener);
-
-   evas_object_event_callback_add(hwc_window->ec->frame, EVAS_CALLBACK_SHOW,
-                                  _e_hwc_window_obj_cb_show,
-                                  hwc_window);
-   evas_object_event_callback_add(hwc_window->ec->frame, EVAS_CALLBACK_HIDE,
-                                  _e_hwc_window_obj_cb_hide,
-                                  hwc_window);
-   evas_object_event_callback_add(hwc_window->ec->frame, EVAS_CALLBACK_MOVE,
-                                  _e_hwc_window_obj_cb_move,
-                                  hwc_window);
-   evas_object_event_callback_add(hwc_window->ec->frame, EVAS_CALLBACK_RESIZE,
-                                  _e_hwc_window_obj_cb_resize,
-                                  hwc_window);
-   evas_object_event_callback_add(hwc_window->ec->frame, EVAS_CALLBACK_RESTACK,
-                                  _e_hwc_window_obj_cb_restack,
-                                  hwc_window);
-
-   if (evas_object_visible_get(ec->frame))
+   e_view_client_color_visible_set_listener_add(e_client_view_get(ec), &hwc_window->color_visible_set_listener);
+
+   view = e_view_client_view_get(e_client_view_get(ec));
+   hwc_window->show_listener.notify = _e_hwc_window_view_cb_show;
+   e_view_event_listener_add(view, E_VIEW_SHOW, &hwc_window->show_listener);
+   hwc_window->hide_listener.notify = _e_hwc_window_view_cb_hide;
+   e_view_event_listener_add(view, E_VIEW_HIDE, &hwc_window->hide_listener);
+   hwc_window->move_listener.notify = _e_hwc_window_view_cb_move;
+   e_view_event_listener_add(view, E_VIEW_MOVE, &hwc_window->move_listener);
+   hwc_window->resize_listener.notify = _e_hwc_window_view_cb_resize;
+   e_view_event_listener_add(view, E_VIEW_RESIZE, &hwc_window->resize_listener);
+   hwc_window->restack_listener.notify = _e_hwc_window_view_cb_restack;
+   e_view_event_listener_add(view, E_VIEW_RESTACK, &hwc_window->restack_listener);
+
+   if (e_view_client_visible_get(e_client_view_get(ec)))
      e_hwc_window_changed_set(hwc_window, E_HWC_WINS_CHANGED_WIN_VISIBLE);
 
    EHWINF("is created on eout:%p, video:%d cursor:%d",
@@ -2659,7 +2657,7 @@ _e_hwc_window_client_recover(E_Hwc_Window *hwc_window, Eina_Bool *clear_attach)
    comp_wl_buffer = _e_hwc_window_comp_wl_buffer_get(hwc_window);
 
    if ((!comp_wl_buffer) &&
-       (!evas_object_visible_get(ec->frame)) &&
+       (!e_view_client_visible_get(e_client_view_get(ec))) &&
        (ec->exp_iconify.buffer_flush) &&
        (e_policy_visibility_client_is_iconic(ec)))
     return EINA_FALSE;
@@ -2727,15 +2725,15 @@ _e_hwc_window_rendered_window_set(E_Hwc_Window *hwc_window, Eina_Bool set)
 
         if (hwc_window->ec->redirected)
           {
-             e_comp_object_redirected_set(ec->frame, EINA_TRUE);
+             e_view_client_redirected_set(e_client_view_get(ec), true);
 
              e_pixmap_image_refresh(ec->pixmap);
-             e_comp_object_damage(ec->frame, 0, 0, ec->w, ec->h);
-             e_comp_object_dirty(ec->frame);
-             e_comp_object_render(ec->frame);
+             e_view_client_damage(e_client_view_get(ec), 0, 0, ec->w, ec->h);
+             e_view_client_dirty(e_client_view_get(ec));
+             e_view_client_render(e_client_view_get(ec));
 
              if (!ret)
-               e_comp_object_render_update_del(ec->frame);
+               e_view_client_render_update_del(e_client_view_get(ec));
 
              e_hwc_windows_present_sync(hwc_window->hwc);
 
@@ -2750,7 +2748,7 @@ _e_hwc_window_rendered_window_set(E_Hwc_Window *hwc_window, Eina_Bool set)
      {
         if (hwc_window->ec->redirected)
           {
-             e_comp_object_redirected_set(ec->frame, EINA_FALSE);
+             e_view_client_redirected_set(e_client_view_get(ec), false);
 
              e_hwc_windows_present_sync(hwc_window->hwc);
 
@@ -3376,14 +3374,16 @@ _e_hwc_window_below_transparent_obj_map_apply(E_Hwc_Window *hwc_window)
    E_Map *map = NULL, *new_map = NULL;
    int w, h;
    Eina_Bool enable;
+   E_View *view;
 
-   EINA_SAFETY_ON_NULL_RETURN(hwc_window->below_transparent_obj);
+   EINA_SAFETY_ON_NULL_RETURN(hwc_window->below_transparent_view);
 
-   evas_object_geometry_get(hwc_window->below_transparent_obj, NULL, NULL, &w, &h);
+   e_view_rect_size_get(hwc_window->below_transparent_view, &w, &h);
+   view = e_view_rect_view_get(hwc_window->below_transparent_view);
 
    enable = e_client_transform_core_enable_get(hwc_window->ec);
    if (enable)
-     map = e_comp_object_map_get(hwc_window->ec->frame);
+     map = e_view_client_map_get(e_client_view_get(hwc_window->ec));
 
    if ((enable) && (map))
      {
@@ -3404,7 +3404,7 @@ _e_hwc_window_below_transparent_obj_map_apply(E_Hwc_Window *hwc_window)
              return;
           }
 
-        e_map_util_points_populate_from_object_full(new_map, hwc_window->ec->frame, 0);
+        e_map_util_points_populate_from_view_full(new_map, view, 0);
         e_map_util_points_color_set(new_map, 255, 255, 255, 255);
      }
 
@@ -3413,8 +3413,8 @@ _e_hwc_window_below_transparent_obj_map_apply(E_Hwc_Window *hwc_window)
    e_map_point_image_uv_set(new_map, 2, w, h);
    e_map_point_image_uv_set(new_map, 3, 0, h);
 
-   e_comp_object_map_set(hwc_window->below_transparent_obj, new_map);
-   e_comp_object_map_enable_set(hwc_window->below_transparent_obj, EINA_TRUE);
+   e_view_map_set(view, new_map);
+   e_view_map_enable_set(view, true);
 
    if (map) e_map_free(map);
 
@@ -3422,62 +3422,79 @@ _e_hwc_window_below_transparent_obj_map_apply(E_Hwc_Window *hwc_window)
 }
 
 static void
-_e_hwc_window_below_transparent_obj_cb_show(void *data, Evas *evas EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED)
+_e_hwc_window_below_transparent_view_cb_show(struct wl_listener *listener, void *data)
 {
    E_Hwc_Window *hwc_window;
+   E_View *view;
 
-   if (!(hwc_window = data)) return;
+   hwc_window = wl_container_of(listener, hwc_window, transparent_show_listener);
+   if (!hwc_window) return;
 
-   evas_object_show(hwc_window->below_transparent_obj);
+   view = e_view_rect_view_get(hwc_window->below_transparent_view);
+   e_view_show(view);
 }
 
 static void
-_e_hwc_window_below_transparent_obj_cb_hide(void *data, Evas *evas EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED)
+_e_hwc_window_below_transparent_view_cb_hide(struct wl_listener *listener, void *data)
 {
    E_Hwc_Window *hwc_window;
+   E_View *view;
 
-   if (!(hwc_window = data)) return;
+   hwc_window = wl_container_of(listener, hwc_window, transparent_hide_listener);
+   if (!hwc_window) return;
 
-   evas_object_hide(hwc_window->below_transparent_obj);
+   view = e_view_rect_view_get(hwc_window->below_transparent_view);
+   e_view_hide(view);
 }
 
 static void
-_e_hwc_window_below_transparent_obj_cb_move(void *data, Evas *evas EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED)
+_e_hwc_window_below_transparent_view_cb_move(struct wl_listener *listener, void *data)
 {
    E_Hwc_Window *hwc_window;
+   E_View *view;
 
-   if (!(hwc_window = data)) return;
+   hwc_window = wl_container_of(listener, hwc_window, transparent_move_listener);
+   if (!hwc_window) return;
 
-   evas_object_move(hwc_window->below_transparent_obj, hwc_window->ec->x, hwc_window->ec->y);
+   view = e_view_rect_view_get(hwc_window->below_transparent_view);
+   e_view_position_set(view, hwc_window->ec->x, hwc_window->ec->y);
 
    _e_hwc_window_below_transparent_obj_map_apply(hwc_window);
 }
 
 static void
-_e_hwc_window_below_transparent_obj_cb_resize(void *data, Evas *evas EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED)
+_e_hwc_window_below_transparent_view_cb_resize(struct wl_listener *listener, void *data)
 {
    E_Hwc_Window *hwc_window;
 
-   if (!(hwc_window = data)) return;
+   hwc_window = wl_container_of(listener, hwc_window, transparent_resize_listener);
+   if (!hwc_window) return;
 
    _e_hwc_window_below_transparent_obj_map_apply(hwc_window);
 }
 
 static void
-_e_hwc_window_below_transparent_obj_cb_restack(void *data, Evas *evas EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED)
+_e_hwc_window_below_transparent_view_cb_restack(struct wl_listener *listener, void *data)
 {
    E_Hwc_Window *hwc_window;
+   E_View *view, *ec_view;
 
-   if (!(hwc_window = data)) return;
+   hwc_window = wl_container_of(listener, hwc_window, transparent_restack_listener);
+   if (!hwc_window) return;
 
-   evas_object_layer_set(hwc_window->below_transparent_obj, evas_object_layer_get(hwc_window->ec->frame));
-   evas_object_stack_below(hwc_window->below_transparent_obj, hwc_window->ec->frame);
+   view = e_view_rect_view_get(hwc_window->below_transparent_view);
+   ec_view = e_view_client_view_get(e_client_view_get(hwc_window->ec));
+   e_view_reparent(view, e_view_parent_get(ec_view));
+   e_view_place_below(view, ec_view);
 }
 
 EINTERN void
 e_hwc_window_below_transparent_obj_set(E_Hwc_Window *hwc_window, Eina_Bool set)
 {
-   Evas_Object *below_transparent_obj;
+   E_View_Rect *below_transparent_view;
+   const int color[4] = {0, 0, 0, 0};
+   E_View *view, *ec_view;
+   E_View_Client *view_client;
 
    EINA_SAFETY_ON_NULL_RETURN(hwc_window);
 
@@ -3485,70 +3502,59 @@ e_hwc_window_below_transparent_obj_set(E_Hwc_Window *hwc_window, Eina_Bool set)
      {
         EINA_SAFETY_ON_NULL_RETURN(hwc_window->ec);
 
-        if (hwc_window->below_transparent_obj) return;
+        if (hwc_window->below_transparent_view) return;
 
-        below_transparent_obj = evas_object_rectangle_add(e_comp->evas);
-        EINA_SAFETY_ON_NULL_RETURN(below_transparent_obj);
+        ec_view = e_view_client_view_get(e_client_view_get(hwc_window->ec));
+        below_transparent_view = e_view_rect_create(e_view_parent_get(ec_view), 1, 1, color);
+        EINA_SAFETY_ON_NULL_RETURN(below_transparent_view);
 
-        evas_object_pass_events_set(below_transparent_obj, EINA_TRUE);
+        view = e_view_rect_view_get(below_transparent_view);
 
-        evas_object_layer_set(below_transparent_obj, evas_object_layer_get(hwc_window->ec->frame));
-        evas_object_stack_below(below_transparent_obj, hwc_window->ec->frame);
-        evas_object_render_op_set(below_transparent_obj, EVAS_RENDER_COPY);
+        e_view_pass_events_set(view, true);
+        e_view_place_below(view, ec_view);
+        e_view_render_op_set(view, E_VIEW_RENDER_COPY);
 
-        evas_object_color_set(below_transparent_obj, 0, 0, 0, 0);
-        evas_object_move(below_transparent_obj, hwc_window->ec->x, hwc_window->ec->y);
-        evas_object_resize(below_transparent_obj, 1, 1);
-        evas_object_name_set(below_transparent_obj, "hwc_below_transparent_obj");
+        e_view_position_set(view, hwc_window->ec->x, hwc_window->ec->y);
+        e_view_name_set(view, "hwc_below_transparent_obj");
 
-        hwc_window->below_transparent_obj = below_transparent_obj;
+        hwc_window->below_transparent_view = below_transparent_view;
 
         _e_hwc_window_below_transparent_obj_map_apply(hwc_window);
 
-        if (evas_object_visible_get(hwc_window->ec->frame))
-          evas_object_show(hwc_window->below_transparent_obj);
-
-        evas_object_event_callback_add(hwc_window->ec->frame, EVAS_CALLBACK_SHOW,
-                                       _e_hwc_window_below_transparent_obj_cb_show,
-                                       hwc_window);
-        evas_object_event_callback_add(hwc_window->ec->frame, EVAS_CALLBACK_HIDE,
-                                       _e_hwc_window_below_transparent_obj_cb_hide,
-                                       hwc_window);
-        evas_object_event_callback_add(hwc_window->ec->frame, EVAS_CALLBACK_MOVE,
-                                       _e_hwc_window_below_transparent_obj_cb_move,
-                                       hwc_window);
-        evas_object_event_callback_add(hwc_window->ec->frame, EVAS_CALLBACK_RESIZE,
-                                       _e_hwc_window_below_transparent_obj_cb_resize,
-                                       hwc_window);
-        evas_object_event_callback_add(hwc_window->ec->frame, EVAS_CALLBACK_RESTACK,
-                                       _e_hwc_window_below_transparent_obj_cb_restack,
-                                       hwc_window);
+        if (e_view_visible_get(ec_view))
+          e_view_show(view);
+
+        hwc_window->transparent_show_listener.notify = _e_hwc_window_below_transparent_view_cb_show;
+        e_view_event_listener_add(ec_view, E_VIEW_SHOW, &hwc_window->transparent_show_listener);
+        hwc_window->transparent_hide_listener.notify = _e_hwc_window_below_transparent_view_cb_hide;
+        e_view_event_listener_add(ec_view, E_VIEW_HIDE, &hwc_window->transparent_hide_listener);
+        hwc_window->transparent_move_listener.notify = _e_hwc_window_below_transparent_view_cb_move;
+        e_view_event_listener_add(ec_view, E_VIEW_MOVE, &hwc_window->transparent_move_listener);
+        hwc_window->transparent_resize_listener.notify = _e_hwc_window_below_transparent_view_cb_resize;
+        e_view_event_listener_add(ec_view, E_VIEW_RESIZE, &hwc_window->transparent_resize_listener);
+        hwc_window->transparent_restack_listener.notify = _e_hwc_window_below_transparent_view_cb_restack;
+        e_view_event_listener_add(ec_view, E_VIEW_RESTACK, &hwc_window->transparent_restack_listener);
 
         EHWINF("Set below_transparent_obj", hwc_window->ec, hwc_window->hwc, hwc_window);
      }
    else
      {
-        if (!hwc_window->below_transparent_obj) return;
+        if (!hwc_window->below_transparent_view) return;
 
-        E_FREE_FUNC(hwc_window->below_transparent_obj, evas_object_del);
+        view = e_view_rect_view_get(hwc_window->below_transparent_view);
+        e_view_destroy(view);
+        hwc_window->below_transparent_view = NULL;
 
         if (hwc_window->ec)
           {
-             evas_object_event_callback_del_full(hwc_window->ec->frame, EVAS_CALLBACK_SHOW,
-                                                 _e_hwc_window_below_transparent_obj_cb_show,
-                                                 hwc_window);
-             evas_object_event_callback_del_full(hwc_window->ec->frame, EVAS_CALLBACK_HIDE,
-                                                 _e_hwc_window_below_transparent_obj_cb_hide,
-                                                 hwc_window);
-             evas_object_event_callback_del_full(hwc_window->ec->frame, EVAS_CALLBACK_MOVE,
-                                                 _e_hwc_window_below_transparent_obj_cb_move,
-                                                 hwc_window);
-             evas_object_event_callback_del_full(hwc_window->ec->frame, EVAS_CALLBACK_RESIZE,
-                                                 _e_hwc_window_below_transparent_obj_cb_resize,
-                                                 hwc_window);
-             evas_object_event_callback_del_full(hwc_window->ec->frame, EVAS_CALLBACK_RESTACK,
-                                                 _e_hwc_window_below_transparent_obj_cb_restack,
-                                                 hwc_window);
+             view_client = e_client_view_get(hwc_window->ec);
+             view = e_view_client_view_get(view_client);
+
+             e_view_event_listener_del(view, E_VIEW_SHOW, &hwc_window->transparent_show_listener);
+             e_view_event_listener_del(view, E_VIEW_HIDE, &hwc_window->transparent_hide_listener);
+             e_view_event_listener_del(view, E_VIEW_MOVE, &hwc_window->transparent_move_listener);
+             e_view_event_listener_del(view, E_VIEW_RESIZE, &hwc_window->transparent_resize_listener);
+             e_view_event_listener_del(view, E_VIEW_RESTACK, &hwc_window->transparent_restack_listener);
           }
 
         EHWINF("Unset below_transparent_obj", hwc_window->ec, hwc_window->hwc, hwc_window);
@@ -3651,6 +3657,7 @@ e_hwc_window_client_geometry_visible_get(E_Hwc_Window *hwc_window)
    int ee_w, ee_h;
    int x1, x2, y1, y2;
    E_Map *map;
+   E_View *view;
 
    EINA_SAFETY_ON_NULL_RETURN_VAL(hwc_window, EINA_FALSE);
 
@@ -3660,7 +3667,8 @@ e_hwc_window_client_geometry_visible_get(E_Hwc_Window *hwc_window)
    ecore_evas_geometry_get(e_comp->ee, NULL, NULL, &ee_w, &ee_h);
    e_client_geometry_get(ec, &x, &y, &w, &h);
 
-   if ((ec->is_cursor) && (evas_object_map_enable_get(ec->frame)))
+   view = e_view_client_view_get(e_client_view_get(ec));
+   if ((ec->is_cursor) && (e_view_map_enable_get(view)))
      {
         map = e_client_map_get(ec);
         if (map)
index 72231e7..89ae4be 100644 (file)
@@ -8,6 +8,7 @@
 #include "e_hwc_intern.h"
 #include "e_policy_visibility_intern.h"
 #include "e_client_intern.h"
+#include "e_view_client_intern.h"
 
 # include <gbm.h>
 # include <wayland-tbm-server.h>
@@ -1348,7 +1349,7 @@ _e_hwc_window_queue_copy_thread_run_end_cb(void *data, Ecore_Thread *thread)
    if (!(ec = copy_thread_data->hwc_window->ec)) goto end;
    if (!e_client_cdata_get(ec)) goto end;
 
-   if ((!evas_object_visible_get(ec->frame)) &&
+   if ((!e_view_client_visible_get(e_client_view_get(ec))) &&
        (ec->exp_iconify.buffer_flush) &&
        (e_policy_visibility_client_is_iconic(ec)))
      goto end;
@@ -1367,9 +1368,9 @@ _e_hwc_window_queue_copy_thread_run_end_cb(void *data, Ecore_Thread *thread)
 
    e_comp_wl_surface_attach(ec, copy_comp_buffer);
    e_pixmap_image_refresh(ec->pixmap);
-   e_comp_object_damage(ec->frame, 0, 0, ec->w, ec->h);
-   e_comp_object_dirty(ec->frame);
-   e_comp_object_render(ec->frame);
+   e_view_client_damage(e_client_view_get(ec), 0, 0, ec->w, ec->h);
+   e_view_client_dirty(e_client_view_get(ec));
+   e_view_client_render(e_client_view_get(ec));
 
    if (!comp_buffer)
      e_comp_wl_surface_attach(ec, NULL);
@@ -1568,7 +1569,7 @@ _e_hwc_window_queue_prepare_unset(E_Hwc_Window_Queue *queue)
 
    if (!hwc_window->ec) return;
 
-   if ((!evas_object_visible_get(hwc_window->ec->frame)) &&
+   if ((!e_view_client_visible_get(e_client_view_get(hwc_window->ec))) &&
        (hwc_window->ec->exp_iconify.buffer_flush) &&
        (e_policy_visibility_client_is_iconic(hwc_window->ec)))
      return;
index 5155682..820bb12 100644 (file)
 #include "e_egl_sync_intern.h"
 #include "e_client_video_intern.h"
 #include "e_client_intern.h"
-#include "e_comp_object_intern.h"
 #include "e_utils_intern.h"
 #include "services/e_service_quickpanel_intern.h"
 #include "e_policy_private_data.h"
 #include "e_policy_intern.h"
 #include "e_display_intern.h"
+#include "e_view_intern.h"
+#include "e_view_client_intern.h"
 
 # include <Evas_Engine_GL_Tbm.h>
 # include <Evas_Engine_Software_Tbm.h>
@@ -979,7 +980,7 @@ _e_hwc_windows_visible_windows_list_get(E_Hwc *hwc)
 
         e_client_geometry_get(ec, &x, &y, &w, &h);
 
-        if ((!effect_client) && (!e_comp_object_color_visible_get(ec->frame)))
+        if ((!effect_client) && (!e_view_client_color_visible_get(e_client_view_get(ec))))
           {
              e_hwc_window_state_set(hwc_window, E_HWC_WINDOW_STATE_NONE, EINA_TRUE);
 
@@ -3729,6 +3730,7 @@ _e_hwc_windows_window_debug_info_get(Eldbus_Message_Iter *iter, E_Hwc_Wins_Debug
    Eina_Bool vis_skip = EINA_FALSE;
    E_Hwc_Window_Update_Data *update;
    int pending_idx;
+   E_View *view;
 
 
    eldbus_message_iter_arguments_append(iter, "as", &line_array);
@@ -3781,7 +3783,8 @@ _e_hwc_windows_window_debug_info_get(Eldbus_Message_Iter *iter, E_Hwc_Wins_Debug
 
              if (hwc_window->ec)
                {
-                  if ((hwc_window->ec->hwc_visible_skip) || (evas_object_data_get(hwc_window->ec->frame, "comp_skip")))
+                  view = e_view_client_view_get(e_client_view_get(hwc_window->ec));
+                  if ((hwc_window->ec->hwc_visible_skip) || (e_view_data_get(view, "comp_skip")))
                     vis_skip = EINA_TRUE;
                }
 
index 237bfdf..cd21a80 100644 (file)
@@ -15,6 +15,7 @@
 #include "e_zone_intern.h"
 #include "e_video_debug_intern.h"
 #include "e_display_intern.h"
+#include "e_view_client_intern.h"
 
 #include <device/board-internal.h>
 
@@ -202,8 +203,8 @@ _e_output_top_visible_ec_get()
         if (ec->iconic) continue;
         if (ec->visible == 0) continue;
         if (!(e_client_visibility_get(ec) == 0 || e_client_visibility_get(ec) == 1)) continue;
-        if (!ec->frame) continue;
-        if (!evas_object_visible_get(ec->frame)) continue;
+        if (!e_client_view_get(ec)) continue;
+        if (!e_view_client_visible_get(e_client_view_get(ec))) continue;
         if (e_comp_wl_subsurface_check(ec)) continue;
 
         return ec;
@@ -478,7 +479,7 @@ _e_output_animating_check()
      {
         if (ec->visible && !ec->input_only)
           {
-             if (e_comp_object_is_animating(ec->frame))
+             if (e_view_client_is_animating(e_client_view_get(ec)))
                return EINA_TRUE;
           }
      }
@@ -497,7 +498,7 @@ _e_output_render_update(E_Output *output)
    E_CLIENT_FOREACH(ec)
      {
         if (ec->visible && !ec->input_only)
-          e_comp_object_damage(ec->frame, 0, 0, ec->w, ec->h);
+          e_view_client_damage(e_client_view_get(ec), 0, 0, ec->w, ec->h);
      }
 
    e_output_render(output);
@@ -654,10 +655,10 @@ _e_output_visible_client_check(E_Output *output)
           {
               if (e_object_is_del(E_OBJECT(ec))) continue;
               if (e_client_util_ignored_get(ec)) continue;
-              if (!ec->frame) continue;
+              if (!e_client_view_get(ec)) continue;
               if (ec->is_cursor) continue;
               if (!ec->visible) continue;
-              if (!evas_object_visible_get(ec->frame)) continue;
+              if (!e_view_client_visible_get(e_client_view_get(ec))) continue;
               if (e_comp_wl_subsurface_check(ec)) continue;
               cdata = e_client_cdata_get(ec);
               if (cdata && !cdata->mapped) continue;
index 9a3cc8e..5c140bf 100644 (file)
@@ -5,8 +5,8 @@
 #include "e_output_intern.h"
 #include "e_comp_wl_video_buffer_intern.h"
 #include "e_client_intern.h"
-#include "e_comp_object_intern.h"
 #include "e_utils_intern.h"
+#include "e_view_client_intern.h"
 
 #include <device/board-internal.h>
 # include <tdm.h>
@@ -447,7 +447,7 @@ _e_plane_surface_cancel_acquire(E_Plane *plane, tbm_surface_h tsurface)
           ERR("fail to e_plane_renderer_surface_queue_cancel_acquire");
      }
 
-   if (ec) e_comp_object_hwc_update_set(ec->frame, EINA_TRUE);
+   if (ec) e_view_client_hwc_update_set(e_client_view_get(ec), true);
 
    return;
 }
@@ -467,9 +467,9 @@ _e_plane_surface_from_client_acquire_reserved(E_Plane *plane)
    if (!e_plane_renderer_surface_queue_clear(renderer))
      ERR("fail to e_plane_renderer_surface_queue_clear");
 
-   if (e_comp_object_hwc_update_exists(ec->frame))
+   if (e_view_client_hwc_update_exists(e_client_view_get(ec)))
      {
-        e_comp_object_hwc_update_set(ec->frame, EINA_FALSE);
+        e_view_client_hwc_update_set(e_client_view_get(ec), false);
 
         if (plane_trace_debug)
           ELOGF("E_PLANE", "Display Plane(%p) zpos(%d)   Client ec(%p, %s)",
@@ -507,13 +507,13 @@ _e_plane_surface_from_client_acquire(E_Plane *plane)
 
    if (!buffer) return NULL;
 
-   if (!e_comp_object_hwc_update_exists(ec->frame)) return NULL;
+   if (!e_view_client_hwc_update_exists(e_client_view_get(ec))) return NULL;
 
    if (plane_trace_debug)
      ELOGF("E_PLANE", "Display Plane(%p) zpos(%d)   Client ec(%p, %s)",
            ec, plane, plane->zpos, ec, e_client_util_name_get(ec));
 
-   e_comp_object_hwc_update_set(ec->frame, EINA_FALSE);
+   e_view_client_hwc_update_set(e_client_view_get(ec), false);
 
    if (plane->is_fb)
      {
@@ -557,13 +557,13 @@ _e_plane_cursor_surface_acquire(E_Plane *plane)
    buffer = cdata->buffer_ref.buffer;
    if (!buffer) return NULL;
 
-   if (!e_comp_object_hwc_update_exists(ec->frame)) return NULL;
+   if (!e_view_client_hwc_update_exists(e_client_view_get(ec))) return NULL;
 
    if (plane_trace_debug)
      ELOGF("E_PLANE", "Display Cursor Plane(%p) zpos(%d)   ec(%p)",
            ec, plane, plane->zpos, ec);
 
-   e_comp_object_hwc_update_set(ec->frame, EINA_FALSE);
+   e_view_client_hwc_update_set(e_client_view_get(ec), false);
 
    if (!e_plane_renderer_cursor_surface_refresh(renderer, ec))
      {
@@ -851,7 +851,7 @@ _e_plane_unset_candidate_set(E_Plane *plane, Eina_Bool sync)
 
              EINA_SAFETY_ON_NULL_RETURN(renderer);
 
-             visible = evas_object_visible_get(plane->ec->frame);
+             visible = e_view_client_visible_get(e_client_view_get(plane->ec));
 
              plane->unset_counter = e_plane_renderer_render_count_get(fb_target->renderer);
 
@@ -2901,7 +2901,7 @@ e_plane_ec_set(E_Plane *plane, E_Client *ec)
 
         _e_plane_set_counter_set(plane, ec);
 
-        e_comp_object_hwc_update_set(ec->frame, EINA_TRUE);
+        e_view_client_hwc_update_set(e_client_view_get(ec), true);
 
         if (plane->ec_redirected)
           {
@@ -2936,7 +2936,7 @@ e_plane_ec_set(E_Plane *plane, E_Client *ec)
          *    the plane at the e_output_commit.
          */
         if (!plane->is_fb && plane->ec && plane->set_counter &&
-            evas_object_visible_get(plane->ec->frame))
+            e_view_client_visible_get(e_client_view_get(plane->ec)))
           {
              if (!plane->unset_ec_pending)
                {
index 01efb3e..cb2c0ba 100644 (file)
@@ -11,6 +11,7 @@
 #include "e_video_debug_intern.h"
 #include "e_client_intern.h"
 #include "e_compositor_intern.h"
+#include "e_view_client_intern.h"
 
 #include <wayland-tbm-server.h>
 
    E_Video_Hwc *evh;                                    \
    evh = container_of(iface, E_Video_Hwc, iface)
 
+typedef struct
+{
+   int x;
+   int y;
+} E_Video_Point;
+
 static Eina_Bool _e_video_hwc_render(E_Video_Hwc *evh, const char *func);
 static void _e_video_hwc_buffer_show(E_Video_Hwc *evh, E_Comp_Wl_Video_Buf *vbuf, unsigned int transform);
 static void _e_video_hwc_buffer_commit(E_Video_Hwc *evh, E_Comp_Wl_Video_Buf *vbuf);
@@ -59,6 +66,7 @@ static Eina_Bool
 _e_video_hwc_client_visible_get(E_Client *ec)
 {
    E_Client *offscreen_parent;
+   E_View_Client* view_client;
 
    if (!e_pixmap_resource_get(ec->pixmap))
      {
@@ -77,13 +85,12 @@ _e_video_hwc_client_visible_get(E_Client *ec)
         return EINA_FALSE;
      }
 
-   if (!evas_object_visible_get(ec->frame))
-     {
-        VDB("evas obj invisible", ec);
-        return EINA_FALSE;
-     }
+   view_client = e_client_view_get(ec);
+   if (view_client && e_view_client_visible_get(view_client))
+      return EINA_TRUE;
 
-   return EINA_TRUE;
+   VDB("view invisible", ec);
+   return EINA_FALSE;
 }
 
 /* Video Buffer implementation */
@@ -810,14 +817,14 @@ _screen_rect_get(E_Zone *zone, enum wl_output_transform transform)
 }
 
 static void
-_point_translate(Evas_Point *point, int x_axis, int y_axis)
+_point_translate(E_Video_Point *point, int x_axis, int y_axis)
 {
    point->x -= x_axis;
    point->y -= y_axis;
 }
 
 static void
-_rect_to_points(Eina_Rectangle *rect, Evas_Point points[2])
+_rect_to_points(Eina_Rectangle *rect, E_Video_Point points[2])
 {
    points[0].x = rect->x;
    points[0].y = rect->y;
@@ -826,7 +833,7 @@ _rect_to_points(Eina_Rectangle *rect, Evas_Point points[2])
 }
 
 static void
-_points_to_rect(Evas_Point points[2], Eina_Rectangle *rect)
+_points_to_rect(E_Video_Point points[2], Eina_Rectangle *rect)
 {
    rect->x = MIN(points[0].x, points[1].x);
    rect->y = MIN(points[0].y, points[1].y);
@@ -897,7 +904,7 @@ _e_video_hwc_viewport_crop_by_screen(E_Video_Hwc_Geometry *in_out, E_Zone *zone,
 {
    Eina_Rectangle *output_rect, *buffer_rect;
    Eina_Rectangle cropped_output_rect, screen_rect;
-   Evas_Point points[2];
+   E_Video_Point points[2];
 
    buffer_rect = &in_out->input_r;
    output_rect = &in_out->tdm.output_r;
@@ -1085,7 +1092,7 @@ normal:
     (r)->h = MAX(vs[0].y, vs[2].y) - (r)->y
 
 static Eina_Bool
-_e_video_hwc_coords_to_rectangle_convert(Evas_Point p[4], Eina_Rectangle *rect, uint *transform)
+_e_video_hwc_coords_to_rectangle_convert(E_Video_Point p[4], Eina_Rectangle *rect, uint *transform)
 {
    Eina_Rectangle boundary = {0,};
    Eina_Bool ret = EINA_FALSE;
@@ -1157,13 +1164,13 @@ static Eina_Bool
 _e_video_hwc_geometry_map_apply(E_Client *ec, E_Video_Hwc_Geometry *out)
 {
    E_Map *m;
-   Evas_Point p[4];
+   E_Video_Point p[4];
    Eina_Rectangle output_r;
    uint transform;
    int i;
 
    EINA_SAFETY_ON_NULL_RETURN_VAL(ec, EINA_FALSE);
-   EINA_SAFETY_ON_NULL_RETURN_VAL(ec->frame, EINA_FALSE);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(e_client_view_get(ec), EINA_FALSE);
    EINA_SAFETY_ON_NULL_RETURN_VAL(out, EINA_FALSE);
 
    m = e_client_map_get(ec);
@@ -1186,8 +1193,8 @@ _e_video_hwc_geometry_map_apply(E_Client *ec, E_Video_Hwc_Geometry *out)
         return EINA_FALSE;
      }
 
-   /* NOTE Merge transform value from evas_map with E_Comp_Wl_Buffer_Viewport's one.
-    * Since buffer.transform isn't applied using evas_map,
+   /* NOTE Merge transform value from E_Comp_Wl_Buffer_Viewport's one.
+    * Since buffer.transform isn't applied,
     * it has to be taken into account here to apply buffer.transform
     * and rotation of e_client_transform together. */
    transform =
@@ -1272,23 +1279,25 @@ _e_video_hwc_render_queue(E_Video_Hwc *evh)
 }
 
 static void
-_e_video_hwc_cb_evas_resize(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED)
+_e_video_hwc_cb_resize(struct wl_listener *listener, void *data)
 {
-   E_Video_Hwc *evh = data;
+   E_Video_Hwc *evh = wl_container_of(listener, evh, resize_listener);
+   E_View_Client* view_client = e_client_view_get(evh->ec);
 
    /* Since video content will be displayed on the overlay plane,
     * it's reasonable to keep the size of composite object to 1x1.
     * Otherwise, it will cause memory usage to be increased unnecessarily. */
-   evas_object_resize(evh->ec->frame, 1, 1);
+   if (view_client)
+     e_view_client_size_set(view_client, 1, 1);
 
    evh->render.map = EINA_TRUE;
    _e_video_hwc_render_queue(evh);
 }
 
 static void
-_e_video_hwc_cb_evas_move(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
+_e_video_hwc_cb_move(struct wl_listener *listener, void *data)
 {
-   E_Video_Hwc *evh = data;
+   E_Video_Hwc *evh = wl_container_of(listener, evh, move_listener);
 
    evh->render.map = EINA_TRUE;
    _e_video_hwc_render_queue(evh);
@@ -1472,8 +1481,8 @@ _e_video_hwc_geometry_output_rect_get(E_Client *ec, Eina_Rectangle *out)
    out->w = (out->w + 1) & ~1;
    out->h = ec->comp_data->height_from_viewport;
 
-   e_comp_object_frame_xy_unadjust(ec->frame, out->x, out->y, &out->x, &out->y);
-   e_comp_object_frame_wh_unadjust(ec->frame, out->w, out->h, &out->w, &out->h);
+   e_view_client_frame_xy_unadjust(e_client_view_get(ec), out->x, out->y, &out->x, &out->y);
+   e_view_client_frame_wh_unadjust(e_client_view_get(ec), out->w, out->h, &out->w, &out->h);
 }
 
 /* convert from logical screen to physical output */
@@ -1747,12 +1756,12 @@ _e_video_hwc_cb_client_buffer_change(void *data, int type, void *event)
 }
 
 static void
-_e_video_hwc_cb_evas_show(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
+_e_video_hwc_cb_show(struct wl_listener *listener, void *data)
 {
    E_Video_Hwc *evh;
    E_Client *ec;
 
-   evh = data;
+   evh = wl_container_of(listener, evh, show_listener);
    ec = evh->ec;
 
    if (evh->need_force_render)
@@ -1786,6 +1795,7 @@ _e_video_hwc_cb_surface_viewport(struct wl_listener *listener, void *data)
 static void
 _e_video_hwc_client_event_init(E_Video_Hwc *evh)
 {
+   E_View_Client* view_client;
    /* In order to try to redraw video whenever viewport changes. */
    evh->surface_viewport_listener.notify = _e_video_hwc_cb_surface_viewport;
    if (evh->ec->comp_data)
@@ -1794,12 +1804,18 @@ _e_video_hwc_client_event_init(E_Video_Hwc *evh)
                       &evh->surface_viewport_listener);
      }
 
-   evas_object_event_callback_add(evh->ec->frame, EVAS_CALLBACK_SHOW,
-                                  _e_video_hwc_cb_evas_show, evh);
-   evas_object_event_callback_add(evh->ec->frame, EVAS_CALLBACK_RESIZE,
-                                  _e_video_hwc_cb_evas_resize, evh);
-   evas_object_event_callback_add(evh->ec->frame, EVAS_CALLBACK_MOVE,
-                                  _e_video_hwc_cb_evas_move, evh);
+   view_client = e_client_view_get(evh->ec);
+   if (view_client)
+     {
+        E_View *view = e_view_client_view_get(view_client);
+        evh->show_listener.notify = _e_video_hwc_cb_show;
+        evh->resize_listener.notify = _e_video_hwc_cb_resize;
+        evh->move_listener.notify = _e_video_hwc_cb_move;
+
+        e_view_event_listener_add(view, E_VIEW_SHOW, &evh->show_listener);
+        e_view_event_listener_add(view, E_VIEW_RESIZE, &evh->resize_listener);
+        e_view_event_listener_add(view, E_VIEW_MOVE, &evh->move_listener);
+     }
 
    E_LIST_HANDLER_APPEND(evh->ec_event_handler, E_EVENT_CLIENT_SHOW,
                          _e_video_hwc_cb_client_show, evh);
@@ -1810,16 +1826,23 @@ _e_video_hwc_client_event_init(E_Video_Hwc *evh)
 static void
 _e_video_hwc_client_event_deinit(E_Video_Hwc *evh)
 {
+   E_View_Client* view_client;
    /* links for listener have to be removed only in case comp_data is valid. */
    if (evh->ec->comp_data)
      wl_list_remove(&evh->surface_viewport_listener.link);
 
-   evas_object_event_callback_del_full(evh->ec->frame, EVAS_CALLBACK_SHOW,
-                                       _e_video_hwc_cb_evas_show, evh);
-   evas_object_event_callback_del_full(evh->ec->frame, EVAS_CALLBACK_RESIZE,
-                                       _e_video_hwc_cb_evas_resize, evh);
-   evas_object_event_callback_del_full(evh->ec->frame, EVAS_CALLBACK_MOVE,
-                                       _e_video_hwc_cb_evas_move, evh);
+   view_client = e_client_view_get(evh->ec);
+   if (view_client)
+     {
+        E_View *view = e_view_client_view_get(view_client);
+        e_view_event_listener_del(view, E_VIEW_SHOW, &evh->show_listener);
+        e_view_event_listener_del(view, E_VIEW_RESIZE, &evh->resize_listener);
+        e_view_event_listener_del(view, E_VIEW_MOVE, &evh->move_listener);
+
+        evh->show_listener.notify = NULL;
+        evh->resize_listener.notify = NULL;
+        evh->move_listener.notify = NULL;
+     }
 
    E_FREE_LIST(evh->ec_event_handler, ecore_event_handler_del);
 }
@@ -1854,8 +1877,8 @@ _e_video_hwc_iface_destroy(E_Video_Comp_Iface *iface)
    /* destroy converter second */
    E_FREE_FUNC(evh->pp, _e_video_hwc_pp_destroy);
 
-   if (e_comp_object_mask_has(evh->ec->frame))
-     e_comp_object_mask_set(evh->ec->frame, EINA_FALSE);
+   if (e_view_client_mask_has(e_client_view_get(evh->ec)))
+     e_view_client_mask_set(e_client_view_get(evh->ec), EINA_FALSE);
 
    _e_video_hwc_client_event_deinit(evh);
 
@@ -1941,6 +1964,7 @@ _e_video_hwc_create(E_Client *ec)
    E_Hwc_Policy hwc_policy;
    E_Output *output;
    E_Zone *zone;
+   E_View_Client* view_client;
 
    zone = e_comp_zone_find_by_ec(ec);
    EINA_SAFETY_ON_NULL_RETURN_VAL(zone, NULL);
@@ -1972,7 +1996,9 @@ _e_video_hwc_create(E_Client *ec)
    /* Since video content will be displayed on the overlay plane,
     * it's reasonable to keep the size of composite object to 1x1.
     * Otherwise, it will cause memory usage to be increased unnecessarily. */
-   evas_object_resize(ec->frame, 1, 1);
+   view_client = e_client_view_get(ec);
+   if (view_client)
+     e_view_client_size_set(view_client, 1, 1);
 
    evh->hwc_policy = hwc_policy;
    evh->e_output = output;
@@ -2071,17 +2097,17 @@ e_video_hwc_client_mask_update(E_Video_Hwc *evh)
 
    if (punch)
      {
-        if (!e_comp_object_mask_has(evh->ec->frame))
+        if (!e_view_client_mask_has(e_client_view_get(evh->ec)))
           {
-             e_comp_object_mask_set(evh->ec->frame, EINA_TRUE);
+             e_view_client_mask_set(e_client_view_get(evh->ec), true);
              VIN("punched", evh->ec);
           }
      }
    else
      {
-        if (e_comp_object_mask_has(evh->ec->frame))
+        if (e_view_client_mask_has(e_client_view_get(evh->ec)))
           {
-             e_comp_object_mask_set(evh->ec->frame, EINA_FALSE);
+             e_view_client_mask_set(e_client_view_get(evh->ec), false);
              VIN("Un-punched", evh->ec);
           }
      }
index 482b41e..bcef610 100644 (file)
@@ -113,6 +113,9 @@ struct _E_Video_Hwc
 
    Eina_Bool  need_force_render;
    Eina_Bool  deleted;
+   struct wl_listener show_listener;
+   struct wl_listener resize_listener;
+   struct wl_listener move_listener;
 };
 
 /* For HWC interface */
index 9f08360..a5406a3 100644 (file)
@@ -4,6 +4,7 @@
 #include "e_comp_wl_subsurface_intern.h"
 #include "e_comp_wl_video_buffer_intern.h"
 #include "e_video_debug_intern.h"
+#include "e_view_client_intern.h"
 
 #include <tdm.h>
 #include <tdm_helper.h>
@@ -36,6 +37,7 @@ struct _E_Video_Hwc_Planes
         Eina_Bool commit;
         Eina_Bool vblank;
      } wait_flag;
+   struct wl_listener hide_listener;
 };
 
 typedef struct _Tdm_Prop_Value
@@ -642,16 +644,16 @@ _e_video_hwc_planes_tdm_layer_unset(E_Video_Hwc_Planes *evhp)
 }
 
 static void
-_e_video_hwc_planes_cb_evas_hide(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
+_e_video_hwc_planes_cb_hide(struct wl_listener *listener, void *data)
 {
-   E_Video_Hwc_Planes *evhp = data;
+   E_Video_Hwc_Planes *evhp = wl_container_of(listener, evhp, hide_listener);
 
    /* if stand_alone is true, not hide */
    if ((e_comp_wl_subsurface_check(evhp->base.ec)) &&
        (e_comp_wl_subsurface_stand_alone_mode_get(evhp->base.ec)))
      return;
 
-   VIN("evas hide", evhp->base.ec);
+   VIN("e_client hide", evhp->base.ec);
    if (evhp->tdm.layer)
      {
         VIN("unset layer: hide", evhp->base.ec);
@@ -739,12 +741,13 @@ _e_video_hwc_planes_destroy(E_Video_Hwc_Planes *evhp)
 static void
 _e_video_hwc_planes_ec_event_deinit(E_Video_Hwc_Planes *evhp)
 {
-   E_Client *ec;
+   E_View_Client* view_client = e_client_view_get(evhp->base.ec);
 
-   ec = evhp->base.ec;
-
-   evas_object_event_callback_del_full(ec->frame, EVAS_CALLBACK_HIDE,
-                                       _e_video_hwc_planes_cb_evas_hide, evhp);
+   if (view_client)
+     {
+        e_view_event_listener_del(e_view_client_view_get(view_client), E_VIEW_HIDE, &evhp->hide_listener);
+        evhp->hide_listener.notify = NULL;
+     }
 }
 
 const char *
@@ -827,8 +830,13 @@ _e_video_hwc_planes_property_save(E_Video_Hwc_Planes *evhp, unsigned int id, con
 static void
 _e_video_hwc_planes_ec_event_init(E_Video_Hwc_Planes *evhp, E_Client *ec)
 {
-   evas_object_event_callback_add(ec->frame, EVAS_CALLBACK_HIDE,
-                                  _e_video_hwc_planes_cb_evas_hide, evhp);
+   E_View_Client* view_client = e_client_view_get(ec);
+
+   if (view_client)
+     {
+        evhp->hide_listener.notify = _e_video_hwc_planes_cb_hide;
+        e_view_event_listener_add(e_view_client_view_get(view_client), E_VIEW_HIDE, &evhp->hide_listener);
+     }
 }
 
 static void
index 099ad85..f4e036f 100644 (file)
@@ -162,7 +162,7 @@ _e_comp_screen_cb_input_device_add(void *data, int type, void *event)
      {
         if (comp->wl_comp_data->ptr.num_devices == 0)
           {
-             e_pointer_object_set(comp->pointer, NULL, 0, 0);
+             e_pointer_view_set(comp->pointer, NULL, 0, 0);
              e_comp_wl_input_pointer_enabled_set(EINA_TRUE);
           }
         comp->wl_comp_data->ptr.num_devices++;
@@ -235,7 +235,7 @@ _e_comp_screen_cb_input_device_del(void *data, int type, void *event)
         if (comp->wl_comp_data->ptr.num_devices == 0)
           {
              e_comp_wl_input_pointer_enabled_set(EINA_FALSE);
-             e_pointer_object_set(comp->pointer, NULL, 0, 0);
+             e_pointer_view_set(comp->pointer, NULL, 0, 0);
              e_pointer_hide(e_comp->pointer);
 
              _e_comp_screen_pointer_renew();
index d841083..89b3e6c 100644 (file)
@@ -1,6 +1,8 @@
 #include "e_blender_intern.h"
 #include "e_client_intern.h"
 #include "e_comp_object_intern.h"
+#include "e_view_client_intern.h"
+#include "e_view_intern.h"
 
 #include <libds-tizen/blender.h>
 
@@ -35,12 +37,20 @@ static void _e_blend_ec_set(E_Blend *blend, E_Client *ec);
 static void
 _e_blend_free(E_Blend *blend)
 {
+   E_Client *ec;
+   E_View_Client *view_client;
+
    ELOGF("E_BLENDER", "E_Blend:%p Free", blend->ec, blend);
 
-   if (blend->ec)
+   ec = blend->ec;
+   if (ec)
      {
-        e_comp_object_render_op_set(blend->ec->frame, EVAS_RENDER_BLEND);
-        evas_object_color_set(blend->ec->frame, 255, 255, 255, 255);
+        view_client = e_client_view_get(ec);
+        if (view_client)
+          {
+             e_view_client_render_op_set(view_client, E_VIEW_RENDER_BLEND);
+             e_view_color_set(e_view_client_view_get(view_client), 255, 255, 255, 255);
+          }
      }
 
    _e_blend_ec_set(blend, NULL);
@@ -52,30 +62,40 @@ static void
 _e_blend_cb_ds_tizen_blend_commit(struct wl_listener *listener, void *data)
 {
    E_Blend *blend;
+   E_Client *ec;
+   E_View_Client *view_client;
+   E_View *view;
    struct ds_tizen_blend_state *state;
    int a, r, g, b;
 
    blend = container_of(listener, E_Blend, commit_listener);
    if (!blend->ec) return;
 
+   ec = blend->ec;
+   view_client = e_client_view_get(ec);
+   if (!view_client) return;
+
+   view = e_view_client_view_get(view_client);
+   if (!view) return;
+
    state = ds_tizen_blend_get_state(blend->tizen_blend);
    if (!state) return;
 
    blend->alpha = state->alpha;
    blend->equation = state->equation;
 
-   if (!blend->ec->argb) return;
+   if (!ec->argb) return;
 
    a = r = g = b = 255;
    a = (int)((blend->alpha / (double)0xffffffff) * a);
-   evas_color_argb_premul(a, &r, &g, &b);
+   evas_color_argb_premul(a, &r, &g, &b); //TODO: FIXME: fix this with view
 
-   evas_object_color_set(blend->ec->frame, r, g, b, a);
+   e_view_color_set(view, r, g, b, a);
 
    if (blend->equation == DS_TIZEN_BLEND_EQUATION_PREMULTIPLIED)
-     e_comp_object_render_op_set(blend->ec->frame, EVAS_RENDER_BLEND);
+     e_view_client_render_op_set(view_client, E_VIEW_RENDER_BLEND);
    else if (blend->equation == DS_TIZEN_BLEND_EQUATION_NONE)
-     e_comp_object_render_op_set(blend->ec->frame, EVAS_RENDER_COPY);
+     e_view_client_render_op_set(view_client, E_VIEW_RENDER_COPY);
 }
 
 static void
index 6d331d9..a2df067 100644 (file)
@@ -42,6 +42,7 @@
 #include "e_input_thread_client_intern.h"
 #include "e_display_intern.h"
 #include "e_devicemgr_wl_intern.h"
+#include "e_view_client_intern.h"
 
 #include <tizen-extension-server-protocol.h>
 #include <relative-pointer-unstable-v1-server-protocol.h>
@@ -264,7 +265,7 @@ _e_comp_wl_configure_send(E_Client *ec, Eina_Bool edges, Eina_Bool send_size)
 
    if (send_size)
      {
-        if (e_comp_object_frame_exists(ec->frame))
+        if (e_view_client_frame_exists(e_client_view_get(ec)))
           w = ec->client.w, h = ec->client.h;
         else
           w = ec->w, h = ec->h;
@@ -566,7 +567,7 @@ e_comp_wl_map_apply(E_Client *ec)
 
    if (!ec || !ec->comp_data || e_object_is_del(E_OBJECT(ec))) return;
 
-   e_comp_object_map_update(ec->frame);
+   e_view_client_map_update(e_client_view_get(ec));
 
    cdata = ec->comp_data;
    vp = &cdata->scaler.buffer_viewport;
@@ -598,7 +599,7 @@ e_comp_wl_map_apply(E_Client *ec)
                }
           }
 
-        evas_object_geometry_get(ec->frame, &x, &y, NULL, NULL);
+        e_view_client_geometry_get(e_client_view_get(ec), &x, &y, NULL, NULL);
         if (x != dx || y != dy)
           e_subsurface_view_position_set(subsurface, dx, dy);
      }
@@ -607,9 +608,9 @@ e_comp_wl_map_apply(E_Client *ec)
         dx = ec->x;
         dy = ec->y;
 
-        evas_object_geometry_get(ec->frame, &x, &y, NULL, NULL);
+        e_view_client_geometry_get(e_client_view_get(ec), &x, &y, NULL, NULL);
         if (x != dx || y != dy)
-          evas_object_move(ec->frame, dx, dy);
+          e_view_position_set(e_view_client_view_get(e_client_view_get(ec)), dx, dy);
      }
 
    if (!cdata->viewport_transform)
@@ -729,11 +730,11 @@ _e_comp_wl_evas_cb_show(void *data, Evas *evas EINA_UNUSED, Evas_Object *obj EIN
      {
         if ((ec->hidden) || (ec->iconic))
           {
-             evas_object_hide(ec->frame);
+             e_view_client_hide(e_client_view_get(ec));
 //             e_comp_object_damage(ec->frame, 0, 0, ec->w, ec->h);
           }
         else
-          evas_object_show(ec->frame);
+          e_view_client_show(e_client_view_get(ec));
      }
 
    topmost = e_comp_wl_topmost_parent_get(ec);
@@ -1054,9 +1055,9 @@ _e_comp_wl_cursor_reload(E_Client *ec)
    uint32_t serial;
    int cx, cy, px, py;
 
-   if (e_comp->pointer && e_comp->pointer->o_ptr &&
-       !evas_object_visible_get(e_comp->pointer->o_ptr))
-     e_pointer_object_set(e_comp->pointer, NULL, 0, 0);
+   if (e_comp->pointer && e_comp->pointer->view_client &&
+       !e_view_client_visible_get(e_comp->pointer->view_client))
+     e_pointer_view_set(e_comp->pointer, NULL, 0, 0);
 
    if (!ec) return;
    if (e_object_is_del(E_OBJECT(ec))) return;
@@ -2566,20 +2567,20 @@ _e_comp_wl_surface_state_size_update(E_Client *ec, E_Comp_Wl_Surface_State *stat
         ec->changes.buf_size = EINA_TRUE;
      }
 
-   if (e_comp_object_frame_exists(ec->frame)) return;
+   if (e_view_client_frame_exists(e_client_view_get(ec))) return;
    window = &ec->comp_data->shell.window;
    if ((!ec->borderless) && /* FIXME temporarily added this check code
                              * to prevent updating E_Client's size by frame */
        (window->x || window->y || window->w || window->h))
      {
-        e_comp_object_frame_geometry_set(ec->frame,
+        e_view_client_frame_geometry_set(e_client_view_get(ec),
                                          -window->x,
                                          (window->x + window->w) - state->bw,
                                          -window->y,
                                          (window->y + window->h) - state->bh);
      }
    else
-     e_comp_object_frame_geometry_set(ec->frame, 0, 0, 0, 0);
+     e_view_client_frame_geometry_set(e_client_view_get(ec), 0, 0, 0, 0);
 }
 
 static void
@@ -2768,7 +2769,7 @@ _e_comp_wl_surface_state_commit(E_Client *ec, E_Comp_Wl_Surface_State *state)
         /* update the position */
         if (ec->changes.pos)
           {
-             e_comp_object_frame_xy_unadjust(ec->frame,
+             e_view_client_frame_xy_unadjust(e_client_view_get(ec),
                                              ec->x, ec->y,
                                              &x, &y);
           }
@@ -2788,7 +2789,7 @@ _e_comp_wl_surface_state_commit(E_Client *ec, E_Comp_Wl_Surface_State *state)
              ec->client.w = state->bw;
              ec->client.h = state->bh;
 
-             e_comp_object_frame_wh_adjust(ec->frame,
+             e_view_client_frame_wh_adjust(e_client_view_get(ec),
                                            ec->client.w, ec->client.h,
                                            &nw, &nh);
              e_client_size_set(ec, nw, nh);
@@ -2894,7 +2895,7 @@ _e_comp_wl_surface_state_commit(E_Client *ec, E_Comp_Wl_Surface_State *state)
    buffer = e_surface_buffer_try_get(surface);
 
    /* put state damages into surface */
-   if (ec->frame)
+   if (e_client_view_get(ec))
      {
         /* FIXME: workaround for bad wayland egl driver which doesn't send damage request */
         if (!eina_list_count(state->damages) && !eina_list_count(state->buffer_damages))
@@ -2907,7 +2908,7 @@ _e_comp_wl_surface_state_commit(E_Client *ec, E_Comp_Wl_Surface_State *state)
                   int32_t bw, bh;
 
                   e_comp_wl_buffer_size_get(comp_buffer, &bw, &bh);
-                  e_comp_object_damage(ec->frame, 0, 0, bw, bh);
+                  e_view_client_damage(e_client_view_get(ec), 0, 0, bw, bh);
                }
           }
         else
@@ -2945,7 +2946,7 @@ _e_comp_wl_surface_state_commit(E_Client *ec, E_Comp_Wl_Surface_State *state)
                   if (state->buffer_viewport.changed ||
                       !e_comp->wl_comp_data->available_hw_accel.underlay ||
                       !buffer || buffer->type != E_COMP_WL_BUFFER_TYPE_VIDEO)
-                    e_comp_object_damage(ec->frame, dmg->x, dmg->y, dmg->w, dmg->h);
+                    e_view_client_damage(e_client_view_get(ec), dmg->x, dmg->y, dmg->w, dmg->h);
 
                   eina_rectangle_free(dmg);
                }
@@ -2993,14 +2994,14 @@ _e_comp_wl_surface_state_commit(E_Client *ec, E_Comp_Wl_Surface_State *state)
              Eina_Rectangle *rect;
              Eina_Iterator *itr;
 
-             e_comp_object_input_objs_del(ec->frame);
+             e_view_client_input_objs_del(e_client_view_get(ec));
              itr = eina_tiler_iterator_new(src);
              EINA_ITERATOR_FOREACH(itr, rect)
                {
                   ELOGF("COMP", "Set Input Area x:%d, y:%d, w:%d, h:%d, ec(%dx%d), state(%dx%d)",
                         ec, rect->x, rect->y, rect->w, rect->h,
                         ec->w, ec->h, state->bw, state->bh);
-                  e_comp_object_input_area_set(ec->frame,
+                  e_view_client_input_area_set(e_client_view_get(ec),
                                                rect->x, rect->y,
                                                rect->w, rect->h);
                }
@@ -3009,7 +3010,7 @@ _e_comp_wl_surface_state_commit(E_Client *ec, E_Comp_Wl_Surface_State *state)
              eina_tiler_free(src);
           }
         else
-          e_comp_object_input_area_set(ec->frame, 0, 0, ec->w, ec->h);
+          e_view_client_input_area_set(e_client_view_get(ec), 0, 0, ec->w, ec->h);
 
         eina_tiler_free(tmp);
 
@@ -3047,11 +3048,11 @@ _e_comp_wl_surface_render_stop(E_Client *ec)
      ec->dead = 1;
 
    /* check if internal animation is running */
-   if (e_comp_object_is_animating(ec->frame)) return;
+   if (e_view_client_is_animating(e_client_view_get(ec))) return;
    /* check if external animation is running */
-   if (evas_object_data_get(ec->frame, "effect_running")) return;
+   if (e_view_data_get(e_view_client_view_get(e_client_view_get(ec)), "effect_running")) return;
 
-   evas_object_hide(ec->frame);
+   e_view_client_hide(e_client_view_get(ec));
 }
 
 EINTERN void
@@ -3811,7 +3812,7 @@ e_comp_wl_surface_commit(E_Client *ec)
    int x = 0, y = 0;
 
    _e_comp_wl_surface_state_commit(ec, &ec->comp_data->pending);
-   if (!e_comp_object_damage_exists(ec->frame))
+   if (!e_view_client_damage_exists(e_client_view_get(ec)))
      {
         if ((ec->comp_data->video_client) ||
             (!e_client_video_hw_composition_check(ec)))
@@ -3839,7 +3840,7 @@ e_comp_wl_surface_commit(E_Client *ec)
                   x = e_comp->pointer->hot.x;
                   y = e_comp->pointer->hot.y;
                }
-             e_pointer_object_set(e_comp->pointer, ec->frame, x, y);
+             e_pointer_view_set(e_comp->pointer, e_client_view_get(ec), x, y);
           }
      }
    return EINA_TRUE;
@@ -5240,7 +5241,7 @@ e_comp_wl_cursor_hide(E_Client *ec)
    Eina_List *l;
    uint32_t serial;
 
-   e_pointer_object_set(e_comp->pointer, NULL, 0, 0);
+   e_pointer_view_set(e_comp->pointer, NULL, 0, 0);
 
    if (e_comp_wl->ptr.hide_tmr)
      {
@@ -5535,7 +5536,7 @@ e_comp_wl_commit_sync_configure(E_Client *ec)
         int x, y, w, h;
      } config;
 
-   if (!ec || !ec->frame) goto ret;
+   if (!ec || !e_client_view_get(ec)) goto ret;
    if (e_object_is_del(E_OBJECT(ec))) goto ret;
 
    bw = bh = 0;
@@ -5995,8 +5996,8 @@ _e_comp_wl_surface_output_viewport_get(E_Client *ec, Eina_Rectangle *out)
    out->w = (out->w + 1) & ~1;
    out->h = ec->comp_data->height_from_viewport;
 
-   e_comp_object_frame_xy_unadjust(ec->frame, out->x, out->y, &out->x, &out->y);
-   e_comp_object_frame_wh_unadjust(ec->frame, out->w, out->h, &out->w, &out->h);
+   e_view_client_frame_xy_unadjust(e_client_view_get(ec), out->x, out->y, &out->x, &out->y);
+   e_view_client_frame_wh_unadjust(e_client_view_get(ec), out->w, out->h, &out->w, &out->h);
 }
 
 EINTERN Eina_Bool
@@ -6167,7 +6168,7 @@ e_comp_wl_client_surface_pending_opaque_region_set(E_Client *ec, Eina_Tiler *reg
                   ELOGF("COMP", "Set argb:%d", ec, ec->argb);
                   EC_CHANGED(ec);
                   _e_comp_wl_hook_call(E_COMP_WL_HOOK_CLIENT_ALPHA_CHANGE, ec);
-                  e_comp_object_alpha_set(ec->frame, EINA_FALSE);
+                  e_view_client_alpha_set(e_client_view_get(ec), EINA_FALSE);
                }
           }
      }
@@ -6179,7 +6180,7 @@ e_comp_wl_client_surface_pending_opaque_region_set(E_Client *ec, Eina_Tiler *reg
              ELOGF("COMP", "Set argb:%d", ec, ec->argb);
              EC_CHANGED(ec);
              _e_comp_wl_hook_call(E_COMP_WL_HOOK_CLIENT_ALPHA_CHANGE, ec);
-             e_comp_object_alpha_set(ec->frame, EINA_TRUE);
+             e_view_client_alpha_set(e_client_view_get(ec), EINA_TRUE);
           }
      }
 }
@@ -6195,8 +6196,8 @@ e_comp_wl_client_surface_pending_input_region_set(E_Client *ec, Eina_Tiler *regi
         if (eina_tiler_empty(region))
           {
              ELOGF("COMP", "         |unset input rect", NULL);
-             e_comp_object_input_objs_del(ec->frame);
-             e_comp_object_input_area_set(ec->frame, -1, -1, 1, 1);
+             e_view_client_input_objs_del(e_client_view_get(ec));
+             e_view_client_input_area_set(e_client_view_get(ec), -1, -1, 1, 1);
           }
         else
           eina_tiler_union(ec->comp_data->pending.input, region);
index c408108..3a66724 100644 (file)
@@ -4,6 +4,9 @@
 #include "e_comp_wl_intern.h"
 #include "e_dnd_intern.h"
 #include "e_comp_input_intern.h"
+#include "e_view_intern.h"
+#include "e_view_client_intern.h"
+#include "e_view_edje_intern.h"
 
 #include <fcntl.h>
 #include <unistd.h>
@@ -358,6 +361,9 @@ _e_comp_wl_data_offer_cb_resource_destroy(struct wl_resource *resource)
    if (!(offer = wl_resource_get_user_data(resource)))
      return;
 
+   if (offer->drag_enter)
+     wl_list_remove(&offer->ec_destroy_listener.link);
+
    if (offer->source)
      {
         wl_list_remove(&offer->source_destroy_listener.link);
@@ -875,13 +881,12 @@ _e_comp_wl_data_device_selection_set(void *data EINA_UNUSED, E_Comp_Wl_Data_Sour
 static void
 _e_comp_wl_data_device_drag_finished(E_Drag *drag, E_Dnd_Drop_Type type)
 {
-   Evas_Object *o;
+   E_View *view = e_view_edje_part_swallow_get(drag->comp_edje, "e.swallow.content");
 
-   o = edje_object_part_swallow_get(drag->comp_object, "e.swallow.content");
-   if (eina_streq(evas_object_type_get(o), "e_comp_object"))
-     edje_object_part_unswallow(drag->comp_object, o);
-   evas_object_hide(o);
-   evas_object_pass_events_set(o, 1);
+   if (eina_streq(evas_object_type_get(view->eo), "e_comp_object")) //TO DO : use view for type get
+     e_view_edje_part_unswallow(drag->comp_edje, view);
+   e_view_hide(view);
+   e_view_pass_events_set(view, 1);
 
    if (e_comp_wl->drag != drag) return;
 
@@ -998,7 +1003,7 @@ _e_comp_wl_data_device_cb_drag_start(struct wl_client *client, struct wl_resourc
    e_comp_wl->drag->button_mask = evas_pointer_button_down_mask_get(e_comp->evas);
    if (drag_icon_ec)
      {
-        e_drag_object_set(e_comp_wl->drag, drag_icon_ec->frame);
+        e_drag_view_set(e_comp_wl->drag, e_view_client_view_get(e_client_view_get(drag_icon_ec)));
         e_drag_reference_point_set(e_comp_wl->drag, drag_icon_ec->x, drag_icon_ec->y);
         e_drag_resize(e_comp_wl->drag, drag_icon_ec->w, drag_icon_ec->h);
      }
@@ -1292,7 +1297,7 @@ _e_comp_wl_clipboard_create(void)
 }
 
 static void
-_e_comp_wl_data_device_target_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
+_e_comp_wl_data_device_target_del(struct wl_listener *listener, void *data)
 {
    E_Client *ec = data;
 
@@ -1307,6 +1312,7 @@ e_comp_wl_data_device_send_enter(E_Client *ec)
    uint32_t serial;
    int x, y;
    E_Comp_Config *comp_conf;
+   E_Comp_Wl_Data_Offer *offer;
 
    struct wl_resource *surface = e_comp_wl_client_surface_get(ec);
    if (!surface) return;
@@ -1343,7 +1349,10 @@ e_comp_wl_data_device_send_enter(E_Client *ec)
      }
 
    e_comp_wl->selection.target = ec;
-   evas_object_event_callback_add(ec->frame, EVAS_CALLBACK_DEL, _e_comp_wl_data_device_target_del, ec);
+   offer = wl_resource_get_user_data(offer_res);
+   offer->ec_destroy_listener.notify = _e_comp_wl_data_device_target_del;
+   e_view_event_listener_add(e_view_client_view_get(e_client_view_get(ec)), E_VIEW_DESTROY, &offer->ec_destroy_listener);
+   offer->drag_enter = EINA_TRUE;
 
    if (e_client_transform_core_enable_get(ec))
      {
@@ -1375,7 +1384,6 @@ e_comp_wl_data_device_send_leave(E_Client *ec)
    E_Comp_Config *comp_conf;
    struct wl_resource *res;
 
-   evas_object_event_callback_del_full(ec->frame, EVAS_CALLBACK_DEL, _e_comp_wl_data_device_target_del, ec);
    if (e_comp_wl->selection.target == ec)
      e_comp_wl->selection.target = NULL;
    struct wl_resource *surface = e_comp_wl_client_surface_get(ec);
index 539dc5f..ac70cc4 100644 (file)
@@ -54,6 +54,9 @@ struct _E_Comp_Wl_Data_Offer
    Eina_Bool in_ask;
 
    Ecore_Thread *th;
+
+   Eina_Bool drag_enter;
+   struct wl_listener ec_destroy_listener; //listener for destroy of ec
 };
 
 struct _E_Comp_Wl_Clipboard_Source
index 736b323..d2c3f4b 100644 (file)
@@ -124,7 +124,7 @@ _e_comp_wl_input_pointer_map(struct wl_resource *resource)
    if (!e_comp_wl->ptr.ec->pointer_enter_sent) return;
 
    if ((ptr = e_comp->pointer))
-     e_pointer_object_set(ptr, ec->frame, ptr->hot.x, ptr->hot.y);
+     e_pointer_view_set(ptr, e_client_view_get(ec), ptr->hot.x, ptr->hot.y);
 }
 
 static void
@@ -193,7 +193,7 @@ _e_comp_wl_input_pointer_cb_cursor_set(struct wl_client *client, struct wl_resou
              return;
           }
 
-        e_pointer_object_set(e_comp->pointer, NULL, x, y);
+        e_pointer_view_set(e_comp->pointer, NULL, x, y);
         ec->has_cursor_unset = EINA_TRUE;
         ELOGF("COMP", "Cursor Set. has_cursor_unset:TRUE", ec);
         return;
@@ -217,11 +217,11 @@ _e_comp_wl_input_pointer_cb_cursor_set(struct wl_client *client, struct wl_resou
           }
         e_client_icccm_title_set(ec, "Cursor");
         e_client_window_role_set(ec, "wl_pointer-cursor");
-        evas_object_pass_events_set(ec->frame, 1);
+        e_view_pass_events_set(e_view_client_view_get(e_client_view_get(ec)), 1);
         /* wl_pointer-cursor surface is always alpha window */
         ec->argb = EINA_TRUE;
         ELOGF("COMP", "Cursor Set. argb:%d", ec, ec->argb);
-        e_comp_object_alpha_set(ec->frame, EINA_TRUE);
+        e_view_client_alpha_set(e_client_view_get(ec), EINA_TRUE);
         EC_CHANGED(ec);
 
         /* Set fuctions to prevent unwanted handling by shell */
@@ -250,7 +250,7 @@ _e_comp_wl_input_pointer_cb_cursor_set(struct wl_client *client, struct wl_resou
 #if 0
    /* ignore cursor changes during resize/move I guess */
    if (e_client_action_get()) return;
-   e_pointer_object_set(e_comp->pointer, ec->frame, x, y);
+   e_pointer_view_set(e_comp->pointer, e_client_view_get(ec), x, y);
 #endif
    if (e_comp->pointer)
      {
index 6db21a0..1ea3c83 100644 (file)
@@ -11,6 +11,8 @@
 #include "e_zone_intern.h"
 #include "e_utils_intern.h"
 #include "e_security_intern.h"
+#include "e_view_intern.h"
+#include "e_view_client_intern.h"
 
 #include <tizen-remote-surface-server-protocol.h>
 #include <tbm_surface.h>
@@ -324,7 +326,7 @@ _remote_provider_onscreen_parent_calculate(E_Comp_Wl_Remote_Provider *provider)
         if (!_ec->remote_surface.consumer) continue;
         if (e_object_is_del(E_OBJECT(_ec))) continue;
         if (e_client_util_ignored_get(_ec)) continue;
-        if (!_ec->frame) continue;
+        if (!e_client_view_get(_ec)) continue;
         if (!_ec->visible) continue;
         if (_ec->visibility.skip) continue;
         if ((e_client_visibility_get(_ec) != E_VISIBILITY_UNOBSCURED) &&
@@ -378,7 +380,7 @@ _remote_provider_offscreen_set(E_Comp_Wl_Remote_Provider* provider, Eina_Bool se
         else
           {
              ec->visible = EINA_FALSE;
-             evas_object_hide(ec->frame);
+             e_view_client_hide(e_client_view_get(ec));
              ec->comp_data->mapped = 0;
           }
 
@@ -854,10 +856,10 @@ _remote_surface_prebind_send(E_Comp_Wl_Remote_Surface *remote_surface)
    consumer_ec = remote_surface->ec;
 
    //object visibility of bind_ec
-   if (!evas_object_visible_get(bind_ec->frame)) return;
+   if (!e_view_client_visible_get(e_client_view_get(bind_ec))) return;
 
    //check wether effect of consumer_ec is running
-   if ((consumer_ec) && (evas_object_data_get(consumer_ec->frame, "effect_running")))
+   if ((consumer_ec) && (e_view_data_get(e_view_client_view_get(e_client_view_get(consumer_ec)), "effect_running")))
      {
         RSMINF("Sending \"prebind\" is pending until EFFECT_END bind_ec(%p)",
                remote_surface->ec,
@@ -927,7 +929,7 @@ _remote_surface_bind_client(E_Comp_Wl_Remote_Surface *remote_surface, E_Client *
         remote_surface->bind_ec->comp_data->pending.new_attach = EINA_TRUE;
 
         e_comp_wl_surface_attach(remote_surface->bind_ec, NULL);
-        e_comp_object_render_update_del(remote_surface->bind_ec->frame);
+        e_view_client_render_update_del(e_client_view_get(remote_surface->bind_ec));
 
         eina_hash_del(_rsm->bind_surface_hash, &remote_surface->bind_ec, remote_surface);
         remote_surface->need_prebind = EINA_FALSE;
@@ -3126,9 +3128,9 @@ _e_comp_wl_remote_surface_subsurface_commit(E_Comp_Wl_Remote_Provider *parent_pr
    onscreen_parent = parent_provider->onscreen_parent;
    if (!onscreen_parent) return EINA_TRUE;
 
-   if (!evas_object_visible_get(ec->frame)) return EINA_TRUE;
+   if (!e_view_client_visible_get(e_client_view_get(ec))) return EINA_TRUE;
 
-   evas_object_geometry_get(ec->frame, &fx, &fy, &fw, &fh);
+   e_view_client_geometry_get(e_client_view_get(ec), &fx, &fy, &fw, &fh);
 
    e_comp_wl_subsurface_position_get(ec, &sx, &sy);
 
index fe3c492..6cf65d4 100644 (file)
@@ -11,6 +11,8 @@
 #include "e_comp_object_intern.h"
 #include "e_desk_intern.h"
 #include "e_config_intern.h"
+#include "e_view_intern.h"
+#include "e_view_client_intern.h"
 #include "e_policy_stack_intern.h"
 
 #include <xdg-shell-unstable-v5-server-protocol.h>
@@ -312,7 +314,7 @@ e_shell_e_client_interactive_move(E_Client *ec,
       default:          ev.button = e_comp_wl->ptr.button; break;
      }
 
-   e_comp_object_frame_xy_unadjust(ec->frame,
+   e_view_client_frame_xy_unadjust(e_client_view_get(ec),
                                    wl_fixed_to_int(e_comp_wl->ptr.x),
                                    wl_fixed_to_int(e_comp_wl->ptr.y),
                                    &ev.canvas.x,
@@ -363,7 +365,7 @@ e_shell_e_client_interactive_resize(E_Client *ec,
       default:         ev.button = e_comp_wl->ptr.button; break;
      }
 
-   e_comp_object_frame_xy_unadjust(ec->frame,
+   e_view_client_frame_xy_unadjust(e_client_view_get(ec),
                                    wl_fixed_to_int(e_comp_wl->ptr.x),
                                    wl_fixed_to_int(e_comp_wl->ptr.y),
                                    &ev.canvas.x,
@@ -739,12 +741,12 @@ _e_shell_client_map_common_pre(E_Client *ec)
 
    if (!ec) return;
 
-   e_comp_object_signal_emit(ec->frame, "e,state,map", "e");
+   e_view_client_signal_emit(e_client_view_get(ec), "e,state,map", "e");
 
    if (ec->use_splash)
      {
         ELOGF("LAUNCH", "SHOW real win after splash effect", ec);
-        e_comp_object_signal_emit(ec->frame, "e,action,launch_real,done", "e");
+        e_view_client_signal_emit(e_client_view_get(ec), "e,action,launch_real,done", "e");
      }
    ec->use_splash = EINA_FALSE;
 
@@ -757,7 +759,7 @@ _e_shell_client_map_common_pre(E_Client *ec)
 
    /* map this surface if needed */
    ec->visible = EINA_TRUE;
-   evas_object_show(ec->frame);
+   e_view_client_show(e_client_view_get(ec));
    ec->comp_data->mapped = EINA_TRUE;
 }
 
@@ -805,7 +807,7 @@ _e_shell_client_map_common_post(E_Client *ec)
 
    EC_CHANGED(ec);
 
-   e_comp_object_signal_emit(ec->frame, "e,action,map,done", "e");
+   e_view_client_signal_emit(e_client_view_get(ec), "e,action,map,done", "e");
 }
 
 static void
@@ -1349,9 +1351,9 @@ _e_xdg_shell_surface_map_cb_timer(void *data)
         _e_shell_client_map_common_pre(ec);
 
         /* force update */
-        e_comp_object_damage(ec->frame, 0, 0, ec->w, ec->h);
-        e_comp_object_dirty(ec->frame);
-        e_comp_object_render(ec->frame);
+        e_view_client_damage(e_client_view_get(ec), 0, 0, ec->w, ec->h);
+        e_view_client_dirty(e_client_view_get(ec));
+        e_view_client_render(e_client_view_get(ec));
 
         e_comp_wl_surface_commit(ec);
 
@@ -1387,7 +1389,7 @@ e_shell_e_client_map(E_Client *ec)
    ch = ec->h;
 
    e_pixmap_size_get(ec->pixmap, &pw, &ph);
-   evas_object_geometry_get(ec->frame, NULL, NULL, &cw, &ch);
+   e_view_client_geometry_get(e_client_view_get(ec), NULL, NULL, &cw, &ch);
    if (cw == 0 && ch == 0)
      {
         cw = ec->w;
@@ -1464,13 +1466,13 @@ e_shell_e_client_unmap(E_Client *ec)
 
    if (ec->comp_data->mapped)
      {
-        e_comp_object_signal_emit(ec->frame, "e,state,unmap", "e");
+        e_view_client_signal_emit(e_client_view_get(ec), "e,state,unmap", "e");
 
         /* need to save its last buffer to image file */
         e_comp_wl_remote_surface_image_save(ec);
 
         ec->visible = EINA_FALSE;
-        evas_object_hide(ec->frame);
+        e_view_hide(e_view_client_view_get(e_client_view_get(ec)));
         ec->comp_data->mapped = EINA_FALSE;
         ec->visibility.last_sent_type = E_VISIBILITY_UNKNOWN;
 
index 7a441d1..b636d66 100644 (file)
@@ -7,9 +7,18 @@
 #include "e_client_intern.h"
 #include "e_comp_object_intern.h"
 #include "e_alpha_mask_rect_intern.h"
+#include "e_view_intern.h"
+#include "e_view_client_intern.h"
 
 #include <tizen-extension-server-protocol.h>
 
+typedef struct
+{
+   E_Client *ec;
+   struct wl_listener destroy;
+   struct wl_listener view_restack;
+} View_Client_Restack_Data;
+
 static Eina_List *hooks = NULL;
 static Eina_List *handlers = NULL;
 
@@ -156,7 +165,7 @@ _e_comp_wl_subsurface_show(E_Client *ec)
         if (e_pixmap_resource_get(subc->pixmap) && !subc->comp_data->mapped)
           {
              subc->visible = EINA_TRUE;
-             evas_object_show(subc->frame);
+             e_view_show(e_view_client_view_get(e_client_view_get(subc)));
              subc->comp_data->mapped = 1;
           }
         _e_comp_wl_subsurface_show(subc);
@@ -169,7 +178,7 @@ _e_comp_wl_subsurface_show(E_Client *ec)
         if (e_pixmap_resource_get(subc->pixmap) && !subc->comp_data->mapped)
           {
              subc->visible = EINA_TRUE;
-             evas_object_show(subc->frame);
+             e_view_show(e_view_client_view_get(e_client_view_get(subc)));
              subc->comp_data->mapped = 1;
           }
         _e_comp_wl_subsurface_show(subc);
@@ -191,7 +200,7 @@ _e_comp_wl_subsurface_hide(E_Client *ec)
              if (subc->comp_data->mapped)
                {
                   subc->visible = EINA_FALSE;
-                  evas_object_hide(subc->frame);
+                  e_view_hide(e_view_client_view_get(e_client_view_get(subc)));
                   subc->comp_data->mapped = 0;
                }
              _e_comp_wl_subsurface_hide(subc);
@@ -207,7 +216,7 @@ _e_comp_wl_subsurface_hide(E_Client *ec)
              if (subc->comp_data->mapped)
                {
                   subc->visible = EINA_FALSE;
-                  evas_object_hide(subc->frame);
+                  e_view_hide(e_view_client_view_get(e_client_view_get(subc)));
                   subc->comp_data->mapped = 0;
                }
              _e_comp_wl_subsurface_hide(subc);
@@ -230,9 +239,9 @@ _e_comp_wl_subsurface_invisible_parent_get(E_Client *ec)
         if (e_object_is_del(E_OBJECT(parent)) || !parent->comp_data) return NULL;
 
         if (!parent->comp_data->sub.data)
-          return (!evas_object_visible_get(parent->frame)) ? parent : NULL;
+          return (!e_view_visible_get(e_view_client_view_get(e_client_view_get(parent)))) ? parent : NULL;
 
-        if (!evas_object_visible_get(parent->frame))
+        if (!e_view_visible_get(e_view_client_view_get(e_client_view_get(parent))))
           {
              if (e_pixmap_resource_get(parent->pixmap))
                return parent;
@@ -372,7 +381,7 @@ _e_comp_wl_subsurface_commit_from_cache(E_Client *ec)
 
    e_comp_wl_surface_state_commit(ec, &sdata->cached);
 
-   if (!e_comp_object_damage_exists(ec->frame))
+   if (!e_view_client_damage_exists(e_client_view_get(ec)))
      {
         if ((ec->comp_data->video_client) ||
             (!e_client_video_hw_composition_check(ec)))
@@ -442,12 +451,35 @@ _e_comp_wl_subsurface_below_topmost_get(E_Client *ec)
 }
 
 static void
-_e_comp_wl_subsurface_cb_comp_object_restack(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
+_view_client_restack_cb_destroy(struct wl_listener *listener, void *data)
 {
+   View_Client_Restack_Data *restack_data;
+   E_View *view;
+   E_View_Client *view_client;
+
+   restack_data = wl_container_of(listener, restack_data, destroy);
+
+   wl_list_remove(&restack_data->destroy.link);
+
+   view_client = e_client_view_get(restack_data->ec);
+   if (view_client)
+     {
+        view = e_view_client_view_get(view_client);
+        e_view_event_listener_del(view, E_VIEW_RESTACK, &restack_data->view_restack);
+     }
+
+   free(restack_data);
+}
+
+static void
+_view_client_restack_cb_restack(struct wl_listener *listener, void *data)
+{
+   View_Client_Restack_Data *restack_data;
    E_Client *ec, *above, *below;
 
-   ec = data;
-   if ((!ec) || (!ec->comp_data))
+   restack_data = wl_container_of(listener, restack_data, view_restack);
+   ec = restack_data->ec;
+   if (!ec->comp_data)
      return;
 
    if (e_object_is_del(E_OBJECT(ec)))
@@ -471,6 +503,8 @@ static Eina_Bool
 _e_comp_wl_subsurface_cb_comp_object_add(void *data EINA_UNUSED, int type EINA_UNUSED, E_Event_Comp_Object *ev)
 {
    E_Client *ec;
+   View_Client_Restack_Data *restack_data;
+   E_View_Client *view_client;
 
    ec = e_comp_object_client_get(ev->comp_object);
    if (!ec)
@@ -490,7 +524,18 @@ _e_comp_wl_subsurface_cb_comp_object_add(void *data EINA_UNUSED, int type EINA_U
     * of evas smart member object mechanism. */
    _e_comp_wl_subsurface_stack_update(ec);
 
-   evas_object_event_callback_add(ec->frame, EVAS_CALLBACK_RESTACK,  _e_comp_wl_subsurface_cb_comp_object_restack,   ec);
+   restack_data = malloc(sizeof(*restack_data));
+   if (!restack_data)
+     goto end;
+
+   restack_data->ec = ec;
+
+   restack_data->destroy.notify = _view_client_restack_cb_destroy;
+   e_client_destroy_listener_add(ec, &restack_data->destroy);
+
+   view_client = e_client_view_get(ec);
+   restack_data->view_restack.notify = _view_client_restack_cb_restack;
+   e_view_event_listener_add(e_view_client_view_get(view_client), E_VIEW_RESTACK, &restack_data->view_restack);
 
 end:
    return ECORE_CALLBACK_RENEW;
index 5409003..de25e3c 100644 (file)
@@ -6,6 +6,8 @@
 #include "e_comp_wl_viewport_intern.h"
 #include "e_utils_intern.h"
 #include "e_client_intern.h"
+#include "e_view_intern.h"
+#include "e_view_client_intern.h"
 
 #include <tizen-extension-server-protocol.h>
 
@@ -209,6 +211,7 @@ _e_comp_wl_video_object_ec_cb_visibility_change(void *data, int type, void *even
    E_Video_Object *vo;
    E_Client *ec;
    E_Event_Client *ev;
+   E_View_Client* view_client;
 
    ev = event;
    vo = data;
@@ -216,15 +219,19 @@ _e_comp_wl_video_object_ec_cb_visibility_change(void *data, int type, void *even
      return ECORE_CALLBACK_PASS_ON;
 
    ec = ev->ec;
-   switch (e_client_visibility_get(ec))
+   view_client = e_client_view_get(ec);
+   if (view_client)
      {
-      case E_VISIBILITY_FULLY_OBSCURED:
-         evas_object_hide(ec->frame);
-         break;
-      default:
-      case E_VISIBILITY_UNOBSCURED:
-         evas_object_show(ec->frame);
-         break;
+        switch (e_client_visibility_get(ec))
+          {
+           case E_VISIBILITY_FULLY_OBSCURED:
+              e_view_client_hide(view_client);
+              break;
+           default:
+           case E_VISIBILITY_UNOBSCURED:
+              e_view_client_show(view_client);
+              break;
+          }
      }
 
    return ECORE_CALLBACK_PASS_ON;
index 6ed0b0c..31b8dec 100644 (file)
@@ -6,6 +6,7 @@
 #include "e_comp_canvas_intern.h"
 #include "e_info_server_input_intern.h"
 #include "e_info_server_intern.h"
+#include "e_view_client_intern.h"
 
 #include <wayland-server.h>
 #include <wayland-tbm-server.h>
@@ -101,6 +102,9 @@ typedef struct _E_Viewport
 
    E_Comp_Wl_Hook *subsurf_hook_create;
    E_Comp_Wl_Hook *subsurf_hook_commit_to_cache;
+
+   struct wl_listener parent_show;
+   struct wl_listener parent_resize;
 } E_Viewport;
 
 static E_Viewport* _e_comp_wl_viewport_get_viewport(struct wl_resource *resource);
@@ -739,7 +743,8 @@ _e_comp_wl_viewport_cb_query_parent_size(struct wl_client *client,
                                          struct wl_resource *resource)
 {
    E_Viewport *viewport;
-   Evas_Coord w = 0, h = 0;
+   E_View_Client *view_client;
+   int w = 0, h = 0;
 
    viewport = _e_comp_wl_viewport_get_viewport(resource);
    if (!viewport) return;
@@ -748,9 +753,10 @@ _e_comp_wl_viewport_cb_query_parent_size(struct wl_client *client,
 
    if (viewport->epc)
      {
-        evas_object_geometry_get(viewport->epc->frame,
-                                 &viewport->parent_size.x, &viewport->parent_size.y,
-                                 &viewport->parent_size.w, &viewport->parent_size.h);
+        view_client = e_client_view_get(viewport->epc);
+        e_view_client_geometry_get(view_client,
+                                   &viewport->parent_size.x, &viewport->parent_size.y,
+                                   &viewport->parent_size.w, &viewport->parent_size.h);
         w = viewport->parent_size.w;
         h = viewport->parent_size.h;
 
@@ -1887,10 +1893,11 @@ e_comp_wl_viewport_shutdown(void)
 }
 
 static void
-_e_comp_wl_viewport_cb_parent_show(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
+_e_comp_wl_viewport_cb_parent_show(struct wl_listener *listener, void *data)
 {
-   E_Viewport *viewport = data;
+   E_Viewport *viewport;
 
+   viewport = wl_container_of(listener, viewport, parent_show);
    if (e_object_is_del(E_OBJECT(viewport->ec))) return;
 
    PIN("Parent show: update viewport");
@@ -1898,11 +1905,13 @@ _e_comp_wl_viewport_cb_parent_show(void *data, Evas *e EINA_UNUSED, Evas_Object
 }
 
 static void
-_e_comp_wl_viewport_cb_parent_resize(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
+_e_comp_wl_viewport_cb_parent_resize(struct wl_listener *listener, void *data)
 {
-   E_Viewport *viewport = data;
-   Evas_Coord old_w, old_h;
+   E_Viewport *viewport;
+   E_View_Client *view_client;
+   int old_w, old_h;
 
+   viewport = wl_container_of(listener, viewport, parent_resize);
    if (e_object_is_del(E_OBJECT(viewport->epc))) return;
 
    if (viewport->query_parent_size)
@@ -1910,11 +1919,12 @@ _e_comp_wl_viewport_cb_parent_resize(void *data, Evas *e EINA_UNUSED, Evas_Objec
         old_w = viewport->parent_size.w;
         old_h = viewport->parent_size.h;
 
-        evas_object_geometry_get(viewport->epc->frame,
-                                 &viewport->parent_size.x,
-                                 &viewport->parent_size.y,
-                                 &viewport->parent_size.w,
-                                 &viewport->parent_size.h);
+        view_client = e_client_view_get(viewport->epc);
+        e_view_client_geometry_get(view_client,
+                                   &viewport->parent_size.x,
+                                   &viewport->parent_size.y,
+                                   &viewport->parent_size.w,
+                                   &viewport->parent_size.h);
 
         if ((old_w != viewport->parent_size.w) ||
             (old_h != viewport->parent_size.h))
@@ -1929,6 +1939,8 @@ _e_comp_wl_viewport_cb_parent_resize(void *data, Evas *e EINA_UNUSED, Evas_Objec
 static void
 _e_comp_wl_viewport_parent_set(E_Viewport *viewport, E_Client *epc)
 {
+   E_View_Client *view_client;
+
    if (viewport->epc == epc) return;
 
    PIN("parent_set: new_parent(%p)", epc);
@@ -1940,33 +1952,28 @@ _e_comp_wl_viewport_parent_set(E_Viewport *viewport, E_Client *epc)
 
    viewport->epc = epc;
 
-   EINA_SAFETY_ON_NULL_RETURN(epc->frame);
+   view_client = e_client_view_get(epc);
+   if (!view_client) return;
 
-   evas_object_event_callback_add(epc->frame, EVAS_CALLBACK_SHOW,
-                                  _e_comp_wl_viewport_cb_parent_show,
-                                  viewport);
-   evas_object_event_callback_add(epc->frame, EVAS_CALLBACK_RESIZE,
-                                  _e_comp_wl_viewport_cb_parent_resize,
-                                  viewport);
+   viewport->parent_show.notify = _e_comp_wl_viewport_cb_parent_show;
+   e_view_event_listener_add(e_view_client_view_get(view_client), E_VIEW_SHOW, &viewport->parent_show);
+   viewport->parent_resize.notify = _e_comp_wl_viewport_cb_parent_resize;
+   e_view_event_listener_add(e_view_client_view_get(view_client), E_VIEW_RESIZE, &viewport->parent_resize);
 }
 
 static void
 _e_comp_wl_viewport_parent_unset(E_Viewport *viewport)
 {
+   E_View_Client *view_client;
+
    if (!viewport->epc) return;
 
+   view_client = e_client_view_get(viewport->epc);
+   if (!view_client) return;
+
    PIN("parent_unset");
 
-   EINA_SAFETY_ON_NULL_GOTO(viewport->epc->frame, end);
-
-   evas_object_event_callback_del_full(viewport->epc->frame,
-                                       EVAS_CALLBACK_SHOW,
-                                       _e_comp_wl_viewport_cb_parent_show,
-                                       viewport);
-   evas_object_event_callback_del_full(viewport->epc->frame,
-                                       EVAS_CALLBACK_RESIZE,
-                                       _e_comp_wl_viewport_cb_parent_resize,
-                                       viewport);
-end:
+   e_view_event_listener_del(e_view_client_view_get(view_client), E_VIEW_SHOW, &viewport->parent_show);
+   e_view_event_listener_del(e_view_client_view_get(view_client), E_VIEW_RESIZE, &viewport->parent_resize);
    viewport->epc = NULL;
 }
index 2bb0c92..67bb23c 100644 (file)
@@ -9,6 +9,7 @@
 #include "e_presentation_time_intern.h"
 #include "e_client_video_intern.h"
 #include "e_client_intern.h"
+#include "e_view_client_intern.h"
 
 #include <assert.h>
 #include <libds/compositor.h>
@@ -1952,11 +1953,13 @@ EINTERN void
 e_subsurface_view_position_set(E_Subsurface *subsurface, int x, int y)
 {
    E_Subsurface_View *view = &subsurface->view;
+   E_View_Client *view_client;
 
    if (!view->ec)
      return;
 
-   evas_object_move(view->ec->frame, x, y);
+   view_client = e_client_view_get(view->ec);
+   e_view_position_set(e_view_client_view_get(view_client), x, y);
    e_client_transform_core_update(view->ec);
 }
 
index 7d95703..49067b6 100644 (file)
@@ -2,6 +2,8 @@
 #include "e_comp_wl_intern.h"
 #include "e_comp_wl_subsurface_intern.h"
 #include "e_pixmap_intern.h"
+#include "e_view_intern.h"
+#include "e_view_client_intern.h"
 
 #include <wtz-foreign-server-protocol.h>
 
@@ -53,6 +55,8 @@ struct _E_Exported_Shell
      } comp_hook;
 
    Eina_Bool has_cache_data;
+
+   struct wl_listener move_listener;
 };
 
 struct _E_Foreign_Shell
@@ -72,6 +76,8 @@ struct _E_Foreign_Shell
         int x, y, w, h;
         int32_t transform;
      } state;
+
+   struct wl_listener restack_listener;
 };
 
 static const char *e_foreign_shell_role_name = "wtz_foreign_shell";
@@ -451,12 +457,12 @@ _e_exported_shell_destroy(E_Exported_Shell *es)
 }
 
 static void
-_e_exported_shell_cb_eo_move(void *data, Evas *evas EINA_UNUSED, Evas_Object *obj, void *event EINA_UNUSED)
+_e_exported_shell_cb_move(struct wl_listener *listener, void *data)
 {
    E_Exported_Shell *es;
 
-   es = data;
-   evas_object_geometry_get(es->ec->frame, &es->x, &es->y, NULL, NULL);
+   es = wl_container_of(listener, es, move_listener);
+   e_view_client_geometry_get(e_client_view_get(es->ec), &es->x, &es->y, NULL, NULL);
 
    if (es->foreign)
      {
@@ -553,9 +559,8 @@ _e_exported_shell_ec_link(E_Exported_Shell *es, E_Client *ec)
    /* It's to update transform whenever position of comp object changes by
     * sub-surface. Otherwise, final viewport by transform wouldn't represent
     * changed position. */
-   evas_object_event_callback_add(ec->frame, EVAS_CALLBACK_MOVE,
-                                  _e_exported_shell_cb_eo_move,
-                                  es);
+   es->move_listener.notify = _e_exported_shell_cb_move;
+   e_view_event_listener_add(e_view_client_view_get(e_client_view_get(ec)), E_VIEW_MOVE, &es->move_listener);
 
    /* FIXME workaround
     * Use apply_viewport_signal due to the absence of commit signal for now. */
@@ -581,8 +586,7 @@ _e_exported_shell_ec_unlink(E_Exported_Shell *es)
 {
    e_client_transform_core_remove(es->ec, es->transform);
 
-   evas_object_event_callback_del(es->ec->frame, EVAS_CALLBACK_MOVE,
-                                  _e_exported_shell_cb_eo_move);
+   e_view_event_listener_del(e_view_client_view_get(e_client_view_get(es->ec)), E_VIEW_MOVE, &es->move_listener);
 
    wl_list_remove(&es->surface_commit_listener.link);
 
@@ -599,20 +603,20 @@ _e_exported_shell_visible_set(E_Exported_Shell *es, Eina_Bool visible)
 
    if (visible)
      {
-        if (!evas_object_visible_get(es->ec->frame))
+        if (!e_view_client_visible_get(e_client_view_get(es->ec)))
           {
              es->ec->comp_data->mapped = 1;
              es->ec->visible = EINA_TRUE;
-             evas_object_show(es->ec->frame);
+             e_view_client_show(e_client_view_get(es->ec));
           }
      }
    else
      {
-        if (evas_object_visible_get(es->ec->frame))
+        if (e_view_client_visible_get(e_client_view_get(es->ec)))
           {
              es->ec->comp_data->mapped = 0;
              es->ec->visible = EINA_FALSE;
-             evas_object_hide(es->ec->frame);
+             e_view_client_hide(e_client_view_get(es->ec));
           }
      }
 
@@ -631,14 +635,14 @@ _e_exported_shell_destination_set(E_Exported_Shell *es, int w, int h)
    es->ec->client.w = w;
    es->ec->client.h = h;
    e_client_size_set(es->ec, w, h);
-   evas_object_resize(es->ec->frame, w, h);
+   e_view_client_size_set(e_client_view_get(es->ec), w, h);
 
    vp = &es->ec->comp_data->scaler.buffer_viewport;
    vp->surface.width = w;
    vp->surface.height = h;
    vp->changed = EINA_TRUE;
 
-   evas_object_geometry_get(es->ec->frame, &x, &y, NULL, NULL);
+   e_view_client_geometry_get(e_client_view_get(es->ec), &x, &y, NULL, NULL);
    e_util_transform_viewport_set(es->transform, x, y, w, h);
    e_client_transform_core_update(es->ec);
 
@@ -883,15 +887,16 @@ _e_foreign_shell_place_under_exported(E_Foreign_Shell *fs)
    layer = e_client_layer_get(fs->exported->ec);
    e_client_layer_set(fs->ec, layer);
 
-   evas_object_stack_below(fs->ec->frame, fs->exported->ec->frame);
+   e_view_place_below(e_view_client_view_get(e_client_view_get(fs->ec)),
+                      e_view_client_view_get(e_client_view_get(fs->exported->ec)));
 }
 
 static void
-_e_foreign_shell_cb_exported_object_restack(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
+_e_foreign_shell_cb_exported_restack(struct wl_listener *listener, void *data)
 {
    E_Foreign_Shell *fs;
 
-   fs = data;
+   fs = wl_container_of(listener, fs, restack_listener);
 
    _e_foreign_shell_place_under_exported(fs);
 }
@@ -899,19 +904,16 @@ _e_foreign_shell_cb_exported_object_restack(void *data, Evas *e EINA_UNUSED, Eva
 static void
 _e_foreign_shell_exported_restack_handler_add(E_Foreign_Shell *fs)
 {
-   evas_object_event_callback_add(fs->exported->ec->frame,
-                                  EVAS_CALLBACK_RESTACK,
-                                  _e_foreign_shell_cb_exported_object_restack,
-                                  fs);
+   fs->restack_listener.notify = _e_foreign_shell_cb_exported_restack;
+   e_view_event_listener_add(e_view_client_view_get(e_client_view_get(fs->exported->ec)),
+                             E_VIEW_RESTACK, &fs->restack_listener);
 }
 
 static void
 _e_foreign_shell_exported_restack_handler_remove(E_Foreign_Shell *fs)
 {
-   evas_object_event_callback_del_full(fs->exported->ec->frame,
-                                       EVAS_CALLBACK_RESTACK,
-                                       _e_foreign_shell_cb_exported_object_restack,
-                                       fs);
+   e_view_event_listener_del(e_view_client_view_get(e_client_view_get(fs->exported->ec)),
+                             E_VIEW_RESTACK, &fs->restack_listener);
 }
 
 static void
@@ -962,14 +964,14 @@ _e_foreign_shell_visible_set(E_Foreign_Shell *fs, Eina_Bool visible)
           {
              fs->ec->comp_data->mapped = 1;
              fs->ec->visible = EINA_TRUE;
-             evas_object_show(fs->ec->frame);
+             e_view_client_show(e_client_view_get(fs->ec));
           }
      }
    else if (fs->ec->comp_data->mapped)
      {
         fs->ec->comp_data->mapped = 0;
         fs->ec->visible = EINA_FALSE;
-        evas_object_hide(fs->ec->frame);
+        e_view_client_hide(e_client_view_get(fs->ec));
      }
 }
 
@@ -987,7 +989,7 @@ _e_foreign_shell_viewport_update(E_Foreign_Shell *fs)
    fs->ec->client.w = w;
    fs->ec->client.h = h;
    e_client_size_set(fs->ec, w, h);
-   evas_object_resize(fs->ec->frame, w, h);
+   e_view_client_size_set(e_client_view_get(fs->ec), w, h);
 
    vp = &fs->ec->comp_data->scaler.buffer_viewport;
    vp->surface.width = w;
index 20f2801..009fc52 100644 (file)
@@ -33,6 +33,8 @@
 #include "e_hwc_window_intern.h"
 #include "e_input_backend_intern.h"
 #include "e_input_thread_client_intern.h"
+#include "e_view_intern.h"
+#include "e_view_client_intern.h"
 #include "e_policy_softkey_intern.h"
 #include "e_policy_stack_intern.h"
 
@@ -1349,7 +1351,7 @@ _tzpos_iface_cb_set(struct wl_client *client EINA_UNUSED, struct wl_resource *re
 
    ec = e_pixmap_client_get(psurf->cp);
    EINA_SAFETY_ON_NULL_RETURN(ec);
-   EINA_SAFETY_ON_NULL_RETURN(ec->frame);
+   EINA_SAFETY_ON_NULL_RETURN(e_client_view_get(ec));
 
    if (e_policy_client_is_keyboard(ec))
      {
@@ -1490,7 +1492,7 @@ E_API void
 e_policy_wl_activate(E_Client *ec)
 {
    EINA_SAFETY_ON_NULL_RETURN(ec);
-   EINA_SAFETY_ON_NULL_RETURN(ec->frame);
+   EINA_SAFETY_ON_NULL_RETURN(e_client_view_get(ec));
 
    ELOGF("TZPOL", "REAL ACTIVATE", ec);
 
@@ -1527,7 +1529,7 @@ _tzpol_iface_cb_activate(struct wl_client *client EINA_UNUSED, struct wl_resourc
 
    ec = e_client_from_surface_resource(surf);
    EINA_SAFETY_ON_NULL_RETURN(ec);
-   EINA_SAFETY_ON_NULL_RETURN(ec->frame);
+   EINA_SAFETY_ON_NULL_RETURN(e_client_view_get(ec));
 
    ELOGF("TZPOL", "ACTIVATE", ec);
 
@@ -1604,11 +1606,11 @@ _tzpol_iface_cb_activate_below_by_res_id(struct wl_client *client EINA_UNUSED, s
 
    ec = e_pixmap_find_client_by_res_id(res_id);
    EINA_SAFETY_ON_NULL_RETURN(ec);
-   EINA_SAFETY_ON_NULL_RETURN(ec->frame);
+   EINA_SAFETY_ON_NULL_RETURN(e_client_view_get(ec));
 
    below_ec = e_pixmap_find_client_by_res_id(below_res_id);
    EINA_SAFETY_ON_NULL_RETURN(below_ec);
-   EINA_SAFETY_ON_NULL_RETURN(below_ec->frame);
+   EINA_SAFETY_ON_NULL_RETURN(e_client_view_get(below_ec));
 
    ELOGF("TZPOL",
          "ACTIVATE_BELOW|win:0x%08zx(res_id:%d)|below_win:0x%08zx(res_id:%d)",
@@ -1673,11 +1675,11 @@ _tzpol_iface_cb_activate_above_by_res_id(struct wl_client *client EINA_UNUSED, s
 
    ec = e_pixmap_find_client_by_res_id(res_id);
    EINA_SAFETY_ON_NULL_RETURN(ec);
-   EINA_SAFETY_ON_NULL_RETURN(ec->frame);
+   EINA_SAFETY_ON_NULL_RETURN(e_client_view_get(ec));
 
    above_ec = e_pixmap_find_client_by_res_id(above_res_id);
    EINA_SAFETY_ON_NULL_RETURN(above_ec);
-   EINA_SAFETY_ON_NULL_RETURN(above_ec->frame);
+   EINA_SAFETY_ON_NULL_RETURN(e_client_view_get(above_ec));
 
    ELOGF("TZPOL",
          "ACTIVATE_ABOVE|win:0x%08zx(res_id:%d)|above_win:0x%08zx(res_id:%d)",
@@ -1741,7 +1743,7 @@ _tzpol_iface_cb_raise(struct wl_client *client EINA_UNUSED, struct wl_resource *
 
    ec = e_client_from_surface_resource(surf);
    EINA_SAFETY_ON_NULL_RETURN(ec);
-   EINA_SAFETY_ON_NULL_RETURN(ec->frame);
+   EINA_SAFETY_ON_NULL_RETURN(e_client_view_get(ec));
 
    ELOGF("TZPOL", "RAISE", ec);
 
@@ -1778,7 +1780,7 @@ _tzpol_iface_cb_lower(struct wl_client *client EINA_UNUSED, struct wl_resource *
 
    ec = e_client_from_surface_resource(surf);
    EINA_SAFETY_ON_NULL_RETURN(ec);
-   EINA_SAFETY_ON_NULL_RETURN(ec->frame);
+   EINA_SAFETY_ON_NULL_RETURN(e_client_view_get(ec));
 
    ELOGF("TZPOL", "LOWER", ec);
 
@@ -1808,7 +1810,7 @@ _tzpol_iface_cb_lower_by_res_id(struct wl_client *client EINA_UNUSED, struct wl_
 
    ec = e_pixmap_find_client_by_res_id(res_id);
    EINA_SAFETY_ON_NULL_RETURN(ec);
-   EINA_SAFETY_ON_NULL_RETURN(ec->frame);
+   EINA_SAFETY_ON_NULL_RETURN(e_client_view_get(ec));
 
    ELOGF("TZPOL", "LOWER by res id:%d", ec, res_id);
 
@@ -1875,7 +1877,7 @@ _tzpol_iface_cb_role_set(struct wl_client *client EINA_UNUSED, struct wl_resourc
 
    ec = e_client_from_surface_resource(surf);
    EINA_SAFETY_ON_NULL_RETURN(ec);
-   EINA_SAFETY_ON_NULL_RETURN(ec->frame);
+   EINA_SAFETY_ON_NULL_RETURN(e_client_view_get(ec));
 
    ELOGF("TZPOL", "ROLE SET (role:%s)", ec, role);
    e_client_window_role_set(ec, role);
@@ -2395,7 +2397,7 @@ E_API void
 e_policy_wl_iconify(E_Client *ec)
 {
    EINA_SAFETY_ON_NULL_RETURN(ec);
-   EINA_SAFETY_ON_NULL_RETURN(ec->frame);
+   EINA_SAFETY_ON_NULL_RETURN(e_client_view_get(ec));
 
    ELOGF("TZPOL", "Set ICONIFY BY CLIENT", ec);
 
@@ -2417,7 +2419,7 @@ EINTERN void
 e_policy_wl_uniconify(E_Client *ec)
 {
    EINA_SAFETY_ON_NULL_RETURN(ec);
-   EINA_SAFETY_ON_NULL_RETURN(ec->frame);
+   EINA_SAFETY_ON_NULL_RETURN(e_client_view_get(ec));
 
    if (e_policy_visibility_client_uniconify(ec, 1))
      return;
@@ -2572,7 +2574,9 @@ _e_policy_wl_aux_hint_apply(E_Client *ec)
                       ec->changable_layer[E_CHANGABLE_LAYER_TYPE_ABOVE_NOTIFICATION].saved)
                     {
                        // restore original layer
-                       if (original_layer != evas_object_layer_get(ec->frame))
+                       E_View *view = e_view_client_view_get(e_client_view_get(ec));
+                       E_Layer ec_layer = e_canvas_util_layer_map(e_view_layer_index_get(view));
+                       if (original_layer != ec_layer)
                          {
                             Eina_Bool pend = EINA_FALSE;
                             pend = e_policy_visibility_client_layer_lower(ec, original_layer);
@@ -2917,7 +2921,7 @@ _e_policy_wl_background_state_apply(E_Client *ec, Eina_Bool state)
    if (state)
      {
         ec->bg_state = EINA_TRUE;
-        evas_object_hide(ec->frame);
+        e_view_client_hide(e_client_view_get(ec));
         e_pixmap_image_clear(ec->pixmap, 1);
      }
    else
@@ -2929,8 +2933,8 @@ _e_policy_wl_background_state_apply(E_Client *ec, Eina_Bool state)
              cdata = e_client_cdata_get(ec);
              if (cdata && cdata->mapped)
                {
-                  evas_object_show(ec->frame);
-                  e_comp_object_damage(ec->frame, 0, 0, ec->w, ec->h);
+                  e_view_client_show(e_client_view_get(ec));
+                  e_view_client_damage(e_client_view_get(ec), 0, 0, ec->w, ec->h);
                }
           }
      }
@@ -3085,7 +3089,7 @@ _e_policy_wl_floating_mode_apply(E_Client *ec, Eina_Bool floating)
    ec->floating = floating;
    ec->lock_client_location = EINA_FALSE;
 
-   if (ec->frame)
+   if (e_client_view_get(ec))
      {
         if (floating)
           {
@@ -3139,7 +3143,7 @@ _tzpol_iface_cb_stack_mode_set(struct wl_client *client EINA_UNUSED, struct wl_r
 
    ELOGF("TZPOL", "STACK Mode Set. mode:%d", ec, mode);
 
-   if (ec->frame)
+   if (e_client_view_get(ec))
      {
         if (mode == TIZEN_POLICY_STACK_MODE_ABOVE)
           {
@@ -3564,7 +3568,7 @@ _tzpol_iface_cb_show(struct wl_client *client EINA_UNUSED, struct wl_resource *r
 
    ec = e_client_from_surface_resource(surf);
    EINA_SAFETY_ON_NULL_RETURN(ec);
-   EINA_SAFETY_ON_NULL_RETURN(ec->frame);
+   EINA_SAFETY_ON_NULL_RETURN(e_client_view_get(ec));
 
    ELOGF("TZPOL", "Prepare SHOW (wait for buffer attach)", ec);
    e_client_hide_by_request_set(ec, EINA_FALSE);
@@ -3587,7 +3591,7 @@ _tzpol_iface_cb_hide(struct wl_client *client EINA_UNUSED, struct wl_resource *r
 
    ec = e_client_from_surface_resource(surf);
    EINA_SAFETY_ON_NULL_RETURN(ec);
-   EINA_SAFETY_ON_NULL_RETURN(ec->frame);
+   EINA_SAFETY_ON_NULL_RETURN(e_client_view_get(ec));
 
    ELOGF("TZPOL", "Prepare HIDE (wait for NULL buffer attach)", ec);
    e_client_hide_by_request_set(ec, EINA_TRUE);
@@ -3643,7 +3647,7 @@ _tzpol_iface_cb_set_maximize_direction(struct wl_client *client EINA_UNUSED, str
 
    ec = e_client_from_surface_resource(surf);
    EINA_SAFETY_ON_NULL_RETURN(ec);
-   EINA_SAFETY_ON_NULL_RETURN(ec->frame);
+   EINA_SAFETY_ON_NULL_RETURN(e_client_view_get(ec));
 
    ELOGF("TZPOL", "Set Maximize_direction. direction:%d", ec, direction);
 
@@ -3679,7 +3683,7 @@ static void
 _e_policy_set_pin_mode(E_Client *ec, Eina_Bool pinned)
 {
    EINA_SAFETY_ON_NULL_RETURN(ec);
-   EINA_SAFETY_ON_NULL_RETURN(ec->frame);
+   EINA_SAFETY_ON_NULL_RETURN(e_client_view_get(ec));
 
    ELOGF("TZPOL", "Set Pin mode to %d", ec, pinned);
    e_client_pinned_set(ec, pinned);
@@ -3721,7 +3725,7 @@ static void
 _e_policy_set_modal(E_Client *ec, Eina_Bool modal)
 {
    EINA_SAFETY_ON_NULL_RETURN(ec);
-   EINA_SAFETY_ON_NULL_RETURN(ec->frame);
+   EINA_SAFETY_ON_NULL_RETURN(e_client_view_get(ec));
 
    ELOGF("TZPOL", "Set modal to %d", ec, modal);
    e_client_modal_state_set(ec, modal);
@@ -5289,7 +5293,7 @@ _e_tzsh_indicator_find_topvisible_client(E_Zone *zone)
         if (e_object_is_del(E_OBJECT(ec))) continue;
         if (e_client_util_ignored_get(ec)) continue;
         if (!e_zone_has_ec(zone, ec)) continue;
-        if (!ec->frame) continue;
+        if (!e_client_view_get(ec)) continue;
 
         if (!ec->visible) continue;
         if (ec->visibility.skip) continue;
@@ -6789,7 +6793,7 @@ _launch_splash_off(E_Policy_Wl_Tzlaunch_Splash *tzlaunch_splash)
         if (ec->visible)
           {
              ec->visible = EINA_FALSE;
-             evas_object_hide(ec->frame);
+             e_view_client_hide(e_client_view_get(ec));
              ec->ignored = EINA_TRUE;
           }
 
@@ -6807,7 +6811,7 @@ _launch_splash_off(E_Policy_Wl_Tzlaunch_Splash *tzlaunch_splash)
              // if Launchscreen is replaced to cursor, than hide
              e_comp_object_content_unset(ec->frame);
              ec->visible = EINA_FALSE;
-             evas_object_hide(ec->frame);
+             e_view_client_hide(e_client_view_get(ec));
              ec->ignored = EINA_TRUE;
           }
         else if (!tzlaunch_splash->replaced)
@@ -6821,9 +6825,9 @@ _launch_splash_off(E_Policy_Wl_Tzlaunch_Splash *tzlaunch_splash)
                   if (ec->first_mapped)
                     {
                        ELOGF("LAUNCH", "SHOW real win by replaced splash ec", ec);
-                       e_comp_object_signal_emit(ec->frame, "e,action,launch_real,done", "e");
+                       e_view_client_signal_emit(e_client_view_get(ec), "e,action,launch_real,done", "e");
                     }
-                  e_comp_object_signal_emit(ec->frame, "e,action,launch,done", "e");
+                  e_view_client_signal_emit(e_client_view_get(ec), "e,action,launch,done", "e");
                }
           }
 
@@ -6863,7 +6867,7 @@ _launchscreen_splash_setup(E_Policy_Wl_Tzlaunch_Splash *splash,
    Eina_Bool intercepted = EINA_FALSE;
 
    EINA_SAFETY_ON_NULL_RETURN_VAL(splash->ec, EINA_FALSE);
-   EINA_SAFETY_ON_NULL_RETURN_VAL(splash->ec->frame, EINA_FALSE);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(e_client_view_get(splash->ec), EINA_FALSE);
 
    ec = splash->ec;
    ec->effect_type = _e_policy_wl_tzlaunch_effect_type_get(effect_type);
@@ -7078,7 +7082,7 @@ _tzlaunch_splash_iface_cb_owner(struct wl_client *client EINA_UNUSED, struct wl_
         new_ec = pre_ec;
         e_client_geometry_get(new_ec, NULL, NULL, &tw, &th);
         if (tw <= 1 || th <= 1)
-          evas_object_resize(new_ec->frame, e_comp->w, e_comp->h);
+          e_view_client_size_set(e_client_view_get(new_ec), e_comp->w, e_comp->h);
         break;
      }
    eina_list_free(clients);
@@ -7108,7 +7112,7 @@ _tzlaunch_splash_iface_cb_owner(struct wl_client *client EINA_UNUSED, struct wl_
                   e_service_launcher_callee_register(new_ec, tzlaunch_splash->appid, tzlaunch_splash->path, SPLASH_GROUP_NAME);
                }
 
-             evas_object_show(new_ec->frame);
+             e_view_client_show(e_client_view_get(new_ec));
              e_client_raise(new_ec);
 
              tzlaunch_splash->ec = new_ec;
@@ -7151,7 +7155,7 @@ _tzlaunch_splash_iface_cb_owner(struct wl_client *client EINA_UNUSED, struct wl_
              e_service_launcher_callee_register(old_ec, tzlaunch_splash->appid, tzlaunch_splash->path, SPLASH_GROUP_NAME);
           }
 
-        evas_object_show(old_ec->frame);
+        e_view_client_show(e_client_view_get(old_ec));
         e_client_raise(old_ec);
      }
 
@@ -8026,7 +8030,7 @@ _tz_indicator_cb_state_set(struct wl_client *client EINA_UNUSED, struct wl_resou
 
    ec = e_client_from_surface_resource(surf);
    EINA_SAFETY_ON_NULL_RETURN(ec);
-   EINA_SAFETY_ON_NULL_RETURN(ec->frame);
+   EINA_SAFETY_ON_NULL_RETURN(e_client_view_get(ec));
 
    if (state == TIZEN_INDICATOR_STATE_ON)
      ind_state = E_INDICATOR_STATE_ON;
@@ -8050,7 +8054,7 @@ _tz_indicator_cb_opacity_mode_set(struct wl_client *client EINA_UNUSED, struct w
 
    ec = e_client_from_surface_resource(surf);
    EINA_SAFETY_ON_NULL_RETURN(ec);
-   EINA_SAFETY_ON_NULL_RETURN(ec->frame);
+   EINA_SAFETY_ON_NULL_RETURN(e_client_view_get(ec));
 
    switch (mode)
      {
@@ -8094,7 +8098,7 @@ _tz_indicator_cb_visible_type_set(struct wl_client *client EINA_UNUSED, struct w
 
    ec = e_client_from_surface_resource(surf);
    EINA_SAFETY_ON_NULL_RETURN(ec);
-   EINA_SAFETY_ON_NULL_RETURN(ec->frame);
+   EINA_SAFETY_ON_NULL_RETURN(e_client_view_get(ec));
 
    if (vtype == TIZEN_INDICATOR_VISIBLE_TYPE_SHOWN)
      vis_type = E_INDICATOR_VISIBLE_TYPE_SHOWN;
@@ -8268,7 +8272,7 @@ _tz_clipboard_cb_show(struct wl_client *client EINA_UNUSED, struct wl_resource *
 
    ec = e_client_from_surface_resource(surf);
    EINA_SAFETY_ON_NULL_RETURN(ec);
-   EINA_SAFETY_ON_NULL_RETURN(ec->frame);
+   EINA_SAFETY_ON_NULL_RETURN(e_client_view_get(ec));
 
    _e_policy_wl_tz_clipboard_set_client(res_tz_clipboard, ec);
    e_service_cbhm_parent_set(ec, EINA_TRUE);
@@ -8282,7 +8286,7 @@ _tz_clipboard_cb_hide(struct wl_client *client EINA_UNUSED, struct wl_resource *
 
    ec = e_client_from_surface_resource(surf);
    EINA_SAFETY_ON_NULL_RETURN(ec);
-   EINA_SAFETY_ON_NULL_RETURN(ec->frame);
+   EINA_SAFETY_ON_NULL_RETURN(e_client_view_get(ec));
 
    e_service_cbhm_parent_set(ec, EINA_FALSE);
    e_service_cbhm_hide();
index 0f48896..17533b1 100644 (file)
@@ -10,6 +10,8 @@
 #include "e_comp_wl_buffer_intern.h"
 #include "e_desk_intern.h"
 #include "e_comp_wl_subsurface_intern.h"
+#include "e_view_intern.h"
+#include "e_view_client_intern.h"
 
 #include <assert.h>
 #include <math.h>
@@ -853,7 +855,7 @@ _source_unmap(E_Video_Viewport_Source *source)
    e_surface_unmap(source->surface->surface);
 
    // FIXME: Need to be done by another module handling view
-   evas_object_hide(ec->frame);
+   e_view_client_hide(e_client_view_get(ec));
 }
 
 static void
@@ -1034,7 +1036,7 @@ _source_viewport_apply(E_Video_Viewport_Source *source)
    e_comp_wl_map_size_cal_from_viewport(ec);
 
    // FIXME: This code is copied from e_comp_wl_map_apply()
-   e_comp_object_map_update(ec->frame);
+   e_view_client_map_update(e_client_view_get(ec));
 
    if (e_comp_wl_subsurface_check(ec))
      {
@@ -1060,7 +1062,7 @@ _source_viewport_apply(E_Video_Viewport_Source *source)
                }
           }
 
-        evas_object_geometry_get(ec->frame, &x, &y, NULL, NULL);
+        e_view_client_geometry_get(e_client_view_get(ec), &x, &y, NULL, NULL);
         if (x != dx || y != dy)
           e_subsurface_view_position_set(subsurface, dx, dy);
      }
@@ -1069,9 +1071,9 @@ _source_viewport_apply(E_Video_Viewport_Source *source)
         dx = ec->x;
         dy = ec->y;
 
-        evas_object_geometry_get(ec->frame, &x, &y, NULL, NULL);
+        e_view_client_geometry_get(e_client_view_get(ec), &x, &y, NULL, NULL);
         if (x != dx || y != dy)
-          evas_object_move(ec->frame, dx, dy);
+          e_view_position_set(e_view_client_view_get(e_client_view_get(ec)), dx, dy);
      }
 
    cdata = ec->comp_data;
index 8f3c725..eba50b8 100644 (file)
@@ -1,4 +1,6 @@
+#include <Evas.h>
 #include "e_map_intern.h"
+#include "e_view_intern.h"
 
 #define E_MAP_INDEX_IN_RANGE(MAP, X) ((X >= 0) && (X < MAP->count))
 
@@ -287,6 +289,29 @@ e_map_util_points_populate_from_object_full(E_Map *em, Evas_Object *obj, int z)
    return EINA_TRUE;
 }
 
+
+E_API Eina_Bool
+e_map_util_points_populate_from_view(E_Map *em, E_View *view)
+{
+   EINA_SAFETY_ON_NULL_RETURN_VAL(em, EINA_FALSE);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(view, EINA_FALSE);
+
+   evas_map_util_points_populate_from_object(em->map, view->eo);
+
+   return EINA_TRUE;
+}
+
+E_API Eina_Bool
+e_map_util_points_populate_from_view_full(E_Map *em, E_View *view, int z)
+{
+   EINA_SAFETY_ON_NULL_RETURN_VAL(em, EINA_FALSE);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(view, EINA_FALSE);
+
+   evas_map_util_points_populate_from_object_full(em->map, view->eo, z);
+
+   return EINA_TRUE;
+}
+
 E_API Eina_Bool
 e_map_util_object_move_sync_set(E_Map *em, Eina_Bool enabled)
 {
index 72d3185..3c099d3 100644 (file)
@@ -25,3 +25,9 @@ e_theme_edje_file_get(const char *category EINA_UNUSED, const char *group)
 {
    return e_config->comp_shadow_file;
 }
+
+EINTERN int
+e_theme_edje_view_set(E_View_Edje *view, const char *category EINA_UNUSED, const char *group)
+{
+   return e_view_edje_file_set(view, e_config->comp_shadow_file, group);
+}
index f986530..06aafe3 100644 (file)
@@ -3,10 +3,12 @@
 
 #include "e_intern.h"
 #include "e_theme.h"
+#include "e_view_edje_intern.h"
 
 EINTERN int       e_theme_init(void);
 EINTERN int       e_theme_shutdown(void);
 
 EINTERN const char *e_theme_edje_file_get(const char *category, const char *group);
+EINTERN int e_theme_edje_view_set(E_View_Edje *view, const char *category, const char *group);
 
 #endif
index 0409361..46445a1 100644 (file)
@@ -1,4 +1,5 @@
 #include "e_util_transform_intern.h"
+#include "e_view_client_intern.h"
 
 #define E_UTIL_TRANSFORM_IS_ZERO(p) ((p) > -1e-6 && (p) < 1e-6)
 #define E_UTIL_TRANSFORM_ROUND(x)   ((x) >= 0 ? (int)((x) + 0.5) : (int)((x) - 0.5))
@@ -528,9 +529,9 @@ e_util_transform_rect_client_rect_get(E_Util_Transform_Rect *rect, E_Client *ec)
 
    if (!rect || !ec) return;
 
-   if ((ec->w == 0) && (ec->h == 0) && (ec->frame))
+   if ((ec->w == 0) && (ec->h == 0) && e_client_view_get(ec))
      {
-        evas_object_geometry_get(ec->frame, NULL, NULL, &w, &h);
+        e_view_client_geometry_get(e_client_view_get(ec), NULL, NULL, &w, &h);
         e_util_transform_rect_init(rect, ec->x, ec->y, w, h);
      }
    else
@@ -936,8 +937,8 @@ e_util_transform_matrix_inv_rect_coords_get(E_Util_Transform *transform, E_Util_
    if (!out_x || !out_y) return;
    if ((w <= 0) || (h <= 0)) return;
 
-   /* get rectangle's points from vertices. becase transform matrix is different with Evas_Map
-    * Evas_Map calculate using transformed rectangle's points, so to remove different these,
+   /* get rectangle's points from vertices. becase transform matrix is different with E_Map
+    * E_Map calculate using transformed rectangle's points, so to remove different these,
     * calculate points using rectangle's points
     */
    e_util_transform_vertices_pos_get(vetices, 0, &dx1, &dy1, NULL, NULL);
@@ -962,8 +963,8 @@ e_util_transform_matrix_inv_rect_coords_get(E_Util_Transform *transform, E_Util_
    result_x = *out_x = E_UTIL_TRANSFORM_ROUND(dresult_x);
    result_y = *out_y = E_UTIL_TRANSFORM_ROUND(dresult_y);
 
-   /* this logic is added because Evas_Map doesn't do round.
-    * so check whether transformed result from Evas_Map is roundable.
+   /* this logic is added because E_Map doesn't do round.
+    * so check whether transformed result from E_Map is roundable.
     * If the first digit after decimal point of result is greater than 5(roundable),
     * add 1 to the inverted result.
     */
index 147cf3e..9ef3f5f 100644 (file)
@@ -4,6 +4,10 @@
 #include "e_grabinput_intern.h"
 #include "e_comp_intern.h"
 #include "e_comp_wl_input.h"
+#include "e_comp_canvas_intern.h"
+#include "e_view_client_intern.h"
+#include "e_view_edje_intern.h"
+#include "e_view_rect.h"
 
 struct _E_Drag_Hook
 {
@@ -108,6 +112,9 @@ _e_drag_hook_call(E_Drag_Hook_Point hookpoint, E_Drag *drag)
 static int
 _e_drag_finalize(E_Drag *drag, int x, int y)
 {
+   E_View_Rect *rect;
+   const int color[4] = {0, 0, 0, 0};
+
    if (_drag_win) return 0;
    _drag_win = e_comp->ee_win;
    if (!e_comp_grab_input(1, 1))
@@ -117,18 +124,19 @@ _e_drag_finalize(E_Drag *drag, int x, int y)
      }
    drag->input_grab = EINA_TRUE;
 
-   if (!drag->object)
+   if (!drag->view)
      {
-        e_drag_object_set(drag, evas_object_rectangle_add(drag->evas));
-        evas_object_color_set(drag->object, 0, 0, 0, 0);
+        rect = e_view_rect_create(e_canvas_layer_view_tree_get(e_comp_canvas_get(), E_CANVAS_LAYER_CLIENT_DRAG),
+                                  1, 1, color);
+        e_drag_view_set(drag, e_view_rect_view_get(rect));
      }
 
    drag->angle = e_comp->pointer->rotation;
    e_drag_move(drag, x, y);
    e_drag_resize(drag, drag->w, drag->h);
    drag->visible = 1;
-   evas_object_show(drag->comp_object);
-   evas_object_show(drag->object);
+   e_view_show(e_view_edje_view_get(drag->comp_edje));
+   e_view_show(drag->view);
 
    _drag_current = drag;
    return 1;
@@ -182,27 +190,25 @@ e_drag_new(int x, int y, E_Drag_Finished_Cb finished_cb)
    drag->w = 24;
    drag->h = 24;
 
-   drag->evas = e_comp->evas;
-
    drag->cb.finished = finished_cb;
 
    return drag;
 }
 
 EINTERN void
-e_drag_object_set(E_Drag *drag, Evas_Object *object)
+e_drag_view_set(E_Drag *drag, E_View *view)
 {
-   EINA_SAFETY_ON_NULL_RETURN(object);
-   EINA_SAFETY_ON_TRUE_RETURN(!!drag->object);
+   EINA_SAFETY_ON_NULL_RETURN(view);
+   EINA_SAFETY_ON_TRUE_RETURN(!!drag->view);
    if (drag->visible)
-     evas_object_show(object);
+     e_view_show(view);
    else
-     evas_object_hide(object);
-   drag->object = object;
-   drag->comp_object = e_comp_object_util_add(object);
-   evas_object_layer_set(drag->comp_object, E_LAYER_CLIENT_DRAG);
-   evas_object_name_set(drag->comp_object, "E Drag");
-   evas_object_pass_events_set(drag->comp_object, 1);
+     e_view_hide(view);
+   drag->view = view;
+   e_view_reparent(view, e_canvas_layer_view_tree_get(e_comp_canvas_get(), E_CANVAS_LAYER_CLIENT_DRAG));
+   drag->comp_edje = e_view_edje_util_add(view);
+   e_view_name_set(e_view_edje_view_get(drag->comp_edje), "E Drag");
+   e_view_pass_events_set(e_view_edje_view_get(drag->comp_edje), 1);
 }
 
 EINTERN void
@@ -218,15 +224,15 @@ EINTERN void
 e_drag_move(E_Drag *drag, int x, int y)
 {
    int cur_x, cur_y;
-   evas_object_geometry_get(drag->comp_object, &cur_x, &cur_y, NULL, NULL);
+   e_view_edje_geometry_get(drag->comp_edje, &cur_x, &cur_y, NULL, NULL);
    if ((cur_x == x + drag->dx) && (cur_y == y + drag->dy)) return;
 
    drag->x = x;
    drag->y = y;
    if (_drag_current == drag)
      {
-       evas_object_move(drag->comp_object, x + drag->dx, y + drag->dy);
-       _e_drag_map_apply(drag);
+        e_view_position_set(e_view_edje_view_get(drag->comp_edje), x + drag->dx, y + drag->dy);
+        _e_drag_map_apply(drag);
      }
 }
 
@@ -239,7 +245,7 @@ e_drag_resize(E_Drag *drag, int w, int h)
    drag->w = w;
    if (_drag_current == drag)
      {
-        evas_object_resize(drag->comp_object, w, h);
+        e_view_edje_size_set(drag->comp_edje, w, h);
         _e_drag_map_apply(drag);
      }
 }
@@ -266,7 +272,7 @@ e_drag_end(E_Drag *drag, E_Dnd_Drop_Type type)
 static void
 _e_drag_end(E_Drag *drag, E_Dnd_Drop_Type type)
 {
-   evas_object_hide(drag->comp_object);
+   e_view_hide(e_view_edje_view_get(drag->comp_edje));
 
    _e_drag_hook_call(E_DRAG_HOOK_DRAG_END, drag);
 
@@ -313,8 +319,12 @@ _e_drag_free(E_Drag *drag)
         _drag_current = NULL;
      }
 
-   evas_object_hide(drag->comp_object);
-   E_FREE_FUNC(drag->comp_object, evas_object_del);
+   if (drag->comp_edje)
+     {
+        e_view_hide(e_view_edje_view_get(drag->comp_edje));
+        e_view_destroy(e_view_edje_view_get(drag->comp_edje));
+        drag->comp_edje = NULL;
+     }
    free(drag);
    if (input_grab)
      e_comp_ungrab_input(1, 1);
@@ -327,6 +337,7 @@ _e_drag_map_apply(E_Drag *drag)
    int angle, drag_client_w, drag_client_h;
    E_Map *map = NULL, *new_map = NULL;
    Eina_Bool need_map_enable;
+   E_View *view;
 
    angle = drag->angle;
 
@@ -335,7 +346,8 @@ _e_drag_map_apply(E_Drag *drag)
    else if (angle == 270)
       angle = 90;
 
-   need_map_enable = evas_object_map_enable_get(e_comp_wl->drag_client->frame) || (angle != 0);
+   view = e_view_client_view_get(e_client_view_get(e_comp_wl->drag_client));
+   need_map_enable = e_view_map_enable_get(view) || (angle != 0);
    if (!need_map_enable) return;
 
    map = e_client_map_get(e_comp_wl->drag_client);
@@ -350,8 +362,8 @@ _e_drag_map_apply(E_Drag *drag)
    e_map_util_points_populate_from_geometry(new_map, drag->x, drag->y, drag_client_w, drag_client_h, 0);
    e_map_util_rotate(new_map, angle, drag->x, drag->y);
    e_map_util_object_move_sync_set(new_map, EINA_TRUE);
-   e_comp_object_map_set(drag->comp_object, new_map);
-   e_comp_object_map_enable_set(drag->comp_object, EINA_TRUE);
+   e_view_edje_map_set(drag->comp_edje, new_map);
+   e_view_edje_map_enable_set(drag->comp_edje, true);
 
 fin:
    if (map) e_map_free(map);
index f085727..6d2b3e0 100644 (file)
@@ -3,6 +3,8 @@
 
 #include "e_intern.h"
 #include "e_dnd.h"
+#include "e_view_intern.h"
+#include "e_view_edje_intern.h"
 
 #define E_DRAG_TYPE 0xE0b0100f
 
@@ -33,9 +35,8 @@ struct _E_Drag
         E_Drag_Finished_Cb finished;
      } cb;
 
-   Evas              *evas;
-   Evas_Object       *comp_object;
-   Evas_Object       *object;
+   E_View            *view;
+   E_View_Edje       *comp_edje;
 
    int                x, y, w, h;
    int                dx, dy;
@@ -52,8 +53,7 @@ EINTERN int e_dnd_shutdown(void);
 EINTERN E_Drag *e_drag_current_get(void);
 /* x and y are the top left coords of the object that is to be dragged */
 EINTERN E_Drag *e_drag_new(int x, int y, E_Drag_Finished_Cb finished_cb);
-EINTERN Evas   *e_drag_evas_get(const E_Drag *drag);
-EINTERN void    e_drag_object_set(E_Drag *drag, Evas_Object *object);
+EINTERN void    e_drag_view_set(E_Drag *drag, E_View *view);
 EINTERN void    e_drag_reference_point_set(E_Drag *drag, int x, int y);
 EINTERN void    e_drag_move(E_Drag *drag, int x, int y);
 EINTERN void    e_drag_resize(E_Drag *drag, int w, int h);
index a38d681..60af3a3 100644 (file)
@@ -1,11 +1,11 @@
 #include "e_focus_policy_iface.h"
 #include "e_zone_intern.h"
 #include "e_client_intern.h"
-#include "e_comp_object_intern.h"
 #include "e_comp_intern.h"
 #include "e_policy_visibility_intern.h"
 #include "e_desk_intern.h"
 #include "e_config_intern.h"
+#include "e_view_client_intern.h"
 
 typedef struct _E_Focus_Policy_History_Impl E_Focus_Policy_History;
 typedef struct _E_Focus_Policy_History_Client E_Focus_Policy_History_Client;
@@ -200,7 +200,7 @@ _e_focus_policy_history_candidate_focus_get(E_Focus_Policy_History *history_poli
 
         if (!(ec->icccm.accepts_focus || ec->icccm.take_focus)) continue;
         if (ec->lock_focus_in || ec->lock_focus_out) continue;
-        if (!evas_object_visible_get(ec->frame)) continue;
+        if (!e_view_client_visible_get(e_client_view_get(ec))) continue;
         if (ec->iconic) continue;
         if (ec->bg_state) continue;
 
@@ -246,7 +246,7 @@ _e_focus_policy_history_focus_can_take_by_vis_obscured(E_Focus_Policy_History *h
            if (e_client_check_really_iconified(ec))
              return EINA_FALSE;
 
-           if (!evas_object_visible_get(ec->frame) &&
+           if (!e_view_client_visible_get(e_client_view_get(ec)) &&
                !eina_list_data_find(history_policy->defer_focus_stack, ec))
              return EINA_FALSE;
            break;
@@ -1004,7 +1004,7 @@ _focus_policy_history_cb_zone_client_add(struct wl_listener *listener, void *dat
    E_Focus_Policy_History *history_policy;
    E_Focus_Policy_History_Client *history_client;
    E_Client *ec;
-   Evas_Object *obj;
+   E_View_Client *view_client;
 
    history_policy = wl_container_of(listener, history_policy, zone_client_add);
 
@@ -1013,8 +1013,8 @@ _focus_policy_history_cb_zone_client_add(struct wl_listener *listener, void *dat
 
    E_FOCUS_HISTORY_TRACE(history_policy, ec);
 
-   obj = ec->frame;
-   EINA_SAFETY_ON_NULL_RETURN(obj);
+   view_client = e_client_view_get(ec);
+   EINA_SAFETY_ON_NULL_RETURN(view_client);
 
    history_client = E_NEW(E_Focus_Policy_History_Client, 1);
    EINA_SAFETY_ON_NULL_RETURN(history_client);
@@ -1052,11 +1052,11 @@ _focus_policy_history_cb_zone_client_add(struct wl_listener *listener, void *dat
 
    // e_comp_object listeners
    history_client->comp_object_lower_done.notify = _focus_policy_history_cb_comp_object_lower_done;
-   e_comp_object_lower_done_listener_add(obj, &history_client->comp_object_lower_done);
+   e_view_client_lower_done_listener_add(view_client, &history_client->comp_object_lower_done);
    history_client->comp_object_show.notify = _focus_policy_history_cb_comp_object_show;
-   e_comp_object_show_listener_add(obj, &history_client->comp_object_show);
+   e_view_client_show_listener_add(view_client, &history_client->comp_object_show);
    history_client->comp_object_hide.notify = _focus_policy_history_cb_comp_object_hide;
-   e_comp_object_hide_listener_add(obj, &history_client->comp_object_hide);
+   e_view_client_hide_listener_add(view_client, &history_client->comp_object_hide);
 
    ELOGF("FOCUS_HISTORY", "zone_client_add | ", ec);
 }
index 4fdcf15..24b938f 100644 (file)
@@ -3,6 +3,7 @@
 #include "e_client_intern.h"
 #include "e_desk_intern.h"
 #include "e_config_intern.h"
+#include "e_view_client_intern.h"
 
 typedef struct _E_Focus_Policy_Topmost_Impl E_Focus_Policy_Topmost;
 typedef struct _E_Focus_Policy_Topmost_Client E_Focus_Policy_Topmost_Client;
@@ -103,7 +104,7 @@ _e_focus_policy_topmost_focus_can_take(E_Client *ec)
    above_ec = e_client_check_fully_contain_by_above(ec, EINA_FALSE);
    if (above_ec)
      {
-         if (!evas_object_visible_get(above_ec->frame))
+         if (!e_view_client_visible_get(e_client_view_get(above_ec)))
            return EINA_TRUE;
 
         child_ec = e_client_check_obscured_by_children_group(ec);
index be479fb..232b512 100644 (file)
@@ -1,4 +1,6 @@
 #include "e_magnifier_intern.h"
+#include "e_view_intern.h"
+#include "e_view_client_intern.h"
 
 #define E_MAGNIFIER_SMART_DATA_GET(obj, ptr)                        \
    E_Magnifier_Smart_Data *ptr = evas_object_smart_data_get(obj);
@@ -8,6 +10,7 @@
    if (!ptr) return
 
 typedef struct _E_Magnifier_Smart_Data E_Magnifier_Smart_Data;
+typedef struct _E_Magnifier_Listener E_Magnifier_Listener;
 
 struct _E_Magnifier_Smart_Data
 {
@@ -35,6 +38,15 @@ struct _E_Magnifier_Smart_Data
    Eina_Bool    enabled;
 };
 
+struct _E_Magnifier_Listener
+{
+   E_Client *ec;
+
+   // view listener
+   struct wl_listener move_listener;
+   struct wl_listener resize_listener;
+};
+
 EVAS_SMART_SUBCLASS_NEW(E_MAGNIFIER_SMART_OBJ_TYPE, _e_magnifier,
                     Evas_Smart_Class, Evas_Smart_Class,
                     evas_object_smart_clipped_class_get, NULL);
@@ -51,6 +63,7 @@ static void _e_magnifier_owner_set(E_Client *ec);
 static void _e_magnifier_owner_unset(E_Client *ec);
 
 static Evas_Object *_e_magnifier_mgr = NULL;
+static E_Magnifier_Listener *_e_magnifier_listener = NULL;
 
 static Eina_Bool
 _e_magnifier_smart_init(void)
@@ -84,7 +97,7 @@ _e_magnifier_proxy_ec_new(E_Client *ec)
    Eina_Bool ret;
 
    if (!ec) return EINA_FALSE;
-   if (!ec->frame) return EINA_FALSE;
+   if (!e_client_view_get(ec)) return EINA_FALSE;
    if (ec->is_magnifier) return EINA_FALSE;
    if (ec->magnifier_proxy)
      {
@@ -149,7 +162,7 @@ _e_magnifier_proxy_ec_all_add(void)
         if (e_client_util_ignored_get(ec)) continue;
         desk2 = e_zone_desk_find_by_ec(zone, ec);
         if (desk2 != desk) continue;
-        if (!ec->frame) continue;
+        if (!e_client_view_get(ec)) continue;
         if (ec->is_magnifier) continue;
 
         ret = _e_magnifier_proxy_ec_new(ec);
@@ -654,18 +667,13 @@ _e_magnifier_zoom_obj_geometry_convert_set(int angle, int x, int y, int w, int h
    _e_magnifier_apply_zoom(_e_magnifier_mgr);
 }
 
-
-
 static void
-_e_magnifier_cb_owner_move_resize(void *data EINA_UNUSED,
-                                  Evas *e EINA_UNUSED,
-                                  Evas_Object *obj,
-                                  void *event_info EINA_UNUSED)
+_e_magnifier_cb_owner_move_resize(E_Client *ec)
 {
    int x, y, w, h;
    int nx, ny, nw, nh;
 
-   evas_object_geometry_get(obj, &x, &y, &w, &h);
+   e_view_client_geometry_get(e_client_view_get(ec), &x, &y, &w, &h);
 
    E_MAGNIFIER_SMART_DATA_GET_OR_RETURN(_e_magnifier_mgr, sd);
 
@@ -684,6 +692,35 @@ _e_magnifier_cb_owner_move_resize(void *data EINA_UNUSED,
    _e_magnifier_apply_zoom(_e_magnifier_mgr);
 }
 
+static void
+_e_magnifier_cb_owner_move(struct wl_listener *listener, void *data)
+{
+   E_Magnifier_Listener *magnifier_listener;
+   E_Client *ec;
+
+   magnifier_listener = wl_container_of(listener, magnifier_listener, move_listener);
+   if (EINA_UNLIKELY(!magnifier_listener))
+     return;
+
+   ec = magnifier_listener->ec;
+
+   _e_magnifier_cb_owner_move_resize(ec);
+}
+
+static void
+_e_magnifier_cb_owner_resize(struct wl_listener *listener, void *data)
+{
+   E_Magnifier_Listener *magnifier_listener;
+   E_Client *ec;
+
+   magnifier_listener = wl_container_of(listener, magnifier_listener, resize_listener);
+   if (EINA_UNLIKELY(!magnifier_listener))
+     return;
+
+   ec = magnifier_listener->ec;
+
+   _e_magnifier_cb_owner_move_resize(ec);
+}
 
 EINTERN int
 e_magnifier_init(void)
@@ -873,25 +910,49 @@ e_magnifier_smart_member_del(Evas_Object *obj)
 static void
 _e_magnifier_owner_set(E_Client *ec)
 {
+   E_View *view;
+
    if (!ec) return;
 
+   _e_magnifier_listener = E_NEW(E_Magnifier_Listener, 1);
+   if (!_e_magnifier_listener)
+     {
+        ELOGF("MAGNIFIER", "Fail to alloc listener..", ec);
+        return;
+     }
+
    ec->is_magnifier = EINA_TRUE;
    ec->exp_iconify.deiconify_update = EINA_FALSE;
    e_client_layer_set(ec, E_LAYER_CLIENT_ALERT_HIGH);
 
-   evas_object_event_callback_add(ec->frame, EVAS_CALLBACK_MOVE, _e_magnifier_cb_owner_move_resize, NULL);
-   evas_object_event_callback_add(ec->frame, EVAS_CALLBACK_RESIZE, _e_magnifier_cb_owner_move_resize, NULL);
+   _e_magnifier_listener->ec = ec;
+   view = e_view_client_view_get(e_client_view_get(ec));
+   _e_magnifier_listener->move_listener.notify = _e_magnifier_cb_owner_move;
+   e_view_event_listener_add(view, E_VIEW_MOVE, &_e_magnifier_listener->move_listener);
+   _e_magnifier_listener->resize_listener.notify = _e_magnifier_cb_owner_resize;
+   e_view_event_listener_add(view, E_VIEW_RESIZE, &_e_magnifier_listener->resize_listener);
 }
 
 static void
 _e_magnifier_owner_unset(E_Client *ec)
 {
+   E_View *view;
+   E_View_Client *view_client;
+
    if (!ec) return;
 
    ec->is_magnifier = EINA_FALSE;
 
-   evas_object_event_callback_del(ec->frame, EVAS_CALLBACK_MOVE, _e_magnifier_cb_owner_move_resize);
-   evas_object_event_callback_del(ec->frame, EVAS_CALLBACK_RESIZE, _e_magnifier_cb_owner_move_resize);
+   if (_e_magnifier_listener)
+     {
+        view_client = e_client_view_get(ec);
+        view = e_view_client_view_get(view_client);
+
+        e_view_event_listener_del(view, E_VIEW_MOVE, &_e_magnifier_listener->move_listener);
+        e_view_event_listener_del(view, E_VIEW_RESIZE, &_e_magnifier_listener->resize_listener);
+        E_FREE(_e_magnifier_listener);
+        _e_magnifier_listener = NULL;
+     }
 }
 
 static Eina_Bool
index aecf06c..98e6ceb 100644 (file)
@@ -1,6 +1,8 @@
 #include "e_place_intern.h"
 #include "e_input_device_intern.h"
 #include "e_desk_intern.h"
+#include "e_view_intern.h"
+#include "e_view_client_intern.h"
 
 EINTERN void
 e_place_zone_region_smart_cleanup(E_Zone *zone)
@@ -44,10 +46,11 @@ e_place_zone_region_smart_cleanup(E_Zone *zone)
    EINA_LIST_FREE(clients, ec)
      {
         int new_x, new_y;
+        E_View *view = e_view_client_view_get(e_client_view_get(ec));
 
         e_place_zone_region_smart(zone, clients, ec->x, ec->y,
                                   ec->w, ec->h, &new_x, &new_y);
-        evas_object_move(ec->frame, new_x, new_y);
+        e_view_position_set(view, new_x, new_y);
      }
 }
 
index 773fe20..7a92ae9 100644 (file)
@@ -1,6 +1,9 @@
 #include "e_pointer_intern.h"
 #include "e_input_device_intern.h"
 #include "e_client_intern.h"
+#include "e_comp_canvas.h"
+#include "e_view_intern.h"
+#include "e_view_client_intern.h"
 
 /* local variables */
 static Eina_List *_ptrs = NULL;
@@ -62,15 +65,18 @@ _e_pointer_position_update(E_Pointer *ptr)
    E_Client *ec;
    double ratio = 1.0;
    int hot_x = 0, hot_y = 0;
+   E_View *view;
 
-   if (!ptr->o_ptr) return;
+   if (!ptr->view_client) return;
+   view = e_view_client_view_get(ptr->view_client);
+   EINA_SAFETY_ON_NULL_RETURN(view);
 
-   ec = e_comp_object_client_get(ptr->o_ptr);
+   ec = e_view_data_get(view, "E_Client");
    EINA_SAFETY_ON_NULL_RETURN(ec);
 
    rotation = ptr->rotation;
 
-   evas_object_geometry_get(ec->frame, NULL, NULL, &cursor_w, &cursor_h);
+   e_view_client_geometry_get(ptr->view_client, NULL, NULL, &cursor_w, &cursor_h);
    _e_pointer_configured_output_resolution_ratio_get(ec, &ratio);
 
    if (ratio != 1.0)
@@ -108,7 +114,7 @@ _e_pointer_position_update(E_Pointer *ptr)
         break;
      }
 
-   evas_object_move(ptr->o_ptr, nx, ny);
+   e_view_position_set(view, nx, ny);
 }
 
 static void
@@ -119,11 +125,15 @@ _e_pointer_map_apply(E_Pointer *ptr)
    E_Client *ec;
    int rotation = 0;
    double ratio = 1.0;
+   E_View *view;
 
    EINA_SAFETY_ON_NULL_RETURN(ptr);
-   if (!ptr->o_ptr) return;
+   if (!ptr->view_client) return;
 
-   ec = e_comp_object_client_get(ptr->o_ptr);
+   view = e_view_client_view_get(ptr->view_client);
+   EINA_SAFETY_ON_NULL_RETURN(view);
+
+   ec = e_view_data_get(view, "E_Client");
    EINA_SAFETY_ON_NULL_RETURN(ec);
 
    _e_pointer_configured_output_resolution_ratio_get(ec, &ratio);
@@ -137,12 +147,12 @@ _e_pointer_map_apply(E_Pointer *ptr)
         return;
      }
 
-   evas_object_geometry_get(ec->frame, &x, &y, &w, &h);
+   e_view_client_geometry_get(e_client_view_get(ec), &x, &y, &w, &h);
 
    map = e_map_new();
    EINA_SAFETY_ON_NULL_RETURN(map);
 
-   e_map_util_points_populate_from_object_full(map, ec->frame, 0);
+   e_map_util_points_populate_from_view_full(map, view, 0);
 
    if (ratio != 1.0)
      {
@@ -172,38 +182,50 @@ _e_pointer_map_apply(E_Pointer *ptr)
 }
 
 static void
-_e_pointer_cb_object_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED)
+_e_pointer_cb_view_del(struct wl_listener *listener, void *data)
 {
-   E_Pointer *ptr = (E_Pointer *)data;
+   E_Pointer *ptr;
+
+   ptr = wl_container_of(listener, ptr, destroy_listener);
+   if (ptr->view_client)
+     {
+        wl_list_remove(&ptr->destroy_listener.link);
+        ptr->view_client = NULL;
+     }
 
-   ptr->o_ptr = NULL;
    ptr->device = E_POINTER_NONE;
    ptr->hot.x = 0;
    ptr->hot.y = 0;
 }
 
 static void
-_e_pointer_object_set(E_Pointer *ptr, Evas_Object *obj)
+_e_pointer_view_set(E_Pointer *ptr,  E_View_Client *view_client)
 {
-   if (ptr->o_ptr == obj) return;
+   E_View *view;
+
+   if (ptr->view_client == view_client) return;
 
-   if (ptr->o_ptr)
+   if (ptr->view_client)
      {
-         evas_object_event_callback_del_full(ptr->o_ptr, EVAS_CALLBACK_DEL, _e_pointer_cb_object_del, ptr);
-         ptr->o_ptr = NULL;
+        view = e_view_client_view_get(ptr->view_client);
+        wl_list_remove(&ptr->destroy_listener.link);
+        ptr->destroy_listener.notify = NULL;
+        ptr->view_client = NULL;
      }
 
-   if (obj)
+   if (view_client)
      {
-        evas_object_event_callback_add(obj, EVAS_CALLBACK_DEL, _e_pointer_cb_object_del, ptr);
-        ptr->o_ptr = obj;
+        view = e_view_client_view_get(view_client);
+        ptr->destroy_listener.notify = _e_pointer_cb_view_del;
+        e_view_event_listener_add(view, E_VIEW_DESTROY, &ptr->destroy_listener);
+        ptr->view_client = view_client;
      }
 }
 
 static void
 _e_pointer_cb_free(E_Pointer *ptr)
 {
-   _e_pointer_object_set(ptr, NULL);
+   _e_pointer_view_set(ptr, NULL);
 
    _ptrs = eina_list_remove(_ptrs, ptr);
 
@@ -296,12 +318,12 @@ e_pointer_canvas_new(Ecore_Evas *ee, Eina_Bool filled)
 }
 
 static Eina_Bool
-_e_pointer_object_hide(E_Pointer *ptr, Evas_Object *obj)
+_e_pointer_view_hide(E_Pointer *ptr, E_View_Client *view_client)
 {
    E_Client *ec;
    Eina_Bool res = EINA_FALSE;
 
-   ec = e_comp_object_client_get(obj);
+   ec = e_view_data_get(e_view_client_view_get(view_client), "E_Client");
    if ((ec) && (!e_object_is_del(E_OBJECT(ec))))
      {
         ec->hidden = 1;
@@ -312,50 +334,51 @@ _e_pointer_object_hide(E_Pointer *ptr, Evas_Object *obj)
      }
 
    /* hide cursor object */
-   if (evas_object_visible_get(obj))
+   if (e_view_client_visible_get(view_client))
      {
         res = EINA_TRUE;
-        evas_object_hide(obj);
-        evas_damage_rectangle_add(e_comp->evas, 0, 0, e_comp->w, e_comp->h);
+        e_view_client_hide(view_client);
+        e_canvas_damage_rectangle_add(e_comp_canvas_get(), 0, 0, e_comp->w, e_comp->h);
      }
 
-   _e_pointer_object_set(ptr, NULL);
+   _e_pointer_view_set(ptr, NULL);
    ptr->device = E_POINTER_NONE;
 
    return res;
 }
 
 static Eina_Bool
-_e_pointer_object_show(E_Pointer *ptr, Evas_Object *obj)
+_e_pointer_view_show(E_Pointer *ptr, E_View_Client *view_client)
 {
    E_Client *ec;
    Eina_Bool res = EINA_FALSE;
 
-   ec = e_comp_object_client_get(obj);
+   ec = e_view_data_get(e_view_client_view_get(view_client), "E_Client");
    if (ec && e_pixmap_usable_get(ec->pixmap))
      {
         ec->hidden = 0;
         ec->visible = EINA_TRUE;
         e_client_visibility_set(ec, E_VISIBILITY_UNOBSCURED);
-        evas_object_geometry_set(ec->frame, ec->x, ec->y, ec->w, ec->h);
+        e_view_client_geometry_set(e_client_view_get(ec), ec->x, ec->y, ec->w, ec->h);
+
         ec->comp_data->mapped = EINA_TRUE;
         ec->override = 0; /* do not ignore the cursor_ec to set the image object */
      }
 
    /* show cursor object */
-   if (!evas_object_visible_get(obj))
+   if (!e_view_client_visible_get(view_client))
      {
         res = EINA_TRUE;
-        evas_object_show(obj);
+        e_view_client_show(view_client);
      }
 
-   _e_pointer_object_set(ptr, obj);
+   _e_pointer_view_set(ptr, view_client);
 
    return res;
 }
 
 EINTERN void
-e_pointer_object_set(E_Pointer *ptr, Evas_Object *obj, int x, int y)
+e_pointer_view_set(E_Pointer *ptr, E_View_Client *view_client, int x, int y)
 {
    Eina_Bool need_call_hide = EINA_FALSE;
 
@@ -364,16 +387,16 @@ e_pointer_object_set(E_Pointer *ptr, Evas_Object *obj, int x, int y)
    /* don't show cursor if in hidden mode */
    if ((!e_config->show_cursor) || (!e_comp_wl->ptr.enabled))
      {
-        if (ptr->o_ptr && _e_pointer_object_hide(ptr, ptr->o_ptr))
+        if (ptr->view_client && _e_pointer_view_hide(ptr, ptr->view_client))
           _e_pointer_hook_call(E_POINTER_HOOK_HIDE, ptr);
 
         return;
      }
 
    /* hide and unset the existed ptr->o_ptr */
-   if (ptr->o_ptr && (ptr->o_ptr != obj))
+   if (ptr->view_client && (ptr->view_client != view_client))
      {
-        if (_e_pointer_object_hide(ptr, ptr->o_ptr))
+        if (_e_pointer_view_hide(ptr, ptr->view_client))
           need_call_hide = EINA_TRUE;
      }
 
@@ -382,9 +405,9 @@ e_pointer_object_set(E_Pointer *ptr, Evas_Object *obj, int x, int y)
    ptr->hot.y = y;
 
    /* if obj is not null, set the obj to ptr->o_ptr */
-   if (obj && (ptr->o_ptr != obj))
+   if (view_client && (ptr->view_client != view_client))
      {
-        if (_e_pointer_object_show(ptr, obj))
+        if (_e_pointer_view_show(ptr, view_client))
           {
              need_call_hide = EINA_FALSE;
              _e_pointer_hook_call(E_POINTER_HOOK_SHOW, ptr);
@@ -441,10 +464,9 @@ EINTERN void
 e_pointer_hide(E_Pointer *ptr)
 {
    EINA_SAFETY_ON_NULL_RETURN(ptr);
-   if (!ptr->o_ptr) return;
-   if (!evas_object_visible_get(ptr->o_ptr)) return;
+   if (!ptr->view_client) return;
 
-   evas_object_hide(ptr->o_ptr);
+   e_view_client_hide(ptr->view_client);
 }
 
 E_API Eina_Bool
@@ -453,7 +475,7 @@ e_pointer_is_hidden(E_Pointer *ptr)
    EINA_SAFETY_ON_NULL_RETURN_VAL(ptr, EINA_TRUE);
 
    if (!e_config->show_cursor) return EINA_TRUE;
-   if (ptr->o_ptr && evas_object_visible_get(ptr->o_ptr)) return EINA_FALSE;
+   if (ptr->view_client && e_view_client_visible_get(ptr->view_client)) return EINA_FALSE;
 
    return EINA_TRUE;
 }
@@ -482,8 +504,8 @@ e_pointer_position_get(E_Pointer *ptr, int *x, int *y)
    EINA_SAFETY_ON_NULL_RETURN(ptr);
 
    if (!e_config->show_cursor) return;
-   if (!ptr->o_ptr) return;
-   if (!evas_object_visible_get(ptr->o_ptr)) return;
+   if (!ptr->view_client) return;
+   if (!e_view_client_visible_get(ptr->view_client)) return;
 
    *x = ptr->x;
    *y = ptr->y;
@@ -495,16 +517,18 @@ e_pointer_get(E_Client *ec)
    const Eina_List *l;
    E_Pointer *ptr;
    E_Client *ptr_ec = NULL;
+   E_View *view;
 
    if ((!ec) || (e_object_is_del(E_OBJECT(ec)))) return NULL;
 
    EINA_LIST_FOREACH(_ptrs, l, ptr)
      {
-        if (ptr->o_ptr)
+        if (ptr->view_client)
           {
-             ptr_ec = e_comp_object_client_get(ptr->o_ptr);
+             view = e_view_client_view_get(ptr->view_client);
+             ptr_ec = e_view_data_get(view, "E_Client");
              if (ptr_ec == ec)
-                return ptr;
+               return ptr;
           }
      }
 
index b641dc9..57dfb4c 100644 (file)
@@ -3,6 +3,7 @@
 
 #include "e_intern.h"
 #include "e_pointer.h"
+#include "e_view_client_intern.h"
 
 #define E_POINTER_TYPE 0xE0b01013
 
@@ -10,7 +11,7 @@ EINTERN int        e_pointer_init(void);
 EINTERN int        e_pointer_shutdown(void);
 
 EINTERN E_Pointer *e_pointer_canvas_new(Ecore_Evas *ee, Eina_Bool filled);
-EINTERN void       e_pointer_object_set(E_Pointer *ptr, Evas_Object *obj, int x, int y);
+EINTERN void       e_pointer_view_set(E_Pointer *ptr, E_View_Client *view, int x, int y);
 EINTERN void       e_pointer_touch_move(E_Pointer *ptr, int x, int y);
 EINTERN E_Pointer   *e_pointer_get(E_Client *ec);
 EINTERN void         e_pointer_hide(E_Pointer *ptr);
index 66b233b..e9fdbb4 100644 (file)
@@ -17,6 +17,8 @@
 #include "e_comp_wl_tbm_intern.h"
 #include "e_presentation_time_intern.h"
 #include "e_comp_object_intern.h"
+#include "e_view_intern.h"
+#include "e_view_client_intern.h"
 #include "e_policy_softkey_intern.h"
 #include "e_policy_stack_intern.h"
 
@@ -450,6 +452,7 @@ static void
 _e_policy_client_dialog_policy_apply(E_Policy_Client *pc)
 {
    E_Client *ec;
+   E_View *view;
    int x, y, w, h;
    int zx, zy, zw, zh;
 
@@ -472,7 +475,10 @@ _e_policy_client_dialog_policy_apply(E_Policy_Client *pc)
    y = zy + ((zh - h) / 2);
 
    if ((x != ec->x) || (y != ec->y))
-     evas_object_move(ec->frame, x, y);
+     {
+        view = e_view_client_view_get(e_client_view_get(ec));
+        e_view_position_set(view, x, y);
+     }
 }
 
 static void
@@ -541,7 +547,10 @@ _e_policy_cb_hook_client_del(void *d EINA_UNUSED, E_Client *ec)
 static void
 _e_policy_cb_hook_client_eval_pre_new_client(void *d EINA_UNUSED, E_Client *ec)
 {
-   short ly;
+   E_View *view;
+   E_View_Client *view_client;
+   E_Canvas_Layer layer;
+   E_Layer ly;
 
    if (e_object_is_del(E_OBJECT(ec))) return;
 
@@ -550,15 +559,19 @@ _e_policy_cb_hook_client_eval_pre_new_client(void *d EINA_UNUSED, E_Client *ec)
         ec->placed = 1;
         ec->exp_iconify.skip_iconify = EINA_TRUE;
 
-        EINA_SAFETY_ON_NULL_RETURN(ec->frame);
+        EINA_SAFETY_ON_NULL_RETURN(e_client_view_get(ec));
         if (ec->layer < E_LAYER_CLIENT_ABOVE)
           e_client_layer_set(ec, E_LAYER_CLIENT_ABOVE);
      }
+
+   view_client = e_client_view_get(ec);
    if (e_policy_client_is_noti(ec))
      {
-        if (ec->frame)
+        if (view_client)
           {
-             ly = evas_object_layer_get(ec->frame);
+             view = e_view_client_view_get(view_client);
+             layer = e_view_layer_index_get(view);
+             ly = e_canvas_util_layer_map(layer);
              ELOGF("NOTI", "         |ec->layer:%d object->layer:%d", ec, ec->layer, ly);
              if (ly != ec->layer)
                e_client_layer_set(ec, ec->layer);
@@ -567,7 +580,7 @@ _e_policy_cb_hook_client_eval_pre_new_client(void *d EINA_UNUSED, E_Client *ec)
 
    if (e_policy_client_is_dialog(ec))
      {
-        if (ec->frame && !ec->parent)
+        if (view_client && !ec->parent)
           {
              if (ec->layer != E_POLICY_DIALOG_LAYER)
                e_client_layer_set(ec, E_POLICY_DIALOG_LAYER);
@@ -576,7 +589,7 @@ _e_policy_cb_hook_client_eval_pre_new_client(void *d EINA_UNUSED, E_Client *ec)
 
    if (e_policy_client_is_floating(ec))
      {
-        if (ec->frame)
+        if (view_client)
           {
              if (ec->layer != E_LAYER_CLIENT_ABOVE)
                e_client_layer_set(ec, E_LAYER_CLIENT_ABOVE);
@@ -585,7 +598,7 @@ _e_policy_cb_hook_client_eval_pre_new_client(void *d EINA_UNUSED, E_Client *ec)
 
    if (e_policy_client_is_toast_popup(ec))
      {
-        if (ec->frame)
+        if (view_client)
           {
              if (ec->layer != E_POLICY_TOAST_POPUP_LAYER)
                e_client_layer_set(ec, E_POLICY_TOAST_POPUP_LAYER);
@@ -848,9 +861,9 @@ _e_policy_cb_hook_client_uniconify(void *d EINA_UNUSED, E_Client *ec)
         if ((e_pixmap_image_data_get(ec->pixmap)) &&
             (!e_pixmap_dirty_get(ec->pixmap)))
           {
-             e_comp_object_damage(ec->frame, 0, 0, ec->w, ec->h);
-             e_comp_object_dirty(ec->frame);
-             e_comp_object_render(ec->frame);
+             e_view_client_damage(e_client_view_get(ec), 0, 0, ec->w, ec->h);
+             e_view_client_dirty(e_client_view_get(ec));
+             e_view_client_render(e_client_view_get(ec));
           }
      }
 }
@@ -1156,6 +1169,7 @@ _e_policy_cb_client_resize(void *data EINA_UNUSED, int type EINA_UNUSED, void *e
    E_Event_Client *ev;
    E_Client *ec;
    E_Policy_Client *pc;
+   E_View *view;
    int zh = 0;
 
    ev = (E_Event_Client *)event;
@@ -1170,10 +1184,10 @@ _e_policy_cb_client_resize(void *data EINA_UNUSED, int type EINA_UNUSED, void *e
    /* re-calculate window's position with changed size */
    if (e_policy_client_is_volume_tv(ec))
      {
+        view = e_view_client_view_get(e_client_view_get(ec));
         e_zone_useful_geometry_get(pc->zone, NULL, NULL, NULL, &zh);
-        evas_object_move(ec->frame, 0, (zh / 2) - (ec->h / 2));
-
-        evas_object_pass_events_set(ec->frame, 1);
+        e_view_position_set(view, 0, (zh / 2) - (ec->h / 2));
+        e_view_pass_events_set(view, 1);
      }
 
    /* calculate e_client visibility */
@@ -1453,7 +1467,7 @@ e_policy_client_unmap(E_Client *ec)
    if (send_event)
      e_policy_wl_iconify_state_change_send(ec, 0);
 
-   e_comp_object_effect_set(ec->frame, NULL);
+   e_view_client_effect_set(e_client_view_get(ec), NULL);
 }
 
 EINTERN Eina_Bool
@@ -2282,7 +2296,7 @@ _e_policy_client_pixmap_buffer_clear(E_Policy_Client *policy_client, Eina_Bool o
           }
 
         /* composite object clear */
-        e_comp_object_clear(ec->frame);
+        e_view_client_clear(e_client_view_get(ec));
 
         /* pending frame event callback*/
         if (!ec->comp_data) return;
index 8cbd084..00eba3c 100644 (file)
@@ -2,6 +2,8 @@
 #include "e_comp_wl_intern.h"
 #include "e_config_intern.h"
 #include "e_comp_object_intern.h"
+#include "e_view_intern.h"
+#include "e_view_client_intern.h"
 
 #include <wayland-server.h>
 #include <tizen-extension-server-protocol.h>
@@ -29,7 +31,6 @@ typedef struct
    E_Client_Hook *owner_del_hook;
 } Defer_Job;
 
-
 typedef struct
 {
    Conformant_Type type;
@@ -49,6 +50,13 @@ typedef struct
 
    // comp_object listeners
    struct wl_listener comp_object_hiding;
+
+   //view event
+   struct wl_listener del_listener;
+   struct wl_listener show_listener;
+   struct wl_listener hide_listener;
+   struct wl_listener move_listener;
+   struct wl_listener resize_listener;
 } Conformant_Part;
 
 typedef struct
@@ -280,7 +288,7 @@ _conf_defer_job_cb_owner_del(void *data, E_Client *ec)
 
                   /* checks for dectecting visible state changes */
                   if ((!part_ec->visible) || (part_ec->iconic) || (part_ec->hidden))
-                    evas_object_hide(part_ec->frame);
+                    e_view_client_hide(e_client_view_get(part_ec));
                }
           }
         else if (job->type == DEFER_JOB_RESIZE)
@@ -349,7 +357,7 @@ _conf_client_defer_job_do(Conformant_Client *cfc, uint32_t serial)
 
                        /* checks for dectecting visible state changes */
                        if ((!part_ec->visible) || (part_ec->iconic) || (part_ec->hidden))
-                         evas_object_hide(part_ec->frame);
+                         e_view_client_hide(e_client_view_get(part_ec));
                     }
                }
              else if (job->type == DEFER_JOB_RESIZE)
@@ -508,14 +516,18 @@ _conf_part_owner_find(E_Client *part, Conformant_Type type)
 }
 
 static void
-_conf_cb_part_obj_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
+_conf_cb_part_del(struct wl_listener *listener, void *data)
 {
-   Conformant_Type type = (Conformant_Type)data;
+   Conformant_Part *conf_part;
+   Conformant_Type type;
    Defer_Job *job;
 
    if (!g_conf)
      return;
 
+   conf_part = wl_container_of(listener, conf_part, del_listener);
+   type = conf_part->type;
+
    DBG("PART %s ec(%p) Deleted", _conf_type_to_str(type), g_conf->part[type].ec);
 
    g_conf->part[type].ec = NULL;
@@ -529,14 +541,18 @@ _conf_cb_part_obj_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNU
 }
 
 static void
-_conf_cb_part_obj_show(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
+_conf_cb_part_show(struct wl_listener *listener, void *data)
 {
-   Conformant_Type type = (Conformant_Type)data;
+   Conformant_Part *conf_part;
+   Conformant_Type type;
    E_Client *owner = NULL;
 
    if (!g_conf)
      return;
 
+   conf_part = wl_container_of(listener, conf_part, show_listener);
+   type = conf_part->type;
+
    DBG("PART %s win(%zx), ec(%p) Show", _conf_type_to_str(type), e_client_util_win_get(g_conf->part[type].ec), g_conf->part[type].ec);
 
    owner = _conf_part_owner_find(g_conf->part[type].ec, type);
@@ -549,13 +565,17 @@ _conf_cb_part_obj_show(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UN
 }
 
 static void
-_conf_cb_part_obj_hide(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
+_conf_cb_part_hide(struct wl_listener *listener, void *data)
 {
-   Conformant_Type type = (Conformant_Type)data;
+   Conformant_Part *conf_part;
+   Conformant_Type type;
 
    if (!g_conf)
      return;
 
+   conf_part = wl_container_of(listener, conf_part, hide_listener);
+   type = conf_part->type;
+
    DBG("PART %s win(%zx), ec(%p) Hide", _conf_type_to_str(type), e_client_util_win_get(g_conf->part[type].ec), g_conf->part[type].ec);
    _conf_state_update(type,
                       EINA_FALSE,
@@ -571,54 +591,64 @@ _conf_cb_part_obj_hide(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UN
 }
 
 static void
-_conf_part_cb_comp_object_hiding(struct wl_listener *listener, void *data)
+_conf_cb_part_move(struct wl_listener *listener, void *data)
 {
    Conformant_Part *conf_part;
+   Conformant_Type type;
 
-   conf_part = wl_container_of(listener, conf_part, comp_object_hiding);
+   if (!g_conf)
+     return;
 
-   DBG("PART %s win(%zx), ec(%p) Hiding",
-      _conf_type_to_str(conf_part->type), e_client_util_win_get(conf_part->ec), conf_part->ec);
+   conf_part = wl_container_of(listener, conf_part, move_listener);
+   type = conf_part->type;
 
-   _conf_state_update(conf_part->type,
-                      EINA_FALSE,
-                      conf_part->state.x,
-                      conf_part->state.y,
-                      conf_part->state.w,
-                      conf_part->state.h);
+   DBG("PART %s win(%zx), ec(%p) Move", _conf_type_to_str(type), e_client_util_win_get(g_conf->part[type].ec), g_conf->part[type].ec);
 
-   conf_part->owner = NULL;
+   g_conf->part[type].changed = 1;
 }
 
 static void
-_conf_cb_part_obj_move(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
+_conf_cb_part_resize(struct wl_listener *listener, void *data)
 {
-   Conformant_Type type = (Conformant_Type)data;
+   Conformant_Part *conf_part;
+   Conformant_Type type;
 
    if (!g_conf)
      return;
 
-   DBG("PART %s win(%zx), ec(%p) Move", _conf_type_to_str(type), e_client_util_win_get(g_conf->part[type].ec), g_conf->part[type].ec);
+   conf_part = wl_container_of(listener, conf_part, resize_listener);
+   type = conf_part->type;
+
+   DBG("PART %s win(%zx), ec(%p) Resize", _conf_type_to_str(type), e_client_util_win_get(g_conf->part[type].ec), g_conf->part[type].ec);
 
    g_conf->part[type].changed = 1;
 }
 
 static void
-_conf_cb_part_obj_resize(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
+_conf_part_cb_comp_object_hiding(struct wl_listener *listener, void *data)
 {
-   Conformant_Type type = (Conformant_Type)data;
+   Conformant_Part *conf_part;
 
-   if (!g_conf)
-     return;
+   conf_part = wl_container_of(listener, conf_part, comp_object_hiding);
 
-   DBG("PART %s win(%zx), ec(%p) Resize", _conf_type_to_str(type), e_client_util_win_get(g_conf->part[type].ec), g_conf->part[type].ec);
+   DBG("PART %s win(%zx), ec(%p) Hiding",
+      _conf_type_to_str(conf_part->type), e_client_util_win_get(conf_part->ec), conf_part->ec);
 
-   g_conf->part[type].changed = 1;
+   _conf_state_update(conf_part->type,
+                      EINA_FALSE,
+                      conf_part->state.x,
+                      conf_part->state.y,
+                      conf_part->state.w,
+                      conf_part->state.h);
+
+   conf_part->owner = NULL;
 }
 
 static void
 _conf_part_register(E_Client *ec, Conformant_Type type)
 {
+   E_View *view;
+
    if (!g_conf)
      return;
 
@@ -634,20 +664,31 @@ _conf_part_register(E_Client *ec, Conformant_Type type)
    g_conf->part[type].ec = ec;
    g_conf->part[type].type = type;
 
-   evas_object_event_callback_add(ec->frame, EVAS_CALLBACK_DEL,      _conf_cb_part_obj_del,     (void*)type);
-   evas_object_event_callback_add(ec->frame, EVAS_CALLBACK_SHOW,     _conf_cb_part_obj_show,    (void*)type);
-   evas_object_event_callback_add(ec->frame, EVAS_CALLBACK_HIDE,     _conf_cb_part_obj_hide,    (void*)type);
-   evas_object_event_callback_add(ec->frame, EVAS_CALLBACK_MOVE,     _conf_cb_part_obj_move,    (void*)type);
-   evas_object_event_callback_add(ec->frame, EVAS_CALLBACK_RESIZE,   _conf_cb_part_obj_resize,  (void*)type);
+   view = e_view_client_view_get(e_client_view_get(ec));
+   g_conf->part[type].del_listener.notify = _conf_cb_part_del;
+   e_view_destroy_listener_add(view, &g_conf->part[type].del_listener);
+
+   g_conf->part[type].show_listener.notify = _conf_cb_part_show;
+   e_view_event_listener_add(view, E_VIEW_SHOW, &g_conf->part[type].show_listener);
+
+   g_conf->part[type].hide_listener.notify = _conf_cb_part_hide;
+   e_view_event_listener_add(view, E_VIEW_HIDE, &g_conf->part[type].hide_listener);
+
+   g_conf->part[type].move_listener.notify = _conf_cb_part_move;
+   e_view_event_listener_add(view, E_VIEW_MOVE, &g_conf->part[type].move_listener);
+
+   g_conf->part[type].resize_listener.notify = _conf_cb_part_resize;
+   e_view_event_listener_add(view, E_VIEW_RESIZE, &g_conf->part[type].resize_listener);
 
    g_conf->part[type].comp_object_hiding.notify = _conf_part_cb_comp_object_hiding;
-   e_comp_object_hiding_listener_add(ec->frame, &g_conf->part[type].comp_object_hiding);
+   e_view_client_hide_listener_add(e_client_view_get(ec), &g_conf->part[type].comp_object_hiding);
 }
 
 static void
 _conf_part_deregister(E_Client *ec, Conformant_Type type)
 {
    Defer_Job *job;
+   E_View *view;
 
    if (!g_conf)
      return;
@@ -669,11 +710,12 @@ _conf_part_deregister(E_Client *ec, Conformant_Type type)
    wl_list_remove(&g_conf->part[type].comp_object_hiding.link);
 
    // deregister callback
-   evas_object_event_callback_del_full(ec->frame, EVAS_CALLBACK_DEL,      _conf_cb_part_obj_del,     (void*)type);
-   evas_object_event_callback_del_full(ec->frame, EVAS_CALLBACK_SHOW,     _conf_cb_part_obj_show,    (void*)type);
-   evas_object_event_callback_del_full(ec->frame, EVAS_CALLBACK_HIDE,     _conf_cb_part_obj_hide,    (void*)type);
-   evas_object_event_callback_del_full(ec->frame, EVAS_CALLBACK_MOVE,     _conf_cb_part_obj_move,    (void*)type);
-   evas_object_event_callback_del_full(ec->frame, EVAS_CALLBACK_RESIZE,   _conf_cb_part_obj_resize,  (void*)type);
+   view = e_view_client_view_get(e_client_view_get(ec));
+   wl_list_remove(&g_conf->part[type].del_listener.link);
+   e_view_event_listener_del(view, E_VIEW_SHOW, &g_conf->part[type].show_listener);
+   e_view_event_listener_del(view, E_VIEW_HIDE, &g_conf->part[type].hide_listener);
+   e_view_event_listener_del(view, E_VIEW_MOVE, &g_conf->part[type].move_listener);
+   e_view_event_listener_del(view, E_VIEW_RESIZE, &g_conf->part[type].resize_listener);
 
    g_conf->part[type].type = CONFORMANT_TYPE_MAX;
    g_conf->part[type].ec = NULL;
@@ -927,18 +969,18 @@ _conf_idle_enter(void *data)
              if (g_conf->part[type].ec)
                {
                   E_Client *ec = g_conf->part[type].ec;
+                  E_View *view = e_view_client_view_get(e_client_view_get(ec));
 
                   //wait for end of animation
-                  if ((e_comp_object_is_animating(ec->frame)) ||
-                      (evas_object_data_get(ec->frame, "effect_running")))
+                  if (e_view_client_is_animating(e_client_view_get(ec)) ||
+                      e_view_data_get(view, "effect_running"))
                     {
                        DBG("Animation is running, skip and try next ec(%p)", ec);
                        continue;
                     }
 
-                  visible = evas_object_visible_get(g_conf->part[type].ec->frame);
-                  evas_object_geometry_get(g_conf->part[type].ec->frame, &x, &y, &w, &h);
-
+                  visible = e_view_client_visible_get(e_client_view_get(ec));
+                  e_view_client_geometry_get(e_client_view_get(ec), &x, &y, &w, &h);
                }
              _conf_state_update(type, visible, x, y, w, h);
              g_conf->part[type].changed = EINA_FALSE;
index e4b1745..806246e 100644 (file)
@@ -5,16 +5,19 @@
 #include "e_prefix_intern.h"
 #include "e_theme_intern.h"
 #include "e_config_intern.h"
+#include "e_comp_canvas_intern.h"
+#include "e_view_intern.h"
+#include "e_view_edje_intern.h"
 
-static void         _e_policy_cb_softkey(void *data, Evas_Object *obj EINA_UNUSED, const char *emission, const char *source EINA_UNUSED);
+static void         _e_policy_cb_softkey(void *data, E_View_Edje *edje, const char *emission, const char *source);
 static void         _e_policy_softkey_iconify(E_Zone *zone, Eina_Bool all);
-static Evas_Object *_e_policy_softkey_icon_add(E_Zone *zone, const char *name);
-static void         _e_policy_softkey_icon_del(Evas_Object *comp_obj);
+static E_View_Edje *_e_policy_softkey_icon_add(E_Zone *zone, const char *name);
+static void         _e_policy_softkey_icon_del(E_View_Edje *comp_edje);
 
 static E_Policy_Softkey_Funcs *_e_softkey_funcs = NULL;
 
 static void
-_e_policy_cb_softkey(void *data, Evas_Object *obj EINA_UNUSED, const char *emission, const char *source EINA_UNUSED)
+_e_policy_cb_softkey(void *data, E_View_Edje *edje, const char *emission, const char *source)
 {
    E_Zone *zone;
    Eina_Bool all;
@@ -45,7 +48,7 @@ _e_policy_softkey_iconify(E_Zone *zone, Eina_Bool all)
      {
         if (e_client_util_ignored_get(ec)) continue;
         if (!e_desk_has_ec(desk, ec)) continue;
-        if (!evas_object_visible_get(ec->frame)) continue;
+        if (!e_view_client_visible_get(e_client_view_get(ec))) continue;
 
         if ((launcher) && (launcher->ec == ec))
           return;
@@ -63,43 +66,41 @@ _e_policy_softkey_iconify(E_Zone *zone, Eina_Bool all)
      }
 }
 
-static Evas_Object *
+static E_View_Edje *
 _e_policy_softkey_icon_add(E_Zone *zone, const char *name)
 {
-   Evas_Object *obj, *comp_obj;
+   E_View_Edje *edje, *comp_edje;
    char path[PATH_MAX], group[PATH_MAX];
 
-   obj = edje_object_add(e_comp->evas);
+   edje = e_view_edje_create(e_canvas_layer_view_tree_get(e_comp_canvas_get(), E_CANVAS_LAYER_DESK_OBJECT_ABOVE));
+   EINA_SAFETY_ON_NULL_RETURN_VAL(edje, NULL);
 
    snprintf(group, sizeof(group), "e/modules/policy-mobile/softkey/%s", name);
    e_prefix_data_snprintf(path, sizeof(path), "data/themes/%s", "e-policy.edj");
 
-   if (!e_theme_edje_object_set(obj, NULL, group))
-     edje_object_file_set(obj, path, group);
+   if (!e_theme_edje_view_set(edje, NULL, group))
+     e_view_edje_file_set(edje, path, group);
 
-   edje_object_signal_callback_add(obj, "e,action,softkey,*", "e",
+   e_view_edje_signal_callback_add(edje, "e,action,softkey,*", "e",
                                    _e_policy_cb_softkey, zone);
 
    /* use TYPE_NONE to disable shadow for softkey object */
-   comp_obj = e_comp_object_util_add(obj);
-   evas_object_layer_set(comp_obj, E_LAYER_DESK_OBJECT_ABOVE);
+   comp_edje = e_view_edje_util_add(e_view_edje_view_get(edje));
+   e_view_data_set(e_view_edje_view_get(comp_edje), "policy_mobile_obj", edje);
 
-   evas_object_data_set(comp_obj, "policy_mobile_obj", obj);
-
-   return comp_obj;
+   return comp_edje;
 }
 
 static void
-_e_policy_softkey_icon_del(Evas_Object *comp_obj)
+_e_policy_softkey_icon_del(E_View_Edje *comp_edje)
 {
-   Evas_Object *obj;
-
-   obj = evas_object_data_get(comp_obj, "policy_mobile_obj");
+   E_View_Edje *edje;
 
-   edje_object_signal_callback_del(obj, "e,action,softkey,*",
+   edje = e_view_data_get(e_view_edje_view_get(comp_edje), "policy_mobile_obj");
+   e_view_edje_signal_callback_del(edje, "e,action,softkey,*",
                                    "e", _e_policy_cb_softkey);
-   evas_object_hide(comp_obj);
-   evas_object_del(comp_obj);
+   e_view_hide(e_view_edje_view_get(comp_edje));
+   e_view_destroy(e_view_edje_view_get(comp_edje));
 }
 
 EINTERN E_Policy_Softkey *
@@ -155,8 +156,8 @@ e_policy_softkey_show(E_Policy_Softkey *softkey)
 
    e_policy_softkey_update(softkey);
 
-   evas_object_show(softkey->home);
-   evas_object_show(softkey->back);
+   e_view_show(e_view_edje_view_get(softkey->home));
+   e_view_show(e_view_edje_view_get(softkey->back));
 }
 
 EINTERN void
@@ -167,8 +168,8 @@ e_policy_softkey_hide(E_Policy_Softkey *softkey)
 
    if (!softkey) return;
 
-   evas_object_hide(softkey->home);
-   evas_object_hide(softkey->back);
+   e_view_hide(e_view_edje_view_get(softkey->home));
+   e_view_hide(e_view_edje_view_get(softkey->back));
 }
 
 E_API void
@@ -189,8 +190,8 @@ e_policy_softkey_update(E_Policy_Softkey *softkey)
    y = h - oh;
    space = ow * 4;
 
-   evas_object_geometry_set(softkey->home, x - space, y, ow, oh);
-   evas_object_geometry_set(softkey->back, x + space, y, ow, oh);
+   e_view_edje_geometry_set(softkey->home, x - space, y, ow, oh);
+   e_view_edje_geometry_set(softkey->back, x + space, y, ow, oh);
 }
 
 E_API int
@@ -203,7 +204,7 @@ e_policy_softkey_visible_get(E_Policy_Softkey *softkey)
 
    if (!softkey) return 0;
 
-   visible = evas_object_visible_get(softkey->home);
+   visible = e_view_visible_get(e_view_edje_view_get(softkey->home));
    return visible;
 }
 
index 43f842d..99f7f99 100644 (file)
@@ -428,10 +428,10 @@ EINTERN void
 e_policy_stack_below(E_Client *ec, E_Client *below_ec)
 {
    EINA_SAFETY_ON_NULL_RETURN(ec);
-   EINA_SAFETY_ON_NULL_RETURN(ec->frame);
+   EINA_SAFETY_ON_NULL_RETURN(e_client_view_get(ec));
 
    EINA_SAFETY_ON_NULL_RETURN(below_ec);
-   EINA_SAFETY_ON_NULL_RETURN(below_ec->frame);
+   EINA_SAFETY_ON_NULL_RETURN(e_client_view_get(below_ec));
 
    e_client_stack_below(ec, below_ec);
 }
@@ -440,10 +440,10 @@ EINTERN void
 e_policy_stack_above(E_Client *ec, E_Client *above_ec)
 {
    EINA_SAFETY_ON_NULL_RETURN(ec);
-   EINA_SAFETY_ON_NULL_RETURN(ec->frame);
+   EINA_SAFETY_ON_NULL_RETURN(e_client_view_get(ec));
 
    EINA_SAFETY_ON_NULL_RETURN(above_ec);
-   EINA_SAFETY_ON_NULL_RETURN(above_ec->frame);
+   EINA_SAFETY_ON_NULL_RETURN(e_client_view_get(above_ec));
 
    e_client_stack_above(ec, above_ec);
 }
index 09beca4..045947a 100644 (file)
@@ -12,6 +12,8 @@
 #include "e_client_intern.h"
 #include "e_comp_object_intern.h"
 #include "e_config_intern.h"
+#include "e_view_intern.h"
+#include "e_view_client_intern.h"
 #include "e_policy_stack_intern.h"
 
 #ifdef ENABLE_TTRACE
@@ -537,7 +539,7 @@ _e_vis_update_forground_list(void)
    E_CLIENT_REVERSE_FOREACH(ec)
      {
         /* TODO: check if client is included to zone of mobile */
-        if (!evas_object_visible_get(ec->frame)) continue;
+        if (!e_view_client_visible_get(e_client_view_get(ec))) continue;
 
         pol_vis->fg_clients = eina_list_append(pol_vis->fg_clients, ec);
         if (_e_vis_ec_activity_check(ec, EINA_TRUE, EINA_TRUE))
@@ -888,11 +890,11 @@ _e_vis_client_handle_buffer_attach(E_Vis_Client *vc)
    /* force update
     * NOTE: this update can invoke some functions related to visibility grab */
    /* if comp_object is not redirected, the compositor doesn't want to update it */
-   if (e_comp_object_redirected_get(ec->frame))
+   if (e_view_client_redirected_get(e_client_view_get(ec)))
      {
-        e_comp_object_damage(ec->frame, 0, 0, ec->w, ec->h);
-        e_comp_object_dirty(ec->frame);
-        e_comp_object_render(ec->frame);
+        e_view_client_damage(e_client_view_get(ec), 0, 0, ec->w, ec->h);
+        e_view_client_dirty(e_client_view_get(ec));
+        e_view_client_render(e_client_view_get(ec));
      }
 
    l = eina_list_clone(vc->wait_buf_attach_grab_list);
@@ -1081,9 +1083,12 @@ _e_vis_client_grab_cancel(E_Vis_Client *vc)
 }
 
 static void
-_e_vis_client_cb_evas_show(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED)
+_e_vis_client_cb_show(struct wl_listener *listener, void *data)
 {
-   OBJ_EC_GET(ec, obj);
+   E_Client *ec;
+
+   ec = wl_container_of(listener, ec, visibility.show_listener);
+
    VS_DBG(ec, "CALLBACK 'SHOW'...");
    _e_vis_update_foreground_job_queue();
    E_VIS_CLIENT_GET_OR_RETURN(vc, ec);
@@ -1105,9 +1110,12 @@ _e_vis_client_cb_evas_show(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Obj
 }
 
 static void
-_e_vis_client_cb_evas_hide(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED)
+_e_vis_client_cb_hide(struct wl_listener *listener, void *data)
 {
-   OBJ_EC_GET(ec, obj);
+   E_Client *ec;
+
+   ec = wl_container_of(listener, ec, visibility.hide_listener);
+
    VS_DBG(ec, "CALLBACK 'HIDE'...");
    _e_vis_update_foreground_job_queue();
    E_VIS_CLIENT_GET_OR_RETURN(vc, ec);
@@ -1120,38 +1128,51 @@ _e_vis_client_cb_evas_hide(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Obj
 }
 
 static void
-_e_vis_client_cb_evas_move(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED)
+_e_vis_client_cb_move(struct wl_listener *listener, void *data)
 {
    Evas_Coord x, y;
    Eina_Bool visible;
+   E_Client *ec;
+   E_View_Client *view_client;
+
+   ec = wl_container_of(listener, ec, visibility.move_listener);
+   view_client = e_client_view_get(ec);
 
-   OBJ_EC_GET(ec, obj);
-   evas_object_geometry_get(obj, &x, &y, NULL, NULL);
-   visible = evas_object_visible_get(obj);
+   e_view_client_geometry_get(view_client, &x, &y, NULL, NULL);
+   visible = e_view_client_visible_get(view_client);
    VS_DBG(ec, "CALLBACK 'MOVE'... %d %d (v %d)", x, y, visible);
    if (visible) _e_vis_update_foreground_job_queue();
 }
 
 static void
-_e_vis_client_cb_evas_resize(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED)
+_e_vis_client_cb_resize(struct wl_listener *listener, void *data)
 {
    Evas_Coord w, h;
    Eina_Bool visible;
+   E_Client *ec;
+   E_View_Client *view_client;
+
+   ec = wl_container_of(listener, ec, visibility.resize_listener);
+   view_client = e_client_view_get(ec);
+
+   e_view_client_geometry_get(view_client, NULL, NULL, &w, &h);
+   visible = e_view_client_visible_get(view_client);
 
-   OBJ_EC_GET(ec, obj);
-   evas_object_geometry_get(obj, NULL, NULL, &w, &h);
-   visible = evas_object_visible_get(obj);
    VS_DBG(ec, "CALLBACK 'RESIZE'... %d %d (v %d)", w, h, visible);
    if (visible) _e_vis_update_foreground_job_queue();
 }
 
 static void
-_e_vis_client_cb_evas_restack(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
+_e_vis_client_cb_restack(struct wl_listener *listener, void *data)
 {
    Eina_Bool visible;
+   E_Client *ec;
+   E_View_Client *view_client;
 
-   OBJ_EC_GET(ec, obj);
-   visible = evas_object_visible_get(obj);
+   ec = wl_container_of(listener, ec, visibility.restack_listener);
+   view_client = e_client_view_get(ec);
+
+   visible = e_view_client_visible_get(view_client);
    VS_DBG(ec, "CALLBACK 'RESTACK'... v %d", visible);
    if (visible) _e_vis_update_foreground_job_queue();
 }
@@ -1642,7 +1663,7 @@ _e_vis_ec_activity_check(E_Client *ec, Eina_Bool check_alpha, Eina_Bool check_fu
    /* check deleted client */
    if (e_object_is_del(E_OBJECT(ec))) return EINA_FALSE;
    /* check launchscreen */
-   if (ec->frame) type = e_comp_object_content_type_get(ec->frame);
+   if (e_client_view_get(ec)) type = e_view_client_content_type_get(e_client_view_get(ec));
    if ((type == E_COMP_OBJECT_CONTENT_TYPE_EXT_IMAGE) ||
        (type == E_COMP_OBJECT_CONTENT_TYPE_EXT_EDJE))
      check_mapped = 0;
@@ -1701,7 +1722,7 @@ _e_vis_client_job_exec_by_type(E_Vis_Client *vc, E_Vis_Job_Type type)
          e_client_lower(ec);
          break;
       case E_VIS_JOB_TYPE_HIDE:
-         evas_object_hide(ec->frame);
+         e_view_client_hide(e_client_view_get(ec));
          break;
       case E_VIS_JOB_TYPE_LAYER_LOWER:
          e_client_layer_set(ec, vc->layer);
@@ -1714,7 +1735,7 @@ _e_vis_client_job_exec_by_type(E_Vis_Client *vc, E_Vis_Job_Type type)
          if ((!e_object_is_del(E_OBJECT(ec))) &&
              (ec->visible) && (!ec->hidden) &&
              (!ec->iconic) && (!ec->ignored))
-           evas_object_show(ec->frame);
+           e_view_client_show(e_client_view_get(ec));
 
          if (vc->wait_for_child)
            {
@@ -1735,7 +1756,9 @@ _e_vis_client_job_exec_by_type(E_Vis_Client *vc, E_Vis_Job_Type type)
          if ((!e_object_is_del(E_OBJECT(ec))) &&
              (ec->visible) && (!ec->hidden) &&
              (!ec->iconic) && (!ec->ignored))
-           evas_object_move(ec->frame, ec->x, ec->y);
+           {
+              e_view_position_set(e_view_client_view_get(e_client_view_get(ec)), ec->x, ec->y);
+           }
          break;
 
       default:
@@ -1748,6 +1771,7 @@ static E_Pol_Vis_Type
 _e_vis_ec_above_visible_type(E_Client *ec, Eina_Bool check_child)
 {
    E_Client *above;
+   E_View *view;
    E_Pol_Vis_Type above_vis_type = E_POL_VIS_TYPE_ALPHA;
    int ex, ey, ew, eh;
    int ax, ay, aw, ah;
@@ -1779,7 +1803,8 @@ _e_vis_ec_above_visible_type(E_Client *ec, Eina_Bool check_child)
    for (above = e_client_above_get(ec); above; above = e_client_above_get(above))
      {
         if (e_client_util_ignored_get(above)) continue;
-        if (above->frame && evas_object_data_get(above->frame, "comp_skip")) continue;
+        view = e_view_client_view_get(e_client_view_get(above));
+        if (e_view_data_get(view, "comp_skip")) continue;
         if (check_child && (above->parent == ec)) continue;
         if (above->first_mapped)
           {
@@ -1912,7 +1937,6 @@ _e_vis_ec_below_activity_clients_get(E_Client *ec, Eina_List **below_list)
         if (!below->internal)
           *below_list = eina_list_prepend(*below_list, vc);
 
-
         if (!(below->argb) || !(below->visibility.opaque != E_ALPHA_OPAQUE_SET))
           {
              eina_tiler_union(above_tile, below_tile);
@@ -2007,23 +2031,40 @@ _e_vis_ec_below_uniconify(E_Client *ec, E_Pol_Vis_Type above_vis_type)
 static void
 _e_vis_ec_setup(E_Client *ec)
 {
+   E_View *view;
+
    e_object_delay_del_set(E_OBJECT(ec), _e_vis_client_delay_del);
-   evas_object_event_callback_add(ec->frame, EVAS_CALLBACK_SHOW,     _e_vis_client_cb_evas_show,     NULL);
-   evas_object_event_callback_add(ec->frame, EVAS_CALLBACK_HIDE,     _e_vis_client_cb_evas_hide,     NULL);
-   evas_object_event_callback_add(ec->frame, EVAS_CALLBACK_MOVE,     _e_vis_client_cb_evas_move,     NULL);
-   evas_object_event_callback_add(ec->frame, EVAS_CALLBACK_RESIZE,   _e_vis_client_cb_evas_resize,   NULL);
-   evas_object_event_callback_add(ec->frame, EVAS_CALLBACK_RESTACK,  _e_vis_client_cb_evas_restack,  NULL);
+
+   view = e_view_client_view_get(e_client_view_get(ec));
+   ec->visibility.show_listener.notify = _e_vis_client_cb_show;
+   e_view_event_listener_add(view, E_VIEW_SHOW, &ec->visibility.show_listener);
+
+   ec->visibility.hide_listener.notify = _e_vis_client_cb_hide;
+   e_view_event_listener_add(view, E_VIEW_HIDE, &ec->visibility.hide_listener);
+
+   ec->visibility.move_listener.notify = _e_vis_client_cb_move;
+   e_view_event_listener_add(view, E_VIEW_MOVE, &ec->visibility.move_listener);
+
+   ec->visibility.resize_listener.notify = _e_vis_client_cb_resize;
+   e_view_event_listener_add(view, E_VIEW_RESIZE, &ec->visibility.resize_listener);
+
+   ec->visibility.restack_listener.notify = _e_vis_client_cb_restack;
+   e_view_event_listener_add(view, E_VIEW_RESTACK, &ec->visibility.restack_listener);
 }
 
 static void
 _e_vis_ec_reset(E_Client *ec)
 {
+   E_View *view;
+
    e_object_delay_del_set(E_OBJECT(ec), NULL);
-   evas_object_event_callback_del(ec->frame, EVAS_CALLBACK_SHOW,     _e_vis_client_cb_evas_show);
-   evas_object_event_callback_del(ec->frame, EVAS_CALLBACK_HIDE,     _e_vis_client_cb_evas_hide);
-   evas_object_event_callback_del(ec->frame, EVAS_CALLBACK_MOVE,     _e_vis_client_cb_evas_move);
-   evas_object_event_callback_del(ec->frame, EVAS_CALLBACK_RESIZE,   _e_vis_client_cb_evas_resize);
-   evas_object_event_callback_del(ec->frame, EVAS_CALLBACK_RESTACK,  _e_vis_client_cb_evas_restack);
+
+   view = e_view_client_view_get(e_client_view_get(ec));
+   e_view_event_listener_del(view, E_VIEW_SHOW, &ec->visibility.show_listener);
+   e_view_event_listener_del(view, E_VIEW_HIDE, &ec->visibility.hide_listener);
+   e_view_event_listener_del(view, E_VIEW_MOVE, &ec->visibility.move_listener);
+   e_view_event_listener_del(view, E_VIEW_RESIZE, &ec->visibility.resize_listener);
+   e_view_event_listener_del(view, E_VIEW_RESTACK, &ec->visibility.restack_listener);
 }
 
 static void
index 8049206..ab166cc 100644 (file)
@@ -1,6 +1,7 @@
 #include "services/e_service_cbhm_intern.h"
 #include "e_policy_conformant.h"
 #include "e_policy_wl_intern.h"
+#include "e_view_client_intern.h"
 
 typedef struct _E_Policy_Cbhm E_Policy_Cbhm;
 
@@ -13,6 +14,8 @@ struct _E_Policy_Cbhm
    Eina_List *hooks;
    Eina_List *intercept_hooks;
    Eina_List *events;
+
+   struct wl_listener show_listener;
 };
 
 static E_Policy_Cbhm *_pol_cbhm = NULL;
@@ -26,6 +29,14 @@ _cbhm_get()
 static void
 _cbhm_free(E_Policy_Cbhm *cbhm)
 {
+  E_View_Client *view_client = e_client_view_get(cbhm->ec);
+
+  if (view_client)
+    {
+       e_view_event_listener_del(e_view_client_view_get(view_client), E_VIEW_SHOW, &cbhm->show_listener);
+       cbhm->show_listener.notify = NULL;
+    }
+
    E_FREE_LIST(cbhm->events, ecore_event_handler_del);
    E_FREE_LIST(cbhm->hooks, e_client_hook_del);
    E_FREE_LIST(cbhm->intercept_hooks, e_comp_object_intercept_hook_del);
@@ -33,13 +44,13 @@ _cbhm_free(E_Policy_Cbhm *cbhm)
 }
 
 static void
-_cbhm_cb_evas_show(void *d, Evas *evas EINA_UNUSED, Evas_Object *obj, void *event)
+_cbhm_cb_show(struct wl_listener *listener, void *data)
 {
    E_Policy_Cbhm *cbhm;
    E_Client *ec;
    E_Comp_Wl_Client_Data *cdata;
 
-   cbhm = d;
+   cbhm = wl_container_of(listener, cbhm, show_listener);
    if (EINA_UNLIKELY(!cbhm))
      return;
 
@@ -47,9 +58,6 @@ _cbhm_cb_evas_show(void *d, Evas *evas EINA_UNUSED, Evas_Object *obj, void *even
    if (EINA_UNLIKELY(!ec))
      return;
 
-   if (ec->frame != obj)
-     return;
-
    cdata = e_client_cdata_get(ec);
    if ((!cbhm->show_block) && (cdata->mapped))
      cbhm->show_block = EINA_TRUE;
@@ -122,16 +130,24 @@ _e_cbhm_vis_change(E_Policy_Cbhm *cbhm, Eina_Bool vis)
 {
    E_Client *ec;
    E_Zone *zone;
+   E_View_Client *view_client;
    Eina_Bool cur_vis = EINA_FALSE;
    int x, y, w, h;
 
    ec = cbhm->ec;
    zone = cbhm->zone;
 
-   evas_object_geometry_get(ec->frame, &x, &y, &w, &h);
+   view_client = e_client_view_get(ec);
+   if (!view_client)
+     {
+        ELOGFE("CBHM", "view client is not exist in E_Client", ec);
+        return;
+     }
+
+   e_view_client_geometry_get(view_client, &x, &y, &w, &h);
 
    if (E_INTERSECTS(x, y, w, h, zone->x, zone->y, zone->w, zone->h))
-     cur_vis = evas_object_visible_get(ec->frame);
+     cur_vis = e_view_client_visible_get(view_client);
 
    if (cur_vis == vis)
      return;
@@ -150,13 +166,13 @@ _e_cbhm_vis_change(E_Policy_Cbhm *cbhm, Eina_Bool vis)
         else
           {
              ec->visible = EINA_TRUE;
-             evas_object_show(ec->frame);
+             e_view_client_show(view_client);
              e_client_raise(ec);
           }
 
-        e_comp_object_damage(ec->frame, 0, 0, ec->w, ec->h);
-        e_comp_object_dirty(ec->frame);
-        e_comp_object_render(ec->frame);
+        e_view_client_damage(view_client, 0, 0, ec->w, ec->h);
+        e_view_client_dirty(view_client);
+        e_view_client_render(view_client);
      }
    else
      {
@@ -180,6 +196,7 @@ e_service_cbhm_client_set(E_Client *ec)
 {
    E_Policy_Cbhm *cbhm;
    E_Comp_Wl_Client_Data *cdata;
+   E_View_Client *view_client;
 
    if (EINA_UNLIKELY(!ec))
      {
@@ -195,7 +212,7 @@ e_service_cbhm_client_set(E_Client *ec)
    /* check for wayland pixmap */
    if (e_pixmap_type_get(ec->pixmap) != E_PIXMAP_TYPE_WL) return;
 
-   /* if we have not setup evas callbacks for this client, do it */
+   /* if we have not setup callbacks for this client, do it */
    if (_pol_cbhm)
      {
         ERR("A CBHM Client already exists ec(%p)", _pol_cbhm->ec);
@@ -222,7 +239,14 @@ e_service_cbhm_client_set(E_Client *ec)
    e_client_window_role_set(ec, "cbhm");
    e_policy_conformant_part_add(ec);
 
-   evas_object_event_callback_add(ec->frame, EVAS_CALLBACK_SHOW, _cbhm_cb_evas_show, cbhm);
+   view_client = e_client_view_get(ec);
+   if (view_client)
+     {
+        E_View *view = e_view_client_view_get(view_client);
+        cbhm->show_listener.notify = _cbhm_cb_show;
+        e_view_event_listener_add(view, E_VIEW_SHOW, &cbhm->show_listener);
+     }
+
    E_CLIENT_HOOK_APPEND(cbhm->hooks, E_CLIENT_HOOK_DEL, _cbhm_hook_client_del, cbhm);
    E_LIST_HANDLER_APPEND(cbhm->events, E_EVENT_CLIENT_ZONE_SET, _cbhm_cb_client_zone_set, cbhm);
    E_COMP_OBJECT_INTERCEPT_HOOK_APPEND(cbhm->intercept_hooks, E_COMP_OBJECT_INTERCEPT_HOOK_SHOW_HELPER, _cbhm_intercept_hook_show, cbhm);
index 3b460d4..06b32b4 100644 (file)
@@ -3,6 +3,7 @@
 #include "e_comp_wl_intern.h"
 #include "e_dnd_intern.h"
 #include "e_policy_private_data.h"
+#include "e_view_client_intern.h"
 
 #include <wayland-server.h>
 #include <tzsh_server.h>
@@ -77,7 +78,7 @@ _kvm_hook_drag_start(void *d EINA_UNUSED, E_Drag *drag)
    EINA_ITERATOR_FOREACH(it, esk)
      {
          // Workaround: Feed mouse out/in to make sure that the mouse in to correct client.
-         // The evas event mouse in/out is not emit during dragging(mouse move with mouse button pressed).
+         // The event mouse in/out is not emit during dragging(mouse move with mouse button pressed).
          // It makes the pointer still locked after mouse out from kvm window When the drag started.
          source = e_comp_wl->drag_source;
          source_client = wl_resource_get_client(source->resource);
@@ -368,6 +369,7 @@ EINTERN Eina_Bool
 e_service_kvm_transparent_set(E_Service_Kvm *esk, Eina_Bool set)
 {
    E_Client *ec;
+   E_View *view;
 
    EINA_SAFETY_ON_NULL_RETURN_VAL(esk, EINA_FALSE);
 
@@ -376,10 +378,18 @@ e_service_kvm_transparent_set(E_Service_Kvm *esk, Eina_Bool set)
 
    ELOGF("KVM", "set KVM service(%p) client to %s", ec, esk, set? "transparent" : "opaque");
 
+   if (!e_client_view_get(ec))
+     {
+        ELOGF("KVM", "ERROR... view_client for ec doesn't exist.", ec);
+        return EINA_FALSE;
+     }
+
+   view = e_view_client_view_get(e_client_view_get(ec));
+
    if (set)
-     evas_object_color_set(ec->frame, 0, 0, 0, 0);
+     e_view_color_set(view, 0, 0, 0, 0);
    else
-     evas_object_color_set(ec->frame, 255, 255, 255, 255);
+     e_view_color_set(view, 255, 255, 255, 255);
 
    return EINA_TRUE;
 }
index cfb2126..99210a1 100644 (file)
@@ -10,6 +10,8 @@
 #include "e_comp_object_intern.h"
 #include "e_utils_intern.h"
 #include "e_appinfo_intern.h"
+#include "e_view_intern.h"
+#include "e_view_client_intern.h"
 
 #include <tzsh_server.h>
 #include <wayland-tbm-server.h>
@@ -328,10 +330,10 @@ _launcher_post_forward(E_Service_Launcher *lc, Eina_Bool success)
      _launcher_launched_ec_set(lc, target_ec);
 
    //show target_ec
-   e_comp_object_damage(target_ec->frame, 0, 0, target_ec->w, target_ec->h);
-   e_comp_object_dirty(target_ec->frame);
-   e_comp_object_render(target_ec->frame);
-   evas_object_show(target_ec->frame);
+   e_view_client_damage(e_client_view_get(target_ec), 0, 0, target_ec->w, target_ec->h);
+   e_view_client_dirty(e_client_view_get(target_ec));
+   e_view_client_render(e_client_view_get(target_ec));
+   e_view_client_show(e_client_view_get(target_ec));
 
    e_comp_client_override_del(target_ec);
 }
@@ -1335,7 +1337,7 @@ _launcher_cb_launch_done(struct wl_client *client EINA_UNUSED,
                     {
                        E_Comp_Wl_Client_Data *target_cdata = e_client_cdata_get(target_ec);
                        ELOGF("LAUNCH", "SHOW real win (target->frame:%p, map:%d) by launcher service (win:0x%08zx, ec:%p).", target_ec, target_ec->frame, target_cdata->mapped, e_client_util_win_get(lc->ec), lc->ec);
-                       e_comp_object_signal_emit(target_ec->frame, "e,action,launch_real,done", "e");
+                       e_view_client_signal_emit(e_client_view_get(target_ec), "e,action,launch_real,done", "e");
                     }
                   e_comp_object_signal_emit(target_ec->frame, "e,action,launch,done", "e");
                }
@@ -1405,7 +1407,7 @@ _launcher_handler_rsm_provider_client_find(E_Client *rsm_consumer_ec)
         /* check remote surface provider */
         if (!prov_ec->remote_surface.provider) continue;
         if (prov_ec->visible) continue;
-        if (evas_object_visible_get(prov_ec->frame)) continue;
+        if (e_view_client_visible_get(e_client_view_get(prov_ec))) continue;
         prov_cdata = e_client_cdata_get(prov_ec);
         if (prov_cdata->mapped) continue;
         if (!(lc = _launcher_handler_launcher_find(prov_ec))) continue;
index 4b488d4..727764d 100644 (file)
@@ -8,6 +8,8 @@
 #include "e_client_intern.h"
 #include "e_comp_object_intern.h"
 #include "e_layout_intern.h"
+#include "e_view_intern.h"
+#include "e_view_client_intern.h"
 
 #define SMART_NAME            "quickpanel_object"
 #define INTERNAL_ENTRY                       \
@@ -22,7 +24,7 @@ do                                           \
      {                                       \
         qp->show_block = EINA_FALSE;         \
         qp->ec->visible = EINA_TRUE;         \
-        evas_object_show(qp->ec->frame);     \
+        e_view_client_show(e_client_view_get(qp->ec));            \
                                              \
         if (qp->bg_rect)                     \
           {                                  \
@@ -40,7 +42,7 @@ do                                           \
      {                                       \
         qp->show_block = EINA_TRUE;          \
         qp->ec->visible = EINA_FALSE;        \
-        evas_object_hide(qp->ec->frame);     \
+        e_view_client_hide(e_client_view_get(qp->ec));        \
                                              \
         if (qp->bg_rect)                     \
           {                                  \
@@ -137,6 +139,11 @@ struct _E_Policy_Quickpanel
    } geom;
 
    E_Client *gesture_target;
+
+   // view listener
+   struct wl_listener show_listener;
+   struct wl_listener hide_listener;
+   struct wl_listener move_listener;
 };
 
 struct _Mover_Data
@@ -178,10 +185,6 @@ static Eina_Bool     _e_qp_client_scrollable_update(E_Policy_Quickpanel *qp);
 static Eina_Bool     _e_qp_client_scrollable_state_set(E_Client *ec, E_Quickpanel_Type type, E_Quickpanel_Client_Scroll_State state);
 static E_Quickpanel_Client_Scroll_State _e_qp_client_scrollable_state_get(E_Client *ec, E_Quickpanel_Type type);
 
-static void          _quickpanel_client_evas_cb_show(void *data, Evas *evas, Evas_Object *obj, void *event);
-static void          _quickpanel_client_evas_cb_hide(void *data, Evas *evas, Evas_Object *obj, void *event);
-static void          _quickpanel_client_evas_cb_move(void *data, Evas *evas, Evas_Object *obj, void *event);
-
 static Eina_Bool     _quickpanel_check_skip_client(E_Client *ec);
 
 inline static Eina_Bool
@@ -258,9 +261,9 @@ _mover_intercept_show(void *data, Evas_Object *obj)
    ec = md->ec;
 
    /* force update */
-   e_comp_object_damage(ec->frame, 0, 0, ec->w, ec->h);
-   e_comp_object_dirty(ec->frame);
-   e_comp_object_render(ec->frame);
+   e_view_client_damage(e_client_view_get(ec), 0, 0, ec->w, ec->h);
+   e_view_client_dirty(e_client_view_get(ec));
+   e_view_client_render(e_client_view_get(ec));
 
    // desk-zoom-set apply map on all e_desk's smart_data(clients)
    // to properly pack a quickpanel window on the mover's e_layout_object
@@ -375,7 +378,7 @@ _mover_smart_del(Evas_Object *obj)
 
    if (md->qp_layout_obj) evas_object_del(md->qp_layout_obj);
 
-   evas_object_color_set(ec->frame, ec->netwm.opacity, ec->netwm.opacity, ec->netwm.opacity, ec->netwm.opacity);
+   e_view_color_set(e_view_client_view_get(e_client_view_get(ec)), ec->netwm.opacity, ec->netwm.opacity, ec->netwm.opacity, ec->netwm.opacity);
 
    e_comp_client_override_del(ec);
 
@@ -383,9 +386,9 @@ _mover_smart_del(Evas_Object *obj)
     * we need to force update 'E_Client' here even if update only evas_object,
     * because our render loop would not be started by chaning evas object,
     * we need to make a change on the 'E_Client'. */
-   e_comp_object_damage(ec->frame, 0, 0, ec->w, ec->h);
-   e_comp_object_dirty(ec->frame);
-   e_comp_object_render(ec->frame);
+   e_view_client_damage(e_client_view_get(ec), 0, 0, ec->w, ec->h);
+   e_view_client_dirty(e_client_view_get(ec));
+   e_view_client_render(e_client_view_get(ec));
 
    e_layout_unpack(ec->frame);
 
@@ -741,7 +744,7 @@ _e_qp_srv_effect_finish_job_end(E_Policy_Quickpanel *qp)
      {
         if ((!qp->ec->focused) &&
             (qp->ec->icccm.accepts_focus || qp->ec->icccm.take_focus) &&
-            (evas_object_visible_get(qp->ec->frame) == EINA_TRUE))
+            (e_view_client_visible_get(e_client_view_get(qp->ec)) == EINA_TRUE))
           {
              ELOGF("QUICKPANEL", "effect finished but not focused. focus set to quickpanel", qp->ec);
              e_client_focus_latest_set(qp->ec);
@@ -861,7 +864,7 @@ _e_qp_srv_effect_finish_job_stop(E_Policy_Quickpanel *qp)
         if ((qp->ec) &&
             (!qp->ec->focused) &&
             (qp->ec->icccm.accepts_focus || qp->ec->icccm.take_focus) &&
-            (evas_object_visible_get(qp->ec->frame) == EINA_TRUE))
+            (e_view_client_visible_get(e_client_view_get(qp->ec)) == EINA_TRUE))
           {
              ELOGF("QUICKPANEL", "effect finished but not focused. focus set to quickpanel", qp->ec);
              e_client_focus_latest_set(qp->ec);
@@ -1333,11 +1336,20 @@ _region_obj_cb_gesture_end(void *data EINA_UNUSED, Evas_Object *handler, int nfi
 static void
 _quickpanel_free(E_Policy_Quickpanel *qp)
 {
+   E_View *view;
+   E_View_Client *view_client;
+
    ELOGF("QUICKPANEL", "Remove Client | qp %p", qp->ec, qp);
 
-   evas_object_event_callback_del(qp->ec->frame, EVAS_CALLBACK_SHOW, _quickpanel_client_evas_cb_show);
-   evas_object_event_callback_del(qp->ec->frame, EVAS_CALLBACK_HIDE, _quickpanel_client_evas_cb_hide);
-   evas_object_event_callback_del(qp->ec->frame, EVAS_CALLBACK_MOVE, _quickpanel_client_evas_cb_move);
+   if (qp->ec)
+     {
+        view_client = e_client_view_get(qp->ec);
+        view = e_view_client_view_get(view_client);
+
+        e_view_event_listener_del(view, E_VIEW_SHOW, &qp->show_listener);
+        e_view_event_listener_del(view, E_VIEW_HIDE, &qp->hide_listener);
+        e_view_event_listener_del(view, E_VIEW_MOVE, &qp->move_listener);
+     }
 
    if (qp->bg_rect)
      evas_object_del(qp->bg_rect);
@@ -1374,27 +1386,6 @@ _quickpanel_hook_client_del(void *d, E_Client *ec)
    _quickpanel_free(qp);
 }
 
-static void
-_quickpanel_client_evas_cb_show(void *data, Evas *evas, Evas_Object *obj, void *event)
-{
-   E_Policy_Quickpanel *qp;
-   E_Client *ec;
-
-   qp = data;
-   if (EINA_UNLIKELY(!qp))
-     return;
-
-   evas_object_show(qp->handler_obj);
-   evas_object_raise(qp->handler_obj);
-   evas_object_hide(qp->indi_obj);
-
-   ec = qp->ec;
-   if (ec)
-     e_policy_client_buffer_flush_cancel(ec);
-
-   E_FREE_FUNC(qp->buf_change_hdlr, ecore_event_handler_del);
-}
-
 static Eina_Bool
 _quickpanel_cb_buffer_change(void *data, int type, void *event)
 {
@@ -1418,22 +1409,22 @@ _quickpanel_cb_buffer_change(void *data, int type, void *event)
      goto end;
 
    /* render forcibly */
-   e_comp_object_damage(ec->frame, 0, 0, ec->w, ec->h);
-   e_comp_object_dirty(ec->frame);
-   e_comp_object_render(ec->frame);
+   e_view_client_damage(e_client_view_get(ec), 0, 0, ec->w, ec->h);
+   e_view_client_dirty(e_client_view_get(ec));
+   e_view_client_render(e_client_view_get(ec));
 
    /* make frame event */
    e_pixmap_image_clear(ec->pixmap, EINA_TRUE);
 
    /* use single buffer if qp service's ec is invisible */
-   evas_object_geometry_get(ec->frame, &x, &y, &w, &h);
+   e_view_client_geometry_get(e_client_view_get(ec), &x, &y, &w, &h);
 
    if (E_INTERSECTS(x, y, w, h,
                     qp->zone->x,
                     qp->zone->y,
                     qp->zone->w,
                     qp->zone->h))
-     vis = evas_object_visible_get(ec->frame);
+     vis = e_view_client_visible_get(e_client_view_get(ec));
 
    if (!vis)
      e_pixmap_buffer_clear(ec->pixmap, EINA_TRUE);
@@ -1443,11 +1434,32 @@ end:
 }
 
 static void
-_quickpanel_client_evas_cb_hide(void *data, Evas *evas, Evas_Object *obj, void *event)
+_quickpanel_client_view_cb_show(struct wl_listener *listener, void *data)
 {
    E_Policy_Quickpanel *qp;
+   E_Client *ec;
 
-   qp = data;
+   qp = wl_container_of(listener, qp, show_listener);
+   if (EINA_UNLIKELY(!qp))
+     return;
+
+   evas_object_show(qp->handler_obj);
+   evas_object_raise(qp->handler_obj);
+   evas_object_hide(qp->indi_obj);
+
+   ec = qp->ec;
+   if (ec)
+     e_policy_client_buffer_flush_cancel(ec);
+
+   E_FREE_FUNC(qp->buf_change_hdlr, ecore_event_handler_del);
+}
+
+static void
+_quickpanel_client_view_cb_hide(struct wl_listener *listener, void *data)
+{
+   E_Policy_Quickpanel *qp;
+
+   qp = wl_container_of(listener, qp, hide_listener);
    if (EINA_UNLIKELY(!qp))
      return;
 
@@ -1461,18 +1473,23 @@ _quickpanel_client_evas_cb_hide(void *data, Evas *evas, Evas_Object *obj, void *
 }
 
 static void
-_quickpanel_client_evas_cb_move(void *data, Evas *evas, Evas_Object *obj, void *event)
+_quickpanel_client_view_cb_move(struct wl_listener *listener, void *data)
 {
    E_Policy_Quickpanel *qp;
+   E_Client *ec;
    int x, y, hx, hy;
 
-   qp = data;
+   qp = wl_container_of(listener, qp, move_listener);
    if (EINA_UNLIKELY(!qp))
      return;
 
    e_service_region_rectangle_get(qp->handler_obj, qp->rotation, &hx, &hy, NULL, NULL);
-   evas_object_geometry_get(obj, &x, &y, NULL, NULL);
-   evas_object_move(qp->handler_obj, x + hx, y + hy);
+   ec = qp->ec;
+   if (ec)
+     {
+        e_view_client_geometry_get(e_client_view_get(ec), &x, &y, NULL, NULL);
+        evas_object_move(qp->handler_obj, x + hx, y + hy);
+     }
 }
 
 static void
@@ -1551,7 +1568,7 @@ _quickpanel_handler_rect_add(E_Policy_Quickpanel *qp, E_Policy_Angle_Map ridx, i
    /* Add handler object to smart member to follow the client's stack */
    evas_object_smart_member_add(obj, ec->frame);
    evas_object_propagate_events_set(obj, 0);
-   if (evas_object_visible_get(ec->frame))
+   if (e_view_client_visible_get(e_client_view_get(ec)))
      evas_object_show(obj);
 
    qp->handler_obj = obj;
@@ -1794,7 +1811,7 @@ _quickpanel_cb_rotation_done(void *data, int type, void *event)
 
    qp->rotation = e_policy_angle_map(ec->e.state.rot.ang.curr);
 
-   vis = evas_object_visible_get(ec->frame);
+   vis = e_view_client_visible_get(e_client_view_get(ec));
    switch (qp->rotation)
      {
       case E_POLICY_ANGLE_MAP_90:
@@ -1938,7 +1955,7 @@ _quickpanel_cb_client_stack(void *data, int type, void *event)
    DBG("Stacking Client '%s'(%p)",
        ev->ec->icccm.name ? ev->ec->icccm.name : "", ev->ec);
 
-   if (evas_object_visible_get(ev->ec->frame))
+   if (e_view_client_visible_get(e_client_view_get(ev->ec)))
      _quickpanel_below_change_eval(data, event);
 end:
    return ECORE_CALLBACK_PASS_ON;
@@ -2029,7 +2046,7 @@ _quickpanel_cb_desk_geometry_change(void *data, int type, void *event)
           _quickpanel_handler_obj_region_convert_set(qp, angle, x, y, w, h, ev->desk->geom.x, ev->desk->geom.y, ev->desk->geom.w, ev->desk->geom.h);
      }
 
-   evas_object_move(qp->ec->frame, ev->desk->geom.x, ev->desk->geom.y);
+   e_view_position_set(e_view_client_view_get(e_client_view_get(qp->ec)), ev->desk->geom.x, ev->desk->geom.y);
 
 end:
    return ECORE_CALLBACK_PASS_ON;
@@ -2236,6 +2253,7 @@ e_service_quickpanel_client_add(E_Client *ec, E_Service_Quickpanel_Type type)
    E_Policy_Quickpanel *qp = NULL;
    E_Layer layer;
    E_Zone *zone;
+   E_View *view;
 
    BACKEND_FUNC_CALL(quickpanel_client_add, ec, type);
 
@@ -2326,9 +2344,14 @@ e_service_quickpanel_client_add(E_Client *ec, E_Service_Quickpanel_Type type)
 
    QP_HIDE(qp);
 
-   evas_object_event_callback_add(ec->frame, EVAS_CALLBACK_SHOW,                    _quickpanel_client_evas_cb_show,     qp);
-   evas_object_event_callback_add(ec->frame, EVAS_CALLBACK_HIDE,                    _quickpanel_client_evas_cb_hide,     qp);
-   evas_object_event_callback_add(ec->frame, EVAS_CALLBACK_MOVE,                    _quickpanel_client_evas_cb_move,     qp);
+   view = e_view_client_view_get(e_client_view_get(ec));
+   qp->show_listener.notify = _quickpanel_client_view_cb_show;
+   e_view_event_listener_add(view, E_VIEW_SHOW, &qp->show_listener);
+   qp->hide_listener.notify = _quickpanel_client_view_cb_hide;
+   e_view_event_listener_add(view, E_VIEW_HIDE, &qp->hide_listener);
+   qp->move_listener.notify = _quickpanel_client_view_cb_move;
+   e_view_event_listener_add(view, E_VIEW_MOVE, &qp->move_listener);
+
    E_CLIENT_HOOK_APPEND(qp->hooks,           E_CLIENT_HOOK_DEL,                     _quickpanel_hook_client_del,         qp);
    E_LIST_HANDLER_APPEND(qp->events,         E_EVENT_CLIENT_ROTATION_CHANGE_BEGIN,  _quickpanel_cb_rotation_begin,       qp);
    E_LIST_HANDLER_APPEND(qp->events,         E_EVENT_CLIENT_ROTATION_CHANGE_CANCEL, _quickpanel_cb_rotation_cancel,      qp);
@@ -2507,8 +2530,8 @@ e_qps_visible_get(void)
         if (!ec) continue;
         if (e_object_is_del(E_OBJECT(ec))) continue;
 
-        evas_object_geometry_get(ec->frame,
-                                 &x, &y, &w, &h);
+        e_view_client_geometry_get(e_client_view_get(ec),
+                                   &x, &y, &w, &h);
 
         if (E_INTERSECTS(x, y, w, h,
                          qp->zone->x,
@@ -2516,7 +2539,7 @@ e_qps_visible_get(void)
                          qp->zone->w,
                          qp->zone->h))
           {
-             vis = evas_object_visible_get(ec->frame);
+             vis = e_view_client_visible_get(e_client_view_get(ec));
              if (vis) return EINA_TRUE;
           }
      }
@@ -2544,10 +2567,10 @@ e_qp_visible_get(E_Client *ec, E_Quickpanel_Type type)
    EINA_SAFETY_ON_NULL_RETURN_VAL(qp, EINA_FALSE);
    EINA_SAFETY_ON_NULL_RETURN_VAL(qp->ec, EINA_FALSE);
 
-   evas_object_geometry_get(qp->ec->frame, &x, &y, &w, &h);
+   e_view_client_geometry_get(e_client_view_get(qp->ec), &x, &y, &w, &h);
 
    if (E_INTERSECTS(x, y, w, h, qp->zone->x, qp->zone->y, qp->zone->w, qp->zone->h))
-     vis = evas_object_visible_get(qp->ec->frame);
+     vis = e_view_client_visible_get(e_client_view_get(qp->ec));
 
    return vis;
 }
index 2dc1612..f2329de 100644 (file)
@@ -3,6 +3,8 @@
 #include "services/e_service_region_intern.h"
 #include "e_policy_intern.h"
 #include "e_policy_private_data.h"
+#include "e_view_intern.h"
+#include "e_view_client_intern.h"
 
 #include <tzsh_server.h>
 
@@ -13,7 +15,7 @@ do                                            \
      {                                        \
         softkey_service->show_block = EINA_FALSE;     \
         softkey_service->ec->visible = EINA_TRUE;     \
-        evas_object_show(softkey_service->ec->frame); \
+        e_view_client_show(e_client_view_get(softkey_service->ec)); \
      }                                        \
 } while (0)
 
@@ -24,7 +26,7 @@ do                                            \
      {                                        \
         softkey_service->show_block = EINA_TRUE;      \
         softkey_service->ec->visible = EINA_FALSE;    \
-        evas_object_hide(softkey_service->ec->frame); \
+        e_view_client_hide(e_client_view_get(softkey_service->ec)); \
      }                                        \
 } while (0)
 
@@ -191,13 +193,12 @@ end:
    return EINA_TRUE;
 }
 
-
 static void
-_e_service_softkey_client_evas_cb_show(void *data, Evas *evas, Evas_Object *obj, void *event)
+_e_service_softkey_client_view_cb_show(struct wl_listener *listener, void *data)
 {
    E_Service_Softkey *softkey_service;
 
-   softkey_service = data;
+   softkey_service = wl_container_of(listener, softkey_service, show_listener);
    if (!softkey_service) return;
 
    ELOGF("SOFTKEY", "Show SOFTKEY SERVICE(%p)!!!  HIDE handler_obj (%p)...", NULL, softkey_service, softkey_service->handler_obj);
@@ -205,11 +206,11 @@ _e_service_softkey_client_evas_cb_show(void *data, Evas *evas, Evas_Object *obj,
 }
 
 static void
-_e_service_softkey_client_evas_cb_hide(void *data, Evas *evas, Evas_Object *obj, void *event)
+_e_service_softkey_client_view_cb_hide(struct wl_listener *listener, void *data)
 {
    E_Service_Softkey *softkey_service;
 
-   softkey_service = data;
+   softkey_service = wl_container_of(listener, softkey_service, hide_listener);
    if (!softkey_service) return;
 
    ELOGF("SOFTKEY", "Hide SOFTKEY SERVICE(%p)!!!  SHOW handler_obj (%p)...", NULL, softkey_service, softkey_service->handler_obj);
@@ -310,6 +311,7 @@ e_service_softkey_client_set(E_Client *ec)
 
    E_Service_Softkey *softkey_service;
    E_Zone *zone;
+   E_View *view;
 
    if (_e_softkey_service_funcs && _e_softkey_service_funcs->softkey_service_client_set)
      {
@@ -365,8 +367,11 @@ e_service_softkey_client_set(E_Client *ec)
 
    E_COMP_OBJECT_INTERCEPT_HOOK_APPEND(softkey_service->intercept_hooks, E_COMP_OBJECT_INTERCEPT_HOOK_SHOW_HELPER, _softkey_intercept_hook_show, softkey_service);
 
-   evas_object_event_callback_add(ec->frame, EVAS_CALLBACK_SHOW, _e_service_softkey_client_evas_cb_show, softkey_service);
-   evas_object_event_callback_add(ec->frame, EVAS_CALLBACK_HIDE, _e_service_softkey_client_evas_cb_hide, softkey_service);
+   view = e_view_client_view_get(e_client_view_get(ec));
+   softkey_service->show_listener.notify = _e_service_softkey_client_view_cb_show;
+   e_view_event_listener_add(view, E_VIEW_SHOW, &softkey_service->show_listener);
+   softkey_service->hide_listener.notify = _e_service_softkey_client_view_cb_hide;
+   e_view_event_listener_add(view, E_VIEW_HIDE, &softkey_service->hide_listener);
 
    E_LIST_HANDLER_APPEND(softkey_service->events, E_EVENT_CLIENT_ZONE_SET, _softkey_service_cb_client_zone_set, softkey_service);
 }
@@ -374,6 +379,9 @@ e_service_softkey_client_set(E_Client *ec)
 EINTERN void
 e_service_softkey_client_unset(E_Client *ec)
 {
+   E_View *view;
+   E_View_Client *view_client;
+
    ELOGF("SOFTKEY_SRV", "%s", ec, __func__);
 
    E_Service_Softkey *softkey_service;
@@ -390,8 +398,12 @@ e_service_softkey_client_unset(E_Client *ec)
    if (!softkey_service) return;
 
    E_FREE_LIST(softkey_service->events, ecore_event_handler_del);
-   evas_object_event_callback_del(softkey_service->ec->frame, EVAS_CALLBACK_SHOW, _e_service_softkey_client_evas_cb_show);
-   evas_object_event_callback_del(softkey_service->ec->frame, EVAS_CALLBACK_HIDE, _e_service_softkey_client_evas_cb_hide);
+
+   view_client = e_client_view_get(ec);
+   view = e_view_client_view_get(view_client);
+
+   e_view_event_listener_del(view, E_VIEW_SHOW, &softkey_service->show_listener);
+   e_view_event_listener_del(view, E_VIEW_HIDE, &softkey_service->hide_listener);
 
    e_service_softkey_del(softkey_service);
 }
@@ -460,7 +472,7 @@ e_service_softkey_visible_get(E_Service_Softkey *softkey_service)
    if (!softkey_service) return 0;
    if (!softkey_service->ec) return 0;
 
-   visible = evas_object_visible_get(softkey_service->ec->frame);
+   visible = e_view_client_visible_get(e_client_view_get(softkey_service->ec));
    return visible;
 }
 
index b002ed4..2817f25 100644 (file)
@@ -1,6 +1,8 @@
 #include "services/e_service_volume_intern.h"
 #include "e_policy_private_data.h"
 #include "e_client_intern.h"
+#include "e_view_intern.h"
+#include "e_view_client_intern.h"
 
 #include <wayland-server.h>
 #include <tzsh_server.h>
@@ -21,6 +23,16 @@ do { \
 #define REGION_OBJS_SHOW() REGION_OBJS_VISIBLE_CHANGE(EINA_TRUE)
 #define REGION_OBJS_HIDE() REGION_OBJS_VISIBLE_CHANGE(EINA_FALSE)
 
+typedef struct _E_Service_Volume_Listener E_Service_Volume_Listener;
+struct _E_Service_Volume_Listener
+{
+   // view listener
+   struct wl_listener show_listener;
+   struct wl_listener hide_listener;
+   struct wl_listener move_listener;
+   struct wl_listener restack_listener;
+};
+
 /* private data for volume */
 static struct wl_resource  *_volume_wl_touch = NULL;
 static E_Client            *_volume_ec = NULL;
@@ -31,6 +43,7 @@ static Eina_Bool            _volume_ec_ev_init = EINA_FALSE;
 /* event handler */
 static Ecore_Event_Handler *_rot_handler = NULL;
 static E_Client_Hook       *_volume_del_hook = NULL;
+static E_Service_Volume_Listener *_volume_listener = NULL;
 
 EINTERN E_Client *
 e_service_volume_client_get(void)
@@ -107,21 +120,21 @@ _volume_region_obj_cb_multi_move(void *data EINA_UNUSED, Evas *evas EINA_UNUSED,
 }
 
 static void
-_volume_client_evas_cb_show(void *data EINA_UNUSED, Evas *evas EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED)
+_volume_client_view_cb_show(struct wl_listener *listener, void *data)
 {
    /* show region objects in current rotation */
    REGION_OBJS_SHOW();
 }
 
 static void
-_volume_client_evas_cb_hide(void *data, Evas *evas EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED)
+_volume_client_view_cb_hide(struct wl_listener *listener, void *data)
 {
    /* hide region objects in current rotation */
    REGION_OBJS_HIDE();
 }
 
 static void
-_volume_client_evas_cb_move(void *data EINA_UNUSED, Evas *evas EINA_UNUSED, Evas_Object *volume_obj, void *event EINA_UNUSED)
+_volume_client_view_cb_move(struct wl_listener *listener, void *data)
 {
    Eina_List *l;
    Eina_Rectangle *r;
@@ -134,13 +147,13 @@ _volume_client_evas_cb_move(void *data EINA_UNUSED, Evas *evas EINA_UNUSED, Evas
         if (EINA_UNLIKELY(r == NULL))
           continue;
 
-        evas_object_geometry_get(volume_obj, &x, &y, NULL, NULL);
+        e_view_client_geometry_get(e_client_view_get(_volume_ec), &x, &y, NULL, NULL);
         evas_object_move(region_obj, x + r->x, y + r->y);
      }
 }
 
 static void
-_volume_client_evas_cb_restack(void *data EINA_UNUSED, Evas *evas EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED)
+_volume_client_view_cb_restack(struct wl_listener *listener, void *data)
 {
    Eina_List *l;
    Evas_Object *region_obj;
@@ -177,6 +190,8 @@ static void
 _region_objs_del(E_Policy_Angle_Map angle_map)
 {
    Evas_Object *obj;
+   E_View *view;
+   E_View_Client *view_client;
 
    EINA_LIST_FREE(_volume_region_objs[angle_map], obj)
       _region_obj_del(obj);
@@ -186,14 +201,18 @@ _region_objs_del(E_Policy_Angle_Map angle_map)
      {
         _volume_ec_ev_init = EINA_FALSE;
 
-        evas_object_event_callback_del(_volume_ec->frame, EVAS_CALLBACK_SHOW,
-                                       _volume_client_evas_cb_show);
-        evas_object_event_callback_del(_volume_ec->frame, EVAS_CALLBACK_HIDE,
-                                       _volume_client_evas_cb_hide);
-        evas_object_event_callback_del(_volume_ec->frame, EVAS_CALLBACK_MOVE,
-                                       _volume_client_evas_cb_move);
-        evas_object_event_callback_del(_volume_ec->frame, EVAS_CALLBACK_RESTACK,
-                                       _volume_client_evas_cb_restack);
+        if (_volume_listener)
+          {
+             view_client = e_client_view_get(_volume_ec);
+             view = e_view_client_view_get(view_client);
+
+             e_view_event_listener_del(view, E_VIEW_SHOW, &_volume_listener->show_listener);
+             e_view_event_listener_del(view, E_VIEW_HIDE, &_volume_listener->hide_listener);
+             e_view_event_listener_del(view, E_VIEW_MOVE, &_volume_listener->move_listener);
+             e_view_event_listener_del(view, E_VIEW_RESTACK, &_volume_listener->restack_listener);
+             E_FREE(_volume_listener);
+             _volume_listener = NULL;
+          }
      }
 }
 
@@ -284,7 +303,7 @@ e_service_volume_client_set(E_Client *ec)
    _volume_cur_angle_map = e_policy_angle_map(ec->e.state.rot.ang.curr);
 
    /* repeat events for volume client. */
-   evas_object_repeat_events_set(ec->frame, EINA_TRUE);
+   e_view_repeat_events_set(e_view_client_view_get(e_client_view_get(ec)), true);
 
    _rot_handler =
       ecore_event_handler_add(E_EVENT_CLIENT_ROTATION_CHANGE_END,
@@ -383,7 +402,7 @@ _region_objs_tile_set(E_Policy_Angle_Map angle_map, Eina_Tiler *tiler)
 
         if (angle_map == _volume_cur_angle_map)
           {
-             if (evas_object_visible_get(_volume_ec->frame))
+             if (e_view_client_visible_get(e_client_view_get(_volume_ec)))
                evas_object_show(obj);
           }
      }
@@ -437,6 +456,7 @@ EINTERN Eina_Bool
 e_service_volume_region_set(int type, int angle, Eina_Tiler *tiler)
 {
    E_Policy_Angle_Map angle_map;
+   E_View *view;
 
    if (EINA_UNLIKELY(!_volume_ec))
      {
@@ -468,16 +488,24 @@ e_service_volume_region_set(int type, int angle, Eina_Tiler *tiler)
 
    if (!_volume_ec_ev_init)
      {
+        _volume_listener = E_NEW(E_Service_Volume_Listener, 1);
+        if (!_volume_listener)
+          {
+             ERR("volume listener alloc fail");
+             return EINA_FALSE;
+          }
+
         _volume_ec_ev_init = EINA_TRUE;
 
-        evas_object_event_callback_add(_volume_ec->frame, EVAS_CALLBACK_SHOW,
-                                       _volume_client_evas_cb_show, NULL);
-        evas_object_event_callback_add(_volume_ec->frame, EVAS_CALLBACK_HIDE,
-                                       _volume_client_evas_cb_hide, NULL);
-        evas_object_event_callback_add(_volume_ec->frame, EVAS_CALLBACK_MOVE,
-                                       _volume_client_evas_cb_move, NULL);
-        evas_object_event_callback_add(_volume_ec->frame, EVAS_CALLBACK_RESTACK,
-                                       _volume_client_evas_cb_restack, NULL);
+        view = e_view_client_view_get(e_client_view_get(_volume_ec));
+        _volume_listener->show_listener.notify = _volume_client_view_cb_show;
+        e_view_event_listener_add(view, E_VIEW_SHOW, &_volume_listener->show_listener);
+        _volume_listener->hide_listener.notify = _volume_client_view_cb_hide;
+        e_view_event_listener_add(view, E_VIEW_HIDE, &_volume_listener->hide_listener);
+        _volume_listener->move_listener.notify = _volume_client_view_cb_move;
+        e_view_event_listener_add(view, E_VIEW_MOVE, &_volume_listener->move_listener);
+        _volume_listener->restack_listener.notify = _volume_client_view_cb_restack;
+        e_view_event_listener_add(view, E_VIEW_RESTACK, &_volume_listener->restack_listener);
      }
 
    return EINA_TRUE;
index 0bc3a2f..f529cd9 100644 (file)
@@ -14,6 +14,8 @@
 #include <e_pixmap.h>
 #include <e_bindings.h>
 #include <e_config.h>
+#include <e_view.h>
+#include <e_view_client.h>
 
 #include <uuid.h>
 #include <Ecore.h>
@@ -709,6 +711,13 @@ struct _E_Client
       Eina_Bool force_obscured : 1;
       int last_sent_type;
       Eina_Bool ignore_geometry : 1;
+
+      //view listener
+      struct wl_listener show_listener;
+      struct wl_listener hide_listener;
+      struct wl_listener move_listener;
+      struct wl_listener resize_listener;
+      struct wl_listener restack_listener;
    } visibility;
 
    struct
@@ -1129,6 +1138,7 @@ E_API void      e_client_base_output_resolution_transform_adjust(E_Client *ec);
 E_API Eina_Bool e_client_base_output_resolution_update(E_Client *ec);
 E_API Eina_Bool e_client_base_output_resolution_useful_geometry_get(E_Client *ec, int *x, int *y, int *w, int *h);
 E_API Eina_Bool e_client_base_output_resolution_desk_useful_geometry_get(E_Client *ec, int *x, int *y, int *w, int *h, Eina_Bool consider_obstacle_area);
+E_API E_View_Client *e_client_view_get(E_Client *ec);
 
 typedef Eina_Bool (*E_Client_Surface_Tree_Foreach)(void *data, E_Client *ec);
 
index e8ffe7a..b1e988e 100644 (file)
@@ -11,6 +11,8 @@
 #include <e_zone.h>
 #include <e_desk.h>
 #include <e_desk_area.h>
+#include "e_canvas.h"
+#include "e_view.h"
 
 #ifdef __cplusplus
 #include <atomic>
@@ -78,7 +80,8 @@ struct _E_Comp
    Ecore_Window  ee_win;
 
    Evas           *evas;
-   Evas_Object    *bg_blank_object;
+   E_Canvas       *canvas;
+   E_View         *bg_blank_view;
    Eina_List      *zones;
    E_Pointer      *pointer;
    Eina_List *clients;
@@ -106,8 +109,8 @@ struct _E_Comp
    Eina_List      *post_updates;
    Ecore_Animator *render_animator;
    Ecore_Job      *update_job;
-   Evas_Object    *fps_bg;
-   Evas_Object    *fps_fg;
+   E_View         *fps_bg;
+   E_View         *fps_fg;
    int             animating;
    double          frametimes[122];
    double          fps;
index dad9cda..02f3cd2 100644 (file)
@@ -2,8 +2,10 @@
 #define E_COMP_CANVAS_H
 
 #include <e_types.h>
+#include <e_canvas.h>
 
 E_API E_Zone       *e_comp_zone_xy_get(Evas_Coord x, Evas_Coord y);
+E_API E_Canvas     *e_comp_canvas_get(void);
 E_API unsigned int  e_comp_canvas_layer_map(E_Layer layer);
 E_API unsigned int  e_comp_canvas_client_layer_map(E_Layer layer);
 E_API E_Layer       e_comp_canvas_layer_map_to(unsigned int layer);
index 2e7dd9c..c98b388 100644 (file)
@@ -9,6 +9,7 @@
 #include <e_presentation_time.h>
 #include <e_zone.h>
 #include <e_egl_sync.h>
+#include <e_view_rect.h>
 
 #include <tbm_surface.h>
 #include <wayland-server.h>
@@ -106,7 +107,7 @@ struct _E_Hwc_Window
    E_Zone                        *zone;
    E_Object_Delfn                *zone_delfn;
 
-   Evas_Object                   *below_transparent_obj;
+   E_View_Rect                   *below_transparent_view;
 
    Eina_Bool                      comp_override;
    Eina_Bool                      never_hwc;
@@ -122,6 +123,19 @@ struct _E_Hwc_Window
    Eina_Bool                      hwc_visible;
 
    Eina_Bool                      changed;
+
+   // view listener
+   struct wl_listener show_listener;
+   struct wl_listener hide_listener;
+   struct wl_listener move_listener;
+   struct wl_listener resize_listener;
+   struct wl_listener restack_listener;
+   
+   struct wl_listener transparent_show_listener;
+   struct wl_listener transparent_hide_listener;
+   struct wl_listener transparent_move_listener;
+   struct wl_listener transparent_resize_listener;
+   struct wl_listener transparent_restack_listener;
 };
 
 struct _E_Hwc_Window_Target
index 055a3d6..17696f1 100644 (file)
@@ -42,6 +42,9 @@ E_API Eina_Bool        e_map_util_zoom_with_constant_ratio(E_Map *em, double zoo
 E_API Eina_Bool        e_map_util_zoom(E_Map *em, double zoomx, double zoomy, int cx, int cy);
 E_API Eina_Bool        e_map_util_rotate(E_Map *em, int angle, int cx, int cy);
 
+E_API Eina_Bool        e_map_util_points_populate_from_view(E_Map *em, E_View *view);
+E_API Eina_Bool        e_map_util_points_populate_from_view_full(E_Map *em, E_View *view, int z);
+
 #ifdef  __cplusplus
 }
 #endif
index 38cc734..89bd46c 100644 (file)
@@ -8,6 +8,7 @@
 #include <Ecore.h>
 #include <Ecore_Evas.h>
 #include <Evas.h>
+#include <e_view_client.h>
 
 typedef struct _E_Pointer E_Pointer;
 typedef struct _E_Pointer_Hook E_Pointer_Hook;
@@ -51,7 +52,8 @@ struct _E_Pointer
 
    Evas *evas;
    Ecore_Evas *ee;
-   Evas_Object *o_ptr;
+   E_View_Client *view_client;
+   struct wl_listener destroy_listener;
 
    int x, y, w, h;
    int rotation;
index 734c76d..4614448 100644 (file)
@@ -6,6 +6,7 @@
 #include <e_zone.h>
 #include <e_desk.h>
 #include <e_module.h>
+#include <e_view_edje.h>
 
 typedef struct _E_Policy_Softkey       E_Policy_Softkey;
 typedef struct _E_Policy_Softkey_Funcs E_Policy_Softkey_Funcs;
@@ -99,8 +100,8 @@ struct _E_Policy_Softkey
    E_Zone          *zone;
    E_Policy_Softkey_Expand  expand;
    E_Policy_Softkey_Opacity opacity;
-   Evas_Object     *home;
-   Evas_Object     *back;
+   E_View_Edje     *home;
+   E_View_Edje     *back;
    void            *other;
 };
 
index 65ebc51..ece63d4 100644 (file)
@@ -19,6 +19,10 @@ struct _E_Service_Softkey
    Eina_Bool show_block;
 
    Eina_List *events;
+
+   // view listener
+   struct wl_listener show_listener;
+   struct wl_listener hide_listener;
 };
 
 struct _E_Service_Softkey_Funcs
index b620b99..978fc12 100644 (file)
@@ -57,6 +57,7 @@ void e_view_client_resize_listener_add(E_View_Client *client, struct wl_listener
 
 void e_view_client_signal_emit(E_View_Client *client, const char *sig, const char *src);
 void e_view_client_input_area_set(E_View_Client *client, int x, int y, int w, int h);
+void e_view_client_input_rect_get(E_View_Client *client, Eina_List **list);
 
 #ifdef  __cplusplus
 }
index 4ad9942..9b371b4 100644 (file)
@@ -6,6 +6,7 @@
 #include <e_actions.h>
 #include <e_focus.h>
 #include <e_desk.h>
+#include <e_view.h>
 
 #define E_ZONE_TYPE (int)0xE0b0100d
 
@@ -80,8 +81,8 @@ struct _E_Zone
    Eina_List   *handlers;
 
    /* formerly E_Comp_Zone */
-   Evas_Object *base;
-   Evas_Object *over;
+   E_View *base;
+   E_View *over;
    //double       bl;    // backlight level
    //Eina_Bool    bloff; // backlight is off
 
index 91c85e5..49856c1 100644 (file)
@@ -219,7 +219,7 @@ TEST(EViewTest, Test_E_View_Place_Above)
        EXPECT_EQ(view.link.prev, &(sibling.link));
 
        EXPECT_CALL(*evasMock, evas_object_stack_above(obj_view, obj_sibling))
-               .Times(0);
+               .Times(1);
        e_view_place_above(&view, &sibling);
 
        free(obj_sibling);
@@ -310,7 +310,7 @@ TEST(EViewTest, Test_E_View_Place_Below)
        EXPECT_EQ(view.link.next, &(sibling.link));
 
        EXPECT_CALL(*evasMock, evas_object_stack_below(obj_view, obj_sibling))
-               .Times(0);
+               .Times(1);
        e_view_place_below(&view, &sibling);
 
        EXPECT_EQ(view.link.next, &(sibling.link));