From: SooChan Lim Date: Tue, 15 Apr 2025 10:34:12 +0000 (+0900) Subject: e_client: remove evas_object api for ec->frame X-Git-Tag: accepted/tizen/unified/20250429.071401~46 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F88%2F323288%2F1;p=platform%2Fupstream%2Fenlightenment.git e_client: remove evas_object api for ec->frame and use e_view_cilent and e_view api instead Change-Id: I3c202f1cd6e1a040ada97006dc160f493d4651b8 --- diff --git a/src/bin/core/e_client.c b/src/bin/core/e_client.c index bc7f81cb41..0e0e1cd87d 100644 --- a/src/bin/core/e_client.c +++ b/src/bin/core/e_client.c @@ -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) { diff --git a/src/bin/core/e_client_intern.h b/src/bin/core/e_client_intern.h index da11ecbfb5..dc0dec8ea4 100644 --- a/src/bin/core/e_client_intern.h +++ b/src/bin/core/e_client_intern.h @@ -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); diff --git a/src/bin/core/e_view.c b/src/bin/core/e_view.c index 2d1220fc2c..377b71d03b 100644 --- a/src/bin/core/e_view.c +++ b/src/bin/core/e_view.c @@ -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) { diff --git a/src/include/e_client.h b/src/include/e_client.h index b249a87ab9..50520be86d 100644 --- a/src/include/e_client.h +++ b/src/include/e_client.h @@ -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); diff --git a/src/include/e_view.h b/src/include/e_view.h index 2211274f8b..3949acd0df 100644 --- a/src/include/e_view.h +++ b/src/include/e_view.h @@ -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.