e_client: remove evas_object api for ec->frame 88/323288/1
authorSooChan Lim <sc1.lim@samsung.com>
Tue, 15 Apr 2025 10:34:12 +0000 (19:34 +0900)
committerTizen Window System <tizen.windowsystem@gmail.com>
Fri, 25 Apr 2025 07:25:30 +0000 (16:25 +0900)
and use e_view_cilent and e_view api instead

Change-Id: I3c202f1cd6e1a040ada97006dc160f493d4651b8

src/bin/core/e_client.c
src/bin/core/e_client_intern.h
src/bin/core/e_view.c
src/include/e_client.h
src/include/e_view.h

index bc7f81cb4146e2f56e5d749432c4e3b345f0df21..0e0e1cd87def7cead1172aed99812c087e93eb00 100644 (file)
@@ -721,14 +721,20 @@ static void
 _e_client_free(E_Client *ec)
 {
    E_Comp *comp = e_comp_get();
+   E_View_Client *view_client;
 
    e_comp_ec_list_lock();
 
    E_Input_Thread_Request_EClient_Data ec_data;
    memset(&ec_data, 0, sizeof(E_Input_Thread_Request_EClient_Data));
 
-   e_comp_object_redirected_set(ec->frame, 0);
-   e_comp_object_render_update_del(ec->frame);
+   view_client = e_client_view_get(ec);
+   if (view_client)
+     {
+        e_view_client_redirected_set(view_client, EINA_FALSE);
+        e_view_client_render_update_del(view_client);
+        e_view_destroy(e_view_client_view_get(view_client));
+     }
 
    E_OBJECT(ec)->references++;
 
@@ -752,9 +758,6 @@ _e_client_free(E_Client *ec)
    eina_stringshare_replace(&ec->icccm.window_role, NULL);
    e_client_netwm_name_set(ec, NULL);
 
-   if (PRI(ec)->view_client)
-     e_view_destroy(e_view_client_view_get(PRI(ec)->view_client));
-
 #ifdef CLIENT_DEL_STACK_ISSUE
    e_client_hook_call(E_CLIENT_HOOK_FREE, ec);
 #endif // CLIENT_DEL_STACK_ISSUE
@@ -798,6 +801,7 @@ _e_client_del(E_Client *ec)
    E_Comp *comp = e_comp_get();
    E_Client *child;
    E_Pixmap_Type type;
+   E_View_Client *view_client;
    E_Input_Thread_Request_EClient_Data ec_data;
    memset(&ec_data, 0, sizeof(E_Input_Thread_Request_EClient_Data));
 
@@ -848,7 +852,10 @@ _e_client_del(E_Client *ec)
    if (type < E_PIXMAP_TYPE_MAX)
      eina_hash_del_by_key(clients_hash[type], &ec->pixmap);
    comp->clients = eina_list_remove(comp->clients, ec);
-   e_comp_object_render_update_del(ec->frame);
+
+   view_client = e_client_view_get(ec);
+   e_view_client_render_update_del(view_client);
+
    e_comp_post_update_purge(ec);
    if (e_pixmap_free(ec->pixmap))
      e_pixmap_client_set(ec->pixmap, NULL);
@@ -1391,11 +1398,13 @@ _e_client_position_inside_input_rect(E_Client *ec, int tx, int ty)
    Eina_Bool res = EINA_FALSE;
    Eina_List *list = NULL, *l;
    Eina_Rectangle *data;
+   E_View_Client *view_client;
 
    EINA_SAFETY_ON_NULL_RETURN_VAL(ec, EINA_FALSE);
 
    e_client_geometry_get(ec, &x, &y, &w, &h);
-   e_comp_object_input_rect_get(ec->frame, &list);
+   view_client = e_client_view_get(ec);
+   e_view_client_input_rect_get(view_client, &list);
    if (list)
      {
         EINA_LIST_FOREACH(list, l, data)
@@ -1442,6 +1451,7 @@ _e_client_under_pointer_input_helper(E_Desk *desk, int x, int y, E_Client *exclu
 {
    E_Zone *zone;
    E_Client *ec = NULL, *cec;
+   E_View_Client *view_client;
 
    E_COMP_ZONE_REVERSE_FOREACH(zone)
      E_ZONE_CLIENT_REVERSE_FOREACH(zone, cec)
@@ -1457,7 +1467,9 @@ _e_client_under_pointer_input_helper(E_Desk *desk, int x, int y, E_Client *exclu
           int ir_x, ir_y, ir_w, ir_h;
 
           e_client_geometry_get(cec, &cx, &cy, &cw, &ch);
-          e_comp_object_input_rect_get(cec->frame, &list);
+
+          view_client = e_client_view_get(cec);
+          e_view_client_input_rect_get(view_client, &list);
           if (list)
             {
                EINA_LIST_FREE(list, rect)
@@ -2383,12 +2395,13 @@ _e_client_transform_core_boundary_update(E_Client *ec, E_Util_Transform_Rect_Ver
 }
 
 static E_Map *
-_e_client_transform_core_map_new(Evas_Object *obj,
+_e_client_transform_core_map_new(E_View_Client *view_client,
                                  E_Util_Transform_Rect_Vertex *vertices,
                                  E_Util_Transform *transform,
                                  Eina_Bool direct_render)
 {
    E_Map *map;
+   E_View *view;
    int i;
    int x, y;
    double u, v;
@@ -2396,7 +2409,8 @@ _e_client_transform_core_map_new(Evas_Object *obj,
    map = e_map_new_with_direct_render(direct_render);
    EINA_SAFETY_ON_NULL_RETURN_VAL(map, NULL);
 
-   e_map_util_points_populate_from_object_full(map, obj, 0);
+   view = e_view_client_view_get(view_client);
+   e_map_util_points_populate_from_view_full(map, view, 0);
    e_map_util_points_color_set(map, 255, 255, 255, 255);
 
    for (i = 0 ; i < 4 ; ++i)
@@ -2422,75 +2436,85 @@ _e_client_transform_core_map_new(Evas_Object *obj,
 
 static void
 _e_client_transform_core_vertices_apply_with_zoom(E_Client *ec,
-                                        Evas_Object *obj,
                                         E_Util_Transform_Rect_Vertex *vertices,
                                         E_Util_Transform *transform,
                                         E_Util_Transform_Zoom zoom)
 {
    E_Map *map = NULL, *current_map = NULL;
+   E_View_Client *view_client;
+   E_View *view;
 
-   if (!obj) return;
+   view_client = e_client_view_get(ec);
+   if (!view_client) return;
 
    if (vertices)
      {
         if (!ec->transform_core.update_lock)
           {
-             map = _e_client_transform_core_map_new(obj, vertices, transform,
+             map = _e_client_transform_core_map_new(view_client, vertices, transform,
                                                     ec->transform_core.direct_render);
              EINA_SAFETY_ON_NULL_RETURN(map);
 
              e_map_util_zoom(map, zoom.zoom_x, zoom.zoom_y, zoom.cx, zoom.cy);
 
-             e_comp_object_map_set(obj, map);
+             e_view_client_map_set(view_client, map);
           }
 
-        current_map = e_comp_object_map_get(obj);
+        current_map = e_view_client_map_get(view_client);
 
         if ((ec->transform_core.activate) && (current_map))
-          e_comp_object_map_enable_set(obj, EINA_TRUE);
+          e_view_client_map_enable_set(view_client, EINA_TRUE);
         else
-          e_comp_object_map_enable_set(obj, EINA_FALSE);
+          e_view_client_map_enable_set(view_client, EINA_FALSE);
 
         if (map) e_map_free(map);
         if (current_map) e_map_free(current_map);
      }
    else
-     evas_object_map_enable_set(obj, EINA_FALSE);
+     {
+        view = e_view_client_view_get(view_client);
+        e_view_map_enable_set(view, EINA_FALSE);
+     }
 }
 
 static void
 _e_client_transform_core_vertices_apply(E_Client *ec,
-                                        Evas_Object *obj,
                                         E_Util_Transform_Rect_Vertex *vertices,
                                         E_Util_Transform *transform)
 {
    E_Map *map = NULL, *current_map = NULL;
+   E_View_Client *view_client;
+   E_View *view;
 
-   if (!obj) return;
+   view_client = e_client_view_get(ec);
+   if (!view_client) return;
 
    if (vertices)
      {
         if (!ec->transform_core.update_lock)
           {
-              map = _e_client_transform_core_map_new(obj, vertices, transform,
+              map = _e_client_transform_core_map_new(view_client, vertices, transform,
                                                      ec->transform_core.direct_render);
               EINA_SAFETY_ON_NULL_RETURN(map);
 
-              e_comp_object_map_set(obj, map);
+              e_view_client_map_set(view_client, map);
           }
 
-        current_map = e_comp_object_map_get(obj);
+        current_map = e_view_client_map_get(view_client);
 
         if ((ec->transform_core.activate) && (current_map))
-          e_comp_object_map_enable_set(obj, EINA_TRUE);
+          e_view_client_map_enable_set(view_client, EINA_TRUE);
         else
-          e_comp_object_map_enable_set(obj, EINA_FALSE);
+          e_view_client_map_enable_set(view_client, EINA_FALSE);
 
         if (map) e_map_free(map);
         if (current_map) e_map_free(current_map);
      }
    else
-     evas_object_map_enable_set(obj, EINA_FALSE);
+     {
+        view = e_view_client_view_get(view_client);
+        e_view_map_enable_set(view, EINA_FALSE);
+     }
 }
 
 static void
@@ -4466,6 +4490,8 @@ E_API E_Client *e_client_under_position_input_get(E_Desk *desk, int x, int y)
 E_API void
 e_client_redirected_set(E_Client *ec, Eina_Bool set)
 {
+   E_View_Client *view_client;
+
    EINA_SAFETY_ON_NULL_RETURN(ec);
    if (ec->input_only) return;
    set = !!set;
@@ -4480,7 +4506,10 @@ e_client_redirected_set(E_Client *ec, Eina_Bool set)
         wl_signal_emit(&PRI(ec)->events.unredirect, NULL);
         if (!e_client_hook_call(E_CLIENT_HOOK_UNREDIRECT, ec)) return;
      }
-   e_comp_object_redirected_set(ec->frame, set);
+
+   view_client = e_client_view_get(ec);
+   e_view_client_redirected_set(view_client, set);
+
    ec->redirected = !!set;
 }
 
@@ -4571,10 +4600,14 @@ _e_input_thread_client_transform_core_state_set(E_Client *ec, Eina_Bool enable)
 E_API void
 e_client_transform_core_update(E_Client *ec)
 {
+   E_View_Client *view_client;
+
    if (!ec) return;
    if (ec->new_client) return;
    if (!_e_client_transform_core_check_change(ec)) return;
 
+   view_client = e_client_view_get(ec);
+
    if (ec->transform_core.transform_list || ec->transform_core.parent.enable)
      {
         E_Util_Transform_Rect source_rect;
@@ -4628,11 +4661,11 @@ e_client_transform_core_update(E_Client *ec)
           {
              if (background)
                {
-                  e_comp_object_transform_bg_set(ec->frame, EINA_TRUE);
+                  e_view_client_transform_bg_set(view_client, EINA_TRUE);
                }
              else
                {
-                  e_comp_object_transform_bg_set(ec->frame, EINA_FALSE);
+                  e_view_client_transform_bg_set(view_client, EINA_FALSE);
                }
 
              ec->transform_core.background = background;
@@ -4647,12 +4680,12 @@ e_client_transform_core_update(E_Client *ec)
              angle %= 90;
 
              if (angle == 0) // when transform angle is 0, 90, 180, 270, 360. then set transp rect
-               e_comp_object_transform_transp_set(ec->frame, EINA_TRUE);
+               e_view_client_transform_transp_set(view_client, EINA_TRUE);
              else
-               e_comp_object_transform_transp_set(ec->frame, EINA_FALSE);
+               e_view_client_transform_transp_set(view_client, EINA_FALSE);
           }
         else
-          e_comp_object_transform_transp_set(ec->frame, EINA_FALSE);
+          e_view_client_transform_transp_set(view_client, EINA_FALSE);
 
         // 3.5 parent matrix multiply
         if (ec->transform_core.parent.enable)
@@ -4684,20 +4717,22 @@ e_client_transform_core_update(E_Client *ec)
         if (ec->transform_core.result.transform.use_zoom)
           {
              // TODO: apply zoom values to vertices
-             e_comp_object_transform_transp_vertices_set_with_zoom(ec->frame, &ec->transform_core.result.vertices,
+             e_view_client_transform_transp_vertices_set_with_zoom(view_client, &ec->transform_core.result.vertices,
                                                                    ec->transform_core.result.transform.zoom);
-             e_comp_object_transform_bg_vertices_set_with_zoom(ec->frame, &ec->transform_core.result.boundary.vertices,
+             e_view_client_transform_bg_vertices_set_with_zoom(view_client, &ec->transform_core.result.boundary.vertices,
                                                                ec->transform_core.result.transform.zoom);
+
              _e_client_transform_core_boundary_update(ec, &ec->transform_core.result.boundary.vertices);
-             _e_client_transform_core_vertices_apply_with_zoom(ec, ec->frame, &ec->transform_core.result.vertices, &ec->transform_core.result.transform,
+             _e_client_transform_core_vertices_apply_with_zoom(ec, &ec->transform_core.result.vertices, &ec->transform_core.result.transform,
                                                                ec->transform_core.result.transform.zoom);
           }
         else
           {
-             e_comp_object_transform_transp_vertices_set(ec->frame, &ec->transform_core.result.vertices);
-             e_comp_object_transform_bg_vertices_set(ec->frame, &ec->transform_core.result.boundary.vertices);
+             e_view_client_transform_transp_vertices_set(view_client, &ec->transform_core.result.vertices);
+             e_view_client_transform_bg_vertices_set(view_client, &ec->transform_core.result.boundary.vertices);
+
              _e_client_transform_core_boundary_update(ec, &ec->transform_core.result.boundary.vertices);
-             _e_client_transform_core_vertices_apply(ec, ec->frame, &ec->transform_core.result.vertices, &ec->transform_core.result.transform);
+             _e_client_transform_core_vertices_apply(ec, &ec->transform_core.result.vertices, &ec->transform_core.result.transform);
           }
 
         // 6. subsurface update
@@ -4718,10 +4753,10 @@ e_client_transform_core_update(E_Client *ec)
              if (e_input_thread_check_client_cloning_needed())
                _e_input_thread_client_transform_core_state_set(ec, EINA_FALSE);
 
-             _e_client_transform_core_vertices_apply(ec, ec->frame, NULL, NULL);
-             e_comp_object_transform_bg_set(ec->frame, EINA_FALSE);
+             _e_client_transform_core_vertices_apply(ec, NULL, NULL);
+             e_view_client_transform_bg_set(view_client, EINA_FALSE);
              ec->transform_core.background = EINA_FALSE;
-             e_comp_object_transform_transp_set(ec->frame, EINA_FALSE);
+             e_view_client_transform_transp_set(view_client, EINA_FALSE);
              _e_client_transform_core_sub_update(ec, NULL);
 
              if (!e_object_is_del(E_OBJECT(ec)))
@@ -5730,7 +5765,6 @@ e_client_show_pending_unset(E_Client *ec)
           {
              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);
           }
      }
@@ -5792,29 +5826,45 @@ e_client_cdata_get(E_Client *ec)
    return ec->comp_data;
 }
 
-EINTERN Eina_Bool
+EINTERN void
 e_client_map_set(E_Client *ec, E_Map *em)
 {
-   EINA_SAFETY_ON_NULL_RETURN_VAL(ec, EINA_FALSE);
+   E_View_Client *view_client;
+   E_View *view;
+
+   EINA_SAFETY_ON_NULL_RETURN(ec);
+
+   view_client = e_client_view_get(ec);
+   view = e_view_client_view_get(view_client);
 
-   return e_map_set_to_comp_object(em, ec->frame);
+   e_view_map_set(view, em);
 }
 
 E_API E_Map *
-e_client_map_get(const E_Client *ec)
+e_client_map_get(E_Client *ec)
 {
+   E_View_Client *view_client;
+   E_View *view;
+   E_Client *tmp_ec;
+
    EINA_SAFETY_ON_NULL_RETURN_VAL(ec, NULL);
+   tmp_ec = (E_Client *)ec;
+
+   view_client = e_client_view_get(tmp_ec);
+   view = e_view_client_view_get(view_client);
 
-   return e_map_get_from_comp_object(ec->frame);
+   return e_view_map_get(view);
 }
 
 EINTERN Eina_Bool
 e_client_map_enable_set(E_Client *ec, Eina_Bool enable)
 {
+   E_View_Client *view_client;
+
    EINA_SAFETY_ON_NULL_RETURN_VAL(ec, EINA_FALSE);
-   EINA_SAFETY_ON_NULL_RETURN_VAL(ec->frame, EINA_FALSE);
 
-   e_view_map_enable_set(e_view_client_view_get(PRI(ec)->view_client), enable);
+   view_client = e_client_view_get(ec);
+   e_view_map_enable_set(e_view_client_view_get(view_client), enable);
 
    return EINA_TRUE;
 }
@@ -6731,15 +6781,20 @@ e_client_video_mode_set(E_Client *ec, Eina_Bool is_video)
 EINTERN void
 e_client_aot_type_set(E_Client *ec, E_Aot_Type type)
 {
+   E_View_Client *view_client;
+   E_View *view;
+
    API_ENTRY;
    priv->aot_type = type;
 
    if (type == E_AOT_TYPE_LAUNCHER)
      {
-        if (ec->frame)
+        view_client = e_client_view_get(ec);
+        if (view_client)
           {
              ELOGF("TZPOL", "AOT Launcher window. Set to skip compositing", ec);
-             evas_object_color_set(ec->frame, 0, 0, 0, 0);
+             view = e_view_client_view_get(view_client);
+             e_view_color_set(view, 0, 0, 0, 0);
           }
      }
 }
@@ -7406,6 +7461,7 @@ e_client_is_focused(E_Client *ec)
    return ec->focused;
 }
 
+//TODO: this function will be removed
 E_API Evas_Object *
 e_client_frame_get(E_Client *ec)
 {
index da11ecbfb5dbfa70032ba85e91ecfb61c8bbfcd4..dc0dec8ea4826c8670f1eb4d814319889566c3af 100644 (file)
@@ -145,7 +145,7 @@ EINTERN E_Aot_Type e_client_aot_type_get(E_Client *ec);
 // get a comp_data from a ec
 EINTERN E_Comp_Wl_Client_Data   *e_client_cdata_get(E_Client *ec);
 
-EINTERN Eina_Bool e_client_map_set(E_Client *ec, E_Map *em);
+EINTERN void      e_client_map_set(E_Client *ec, E_Map *em);
 EINTERN Eina_Bool e_client_map_enable_set(E_Client *ec, Eina_Bool enabled);
 EINTERN void      e_client_belong_to_parent_set(E_Client *ec, Eina_Bool set);
 
index 2d1220fc2c556a7d76bec8cc953d39d6a9f50caf..377b71d03bb94224855451a57ae3c9da44d6910b 100644 (file)
@@ -573,7 +573,7 @@ e_view_clip_unset(E_View *view)
    evas_object_clip_set(view->eo, NULL);
 }
 
-E_API const E_Map *
+E_API E_Map *
 e_view_map_get(E_View *view)
 {
    return view->map;
@@ -582,8 +582,7 @@ e_view_map_get(E_View *view)
 E_API void
 e_view_map_set(E_View *view, E_Map *map)
 {
-   if (view->map == map)
-     return;
+   if (!view) return;
 
    if (view->map)
      {
index b249a87ab9d4856d5b05b7b4d502d3c95905f597..50520be86d1fab7c2f0fede44149a1cffdf19ad1 100644 (file)
@@ -929,7 +929,7 @@ E_API Eina_Bool e_client_normal_client_has(E_Client *ec);
 E_API void      e_client_stay_within_canvas_margin(E_Client *ec);
 E_API void      e_client_raise(E_Client *ec);
 E_API void      e_client_lower(E_Client *ec);
-E_API E_Map    *e_client_map_get(const E_Client *ec); // get E_Map from e_client. it must be freed after used.
+E_API E_Map    *e_client_map_get(E_Client *ec); // get E_Map from e_client. it must be freed after used.
 E_API E_Transient  e_client_transient_policy_get(E_Client *ec);
 E_API void         e_client_transient_policy_set(E_Client *ec, E_Transient policy);
 
@@ -1183,7 +1183,7 @@ E_API void      e_client_floating_saved_layer_set(E_Client *ec, E_Layer layer);
 E_API E_Layer   e_client_floating_saved_layer_get(E_Client *ec);
 
 E_API Eina_Bool e_client_is_focused(E_Client *ec);
-E_API Evas_Object *e_client_frame_get(E_Client *ec);
+E_DEPRECATED  Evas_Object *e_client_frame_get(E_Client *ec);
 E_API Eina_Bool e_client_gesture_disable_get(E_Client *ec);
 
 E_API void              e_client_icccm_accepts_focus_set(E_Client *ec, Eina_Bool set);
index 2211274f8b3112b9568b6e209ea1913af1a919fd..3949acd0dfdc1cc5b10a70280a2d58922129585b 100644 (file)
@@ -236,7 +236,7 @@ void e_view_clip_unset(E_View *view);
 /**
  * Get current E_View transformation map.
  */
-const E_Map *e_view_map_get(E_View *view);
+E_Map *e_view_map_get(E_View *view);
 
 /**
  * Set current E_View transformation map.