From 5ebf3dd6b2f5270ded8f8d3a89459289dcefad2d Mon Sep 17 00:00:00 2001 From: Changyeon Lee Date: Wed, 7 Sep 2022 20:09:19 +0900 Subject: [PATCH] e_client: add e_client_transform_core_direct_render_set if direct_render_set is enabled, use direct_render of e_map Change-Id: I736fa5a1fc63848e7f8e140714f346d590483e69 --- src/bin/e_client.c | 37 +++++++++++++++++++++++++++---------- src/bin/e_client.h | 3 +++ 2 files changed, 30 insertions(+), 10 deletions(-) diff --git a/src/bin/e_client.c b/src/bin/e_client.c index d012359..508f461 100644 --- a/src/bin/e_client.c +++ b/src/bin/e_client.c @@ -553,7 +553,7 @@ _e_client_transform_resize(E_Client *ec) cy = ec->client.y + ph / 2; /* step 1: Rotate resized object and get map points */ - map = e_map_new(); + map = e_map_new_with_direct_render(ec->transform_core.direct_render); e_map_util_points_populate_from_geometry(map, ec->client.x, ec->client.y, pw, ph, @@ -598,7 +598,7 @@ _e_client_transform_resize(E_Client *ec) ec->transform.adjusted.y = dy; /* step 3: set each points of the quadrangle */ - map = e_map_new(); + map = e_map_new_with_direct_render(ec->transform_core.direct_render); e_map_util_points_populate_from_object_full(map, ec->frame, 0); for (i = 0; i < 4; i++) @@ -3408,7 +3408,7 @@ _e_client_transform_sub_apply(E_Client *ec, E_Client *epc, double zoom) mw = ow * zoom; mh = oh * zoom; - map = e_map_new(); + map = e_map_new_with_direct_render(ec->transform_core.direct_render); e_map_util_points_populate_from_geometry(map, mx, my, mw, mh, 0); e_map_util_object_move_sync_set(map, EINA_TRUE); e_client_map_set(ec, map); @@ -4134,14 +4134,15 @@ _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_Util_Transform_Rect_Vertex *vertices, - E_Util_Transform *transform) + E_Util_Transform *transform, + Eina_Bool direct_render) { E_Map *map; int i; int x, y; double u, v; - map = e_map_new(); + 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); @@ -4169,7 +4170,7 @@ _e_client_transform_core_map_new(Evas_Object *obj, } static void -_e_client_transform_core_vertices_apply_with_zoom(E_Client *ec EINA_UNUSED, +_e_client_transform_core_vertices_apply_with_zoom(E_Client *ec, Evas_Object *obj, E_Util_Transform_Rect_Vertex *vertices, E_Util_Transform *transform, @@ -4182,7 +4183,8 @@ _e_client_transform_core_vertices_apply_with_zoom(E_Client *ec EINA_UNUSED, if (vertices) { - map = _e_client_transform_core_map_new(obj, vertices, transform); + map = _e_client_transform_core_map_new(obj, vertices, transform, + ec->transform_core.direct_render); EINA_SAFETY_ON_NULL_RETURN(map); e_map_util_zoom(map, zoomx, zoomy, cx, cy); @@ -4197,7 +4199,7 @@ _e_client_transform_core_vertices_apply_with_zoom(E_Client *ec EINA_UNUSED, } static void -_e_client_transform_core_vertices_apply(E_Client *ec EINA_UNUSED, +_e_client_transform_core_vertices_apply(E_Client *ec, Evas_Object *obj, E_Util_Transform_Rect_Vertex *vertices, E_Util_Transform *transform) @@ -4208,7 +4210,8 @@ _e_client_transform_core_vertices_apply(E_Client *ec EINA_UNUSED, if (vertices) { - map = _e_client_transform_core_map_new(obj, vertices, transform); + map = _e_client_transform_core_map_new(obj, vertices, transform, + ec->transform_core.direct_render); EINA_SAFETY_ON_NULL_RETURN(map); e_comp_object_map_set(obj, map); @@ -4663,6 +4666,7 @@ e_client_new(E_Pixmap *cp, int first_map, int internal) ec->transform.zoom = 1.0; ec->transform.angle = 0.0; + ec->transform_core.direct_render = EINA_TRUE; ec->pointer_enter_sent = EINA_FALSE; @@ -7402,7 +7406,7 @@ e_client_transform_apply(E_Client *ec, double angle, double zoom, int cx, int cy return; } - map = e_map_new(); + map = e_map_new_with_direct_render(ec->transform_core.direct_render); e_map_util_points_populate_from_object_full(map, ec->frame, 0); e_map_util_rotate(map, angle, cx, cy); @@ -7710,6 +7714,19 @@ e_client_transform_core_update_with_desk_zoom(E_Client *ec, double zoomx, double _e_client_transform_core_update_with_zoom(ec, zoomx, zoomy, cx, cy); } +E_API void +e_client_transform_core_direct_render_set(E_Client *ec, Eina_Bool set) +{ + EINA_SAFETY_ON_NULL_RETURN(ec); + + if (ec->transform_core.direct_render == set) return; + + ec->transform_core.direct_render = set; + ec->transform_core.changed = EINA_TRUE; + + e_client_transform_core_update(ec); +} + E_API E_Pixmap * e_client_pixmap_change(E_Client *ec, E_Pixmap *newcp) { diff --git a/src/bin/e_client.h b/src/bin/e_client.h index 0f0e77d..b900a3f 100644 --- a/src/bin/e_client.h +++ b/src/bin/e_client.h @@ -943,6 +943,8 @@ struct E_Client Eina_Bool enable; E_Util_Transform_Matrix matrix; } parent; + + Eina_Bool direct_render; } transform_core; struct @@ -1227,6 +1229,7 @@ E_API void e_client_transform_core_input_transform(E_Client *ec, in E_API void e_client_transform_core_input_inv_transform(E_Client *ec, int x, int y, int *out_x, int *out_y); E_API void e_client_transform_core_input_inv_rect_transform(E_Client *ec, int x, int y, int *out_x, int *out_y); EINTERN void e_client_transform_core_update_with_desk_zoom(E_Client *ec, double zoomx, double zoomy, Evas_Coord cx, Evas_Coord cy); +E_API void e_client_transform_core_direct_render_set(E_Client *ec, Eina_Bool set); E_API E_Pixmap *e_client_pixmap_change(E_Client *ec, E_Pixmap *newcp); E_API void e_client_window_role_set(E_Client *ec, const char *role); -- 2.7.4