From 6c2600682d5ee0de2bc06b328294d7debf6b87ef Mon Sep 17 00:00:00 2001 From: SooChan Lim Date: Mon, 9 Dec 2024 17:42:41 +0900 Subject: [PATCH] e_canvas: make e_canvas_intern.h extract the canvas api from e_view_intern.h Change-Id: Ice8ac4b0ff70c8a4d23316b46d79e873033cb05d --- src/bin/compmgr/e_comp_canvas.c | 1 + src/bin/core/e_canvas.c | 1 + src/bin/core/e_canvas_intern.h | 100 ++++++++++++++++++++++++++++++++ src/bin/core/e_client.c | 1 + src/bin/core/e_view.c | 5 +- src/bin/core/e_view_client.c | 4 +- src/bin/core/e_view_edje.c | 5 +- src/bin/core/e_view_image.c | 5 +- src/bin/core/e_view_intern.h | 83 -------------------------- src/bin/core/e_view_layout.c | 3 +- src/bin/core/e_view_rect.c | 3 +- src/bin/displaymgr/e_hwc.c | 1 + src/bin/server/e_policy_wl.c | 1 + src/bin/windowmgr/e_pointer.c | 1 + src/bin/windowmgr/e_policy.c | 1 + tests/tc-e_canvas.cpp | 1 + tests/tc-e_view.cpp | 3 +- tests/tc-e_view_image.cpp | 1 + tests/tc-e_view_layout.cpp | 1 + tests/tc-e_view_rect.cpp | 1 + 20 files changed, 128 insertions(+), 94 deletions(-) create mode 100644 src/bin/core/e_canvas_intern.h diff --git a/src/bin/compmgr/e_comp_canvas.c b/src/bin/compmgr/e_comp_canvas.c index d2a62fcc4b..bcc8bc10c7 100644 --- a/src/bin/compmgr/e_comp_canvas.c +++ b/src/bin/compmgr/e_comp_canvas.c @@ -12,6 +12,7 @@ #include "e_view_edje_intern.h" #include "e_display_intern.h" #include "e_hwc_windows_intern.h" +#include "e_canvas_intern.h" #include diff --git a/src/bin/core/e_canvas.c b/src/bin/core/e_canvas.c index 79139d0b92..1a0fcf1bdc 100644 --- a/src/bin/core/e_canvas.c +++ b/src/bin/core/e_canvas.c @@ -1,4 +1,5 @@ #include "e_intern.h" +#include "e_canvas_intern.h" #include "e_view_intern.h" #define E_CANVAS_LAYER_TREE_FOREACH(layer_tree, canvas, layer) \ diff --git a/src/bin/core/e_canvas_intern.h b/src/bin/core/e_canvas_intern.h new file mode 100644 index 0000000000..8e8d15a73a --- /dev/null +++ b/src/bin/core/e_canvas_intern.h @@ -0,0 +1,100 @@ +#ifndef E_CANVAS_INTERN_H +#define E_CANVAS_INTERN_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include "e_canvas.h" +#include "e_view_intern.h" + +typedef struct _E_Canvas E_Canvas; +typedef struct _E_Canvas_Layer_Tree E_Canvas_Layer_Tree; + +struct _E_Canvas_Layer_Tree +{ + E_View_Tree tree; + E_Canvas_Layer layer; +}; + +struct _E_Canvas +{ + E_View_Tree tree; + E_Canvas_Layer_Tree layers[E_CANVAS_LAYER_MAX + 1]; + + Evas *evas; + + struct + { + struct wl_signal destroy; + struct wl_signal render_pre; + struct wl_signal render_post; + struct wl_signal render_flush_pre; + struct wl_signal render_flush_post; + } events; +}; + +/** + * Create E_Canvas + */ +E_Canvas *e_canvas_create(Evas *evas); + +/** + * Destroy E_Canvas + */ +void e_canvas_destroy(E_Canvas *canvas); + +/** + * Get Evas + */ +Evas *e_canvas_evas_get(E_Canvas *canvas); + +E_Canvas *e_canvas_get(E_View *view); + +/** + * Register a listener for the destroy of canvas. + */ +void e_canvas_destroy_listener_add(E_Canvas *canvas, struct wl_listener *listener); + +/** + * Register a listener called just before rendering starts on the canvas target. + */ +void e_canvas_render_pre_listener_add(E_Canvas *canvas, struct wl_listener *listener); + +/** + * Register a listener called just after rendering stops on the canvas target. + */ +void e_canvas_render_post_listener_add(E_Canvas *canvas, struct wl_listener *listener); + +/** + * Register a listener called after render update regions have been calculated, + * but only if update regions exist. + */ +void e_canvas_render_flush_pre_listener_add(E_Canvas *canvas, struct wl_listener *listener); + +/** + * Register a listener called after render update regions have been sent to the + * display server, but only if update regions existed for the most recent frame. + */ +void e_canvas_render_flush_post_listener_add(E_Canvas *canvas, struct wl_listener *listener); + +/** + * Get view layer info + */ +E_Canvas_Layer e_canvas_layer_find(E_Canvas *canvas, E_View *view); + +void e_canvas_damage_rectangle_add(E_Canvas *canvas, int x, int y, int w, int h); + +E_Canvas_Layer_Tree *e_canvas_layer_tree_from_tree(E_View_Tree *tree); + +void e_canvas_size_get(E_Canvas *canvas, int *width, int *height); + +E_Canvas_Layer e_canvas_util_e_layer_map(short layer); + +E_Layer e_canvas_util_layer_map(E_Canvas_Layer layer); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/bin/core/e_client.c b/src/bin/core/e_client.c index 806c695101..8fac69ab53 100644 --- a/src/bin/core/e_client.c +++ b/src/bin/core/e_client.c @@ -26,6 +26,7 @@ #include "e_policy_zone_intern.h" #include "e_comp_canvas_intern.h" #include "e_hwc_window_intern.h" +#include "e_canvas_intern.h" #define PRI(ec) ((E_Client_Private *)e_object_data_get(E_OBJECT(ec))) diff --git a/src/bin/core/e_view.c b/src/bin/core/e_view.c index 6bbaa714a3..39238f4b4e 100644 --- a/src/bin/core/e_view.c +++ b/src/bin/core/e_view.c @@ -1,6 +1,7 @@ #include "e_intern.h" #include "e_view_intern.h" #include "e_map_intern.h" +#include "e_canvas_intern.h" #include #include @@ -226,7 +227,7 @@ e_view_destroy(E_View *view) } E_API E_Canvas * -e_view_root_get(E_View *view) +e_canvas_get(E_View *view) { E_Canvas *canvas; E_View_Tree *tree; @@ -682,7 +683,7 @@ e_view_layer_index_get(E_View *view) E_Canvas *canvas; E_Canvas_Layer_Tree *layer_tree; - canvas = e_view_root_get(view); + canvas = e_canvas_get(view); while (1) { assert(view->parent); diff --git a/src/bin/core/e_view_client.c b/src/bin/core/e_view_client.c index 4acf7fb917..0ea824d0f0 100644 --- a/src/bin/core/e_view_client.c +++ b/src/bin/core/e_view_client.c @@ -1,5 +1,5 @@ #include "e_intern.h" -#include "e_canvas.h" +#include "e_canvas_intern.h" #include "e_view_client_intern.h" #include "e_view_intern.h" #include "e_comp_object_intern.h" @@ -932,7 +932,7 @@ e_view_client_layer_set(E_View_Client *client, E_Canvas_Layer layer) E_View_Tree *layer_tree; - layer_tree = e_canvas_layer_view_tree_get(e_view_root_get(&client->view), layer); + layer_tree = e_canvas_layer_view_tree_get(e_canvas_get(&client->view), layer); e_view_reparent(&client->view, layer_tree); evas_object_layer_set(client->view.eo, e_canvas_util_layer_map(layer)); } diff --git a/src/bin/core/e_view_edje.c b/src/bin/core/e_view_edje.c index f07931f103..06fe48a3b7 100644 --- a/src/bin/core/e_view_edje.c +++ b/src/bin/core/e_view_edje.c @@ -6,6 +6,7 @@ #include "e_comp_intern.h" #include "e_comp_object_intern.h" #include "e_utils_intern.h" +#include "e_canvas_intern.h" #define EDJE_EDIT_IS_UNSTABLE_AND_I_KNOW_ABOUT_IT #include @@ -80,7 +81,7 @@ e_view_edje_create(E_View_Tree *parent) assert(parent != NULL); - canvas = e_view_root_get(&parent->view); + canvas = e_canvas_get(&parent->view); if (!canvas) return NULL; @@ -331,7 +332,7 @@ e_view_edje_edit_create(E_View_Tree *parent) assert(parent != NULL); - canvas = e_view_root_get(&parent->view); + canvas = e_canvas_get(&parent->view); if (!canvas) return NULL; diff --git a/src/bin/core/e_view_image.c b/src/bin/core/e_view_image.c index de121b0bfb..6dffb37e07 100644 --- a/src/bin/core/e_view_image.c +++ b/src/bin/core/e_view_image.c @@ -1,6 +1,7 @@ #include "e_intern.h" #include "e_view_intern.h" #include "e_view_image.h" +#include "e_canvas_intern.h" #include //#include // for using efl_gfx_filter_program_set() @@ -274,7 +275,7 @@ e_view_image_create(E_View_Tree *parent) assert(parent != NULL); - canvas = e_view_root_get(&parent->view); + canvas = e_canvas_get(&parent->view); if (!canvas) return NULL; @@ -310,7 +311,7 @@ e_view_image_filled_create(E_View_Tree *parent) assert(parent != NULL); - canvas = e_view_root_get(&parent->view); + canvas = e_canvas_get(&parent->view); if (!canvas) return NULL; diff --git a/src/bin/core/e_view_intern.h b/src/bin/core/e_view_intern.h index 153ab95d65..40042b65c2 100644 --- a/src/bin/core/e_view_intern.h +++ b/src/bin/core/e_view_intern.h @@ -11,8 +11,6 @@ extern "C" { struct _E_Map; typedef struct _E_Map E_Map; -typedef struct _E_Canvas E_Canvas; -typedef struct _E_Canvas_Layer_Tree E_Canvas_Layer_Tree; typedef struct _E_View_Tree E_View_Tree; typedef struct _E_View E_View; typedef struct _E_View_Client E_View_Client; @@ -79,29 +77,6 @@ struct _E_View_Tree struct wl_list children; // bottom to top }; -struct _E_Canvas_Layer_Tree -{ - E_View_Tree tree; - E_Canvas_Layer layer; -}; - -struct _E_Canvas -{ - E_View_Tree tree; - E_Canvas_Layer_Tree layers[E_CANVAS_LAYER_MAX + 1]; - - Evas *evas; - - struct - { - struct wl_signal destroy; - struct wl_signal render_pre; - struct wl_signal render_post; - struct wl_signal render_flush_pre; - struct wl_signal render_flush_post; - } events; -}; - struct _E_View_Client { E_View view; @@ -131,66 +106,8 @@ struct _E_View_Edje struct wl_listener restack; }; -/** - * Create E_Canvas - */ -E_Canvas *e_canvas_create(Evas *evas); - -/** - * Destroy E_Canvas - */ -void e_canvas_destroy(E_Canvas *canvas); - -/** - * Get Evas - */ -Evas *e_canvas_evas_get(E_Canvas *canvas); - -/** - * Register a listener for the destroy of canvas. - */ -void e_canvas_destroy_listener_add(E_Canvas *canvas, struct wl_listener *listener); - -/** - * Register a listener called just before rendering starts on the canvas target. - */ -void e_canvas_render_pre_listener_add(E_Canvas *canvas, struct wl_listener *listener); - -/** - * Register a listener called just after rendering stops on the canvas target. - */ -void e_canvas_render_post_listener_add(E_Canvas *canvas, struct wl_listener *listener); - -/** - * Register a listener called after render update regions have been calculated, - * but only if update regions exist. - */ -void e_canvas_render_flush_pre_listener_add(E_Canvas *canvas, struct wl_listener *listener); - -/** - * Register a listener called after render update regions have been sent to the - * display server, but only if update regions existed for the most recent frame. - */ -void e_canvas_render_flush_post_listener_add(E_Canvas *canvas, struct wl_listener *listener); - -/** - * Get view layer info - */ -E_Canvas_Layer e_canvas_layer_find(E_Canvas *canvas, E_View *view); - -void e_canvas_damage_rectangle_add(E_Canvas *canvas, int x, int y, int w, int h); - -E_Canvas_Layer_Tree *e_canvas_layer_tree_from_tree(E_View_Tree *tree); - -void e_canvas_size_get(E_Canvas *canvas, int *width, int *height); - -E_Canvas_Layer e_canvas_util_e_layer_map(short layer); - -E_Layer e_canvas_util_layer_map(E_Canvas_Layer layer); - void e_view_init(E_View *view, E_View_Type type, E_View_Impl *impl, Evas_Object *eo, E_View_Tree *parent); void e_view_reorderable_set(E_View *view, bool reorderable); -E_Canvas *e_view_root_get(E_View *view); E_View_Tree *e_view_tree_from_view(E_View *view); void e_view_tree_init(E_View_Tree *tree, const E_View_Tree_Impl *impl, E_View_Tree *parent); diff --git a/src/bin/core/e_view_layout.c b/src/bin/core/e_view_layout.c index 48db60263f..6d5f9c86db 100644 --- a/src/bin/core/e_view_layout.c +++ b/src/bin/core/e_view_layout.c @@ -1,6 +1,7 @@ #include "e_view_layout_intern.h" #include "e_layout_intern.h" #include "e_view_intern.h" +#include "e_canvas_intern.h" struct _E_View_Layout { @@ -175,7 +176,7 @@ e_view_layout_create(E_View_Tree *parent) layout->children = NULL; - canvas = e_view_root_get(&parent->view); + canvas = e_canvas_get(&parent->view); eo = e_layout_add(canvas->evas); if (!eo) { diff --git a/src/bin/core/e_view_rect.c b/src/bin/core/e_view_rect.c index 5f73271930..f9deceed97 100644 --- a/src/bin/core/e_view_rect.c +++ b/src/bin/core/e_view_rect.c @@ -1,6 +1,7 @@ #include "e_intern.h" #include "e_view_intern.h" #include "e_view_rect.h" +#include "e_canvas_intern.h" typedef struct _E_View_Rect_Impl E_View_Rect_Impl; @@ -63,7 +64,7 @@ e_view_rect_create(E_View_Tree *parent, int width, int height, const int color[4 if (!rect) return NULL; - canvas = e_view_root_get(&parent->view); + canvas = e_canvas_get(&parent->view); eo = evas_object_rectangle_add(canvas->evas); if (!eo) { diff --git a/src/bin/displaymgr/e_hwc.c b/src/bin/displaymgr/e_hwc.c index 3a9c5c5ecd..55b3440c66 100644 --- a/src/bin/displaymgr/e_hwc.c +++ b/src/bin/displaymgr/e_hwc.c @@ -10,6 +10,7 @@ #include "e_display_intern.h" #include "e_view_intern.h" #include "e_view_client_intern.h" +#include "e_canvas_intern.h" #include #include diff --git a/src/bin/server/e_policy_wl.c b/src/bin/server/e_policy_wl.c index 5d2a5b8b1c..ae64c1854f 100644 --- a/src/bin/server/e_policy_wl.c +++ b/src/bin/server/e_policy_wl.c @@ -38,6 +38,7 @@ #include "e_policy_softkey_intern.h" #include "e_policy_stack_intern.h" #include "e_compositor_intern.h" +#include "e_canvas_intern.h" #include #include diff --git a/src/bin/windowmgr/e_pointer.c b/src/bin/windowmgr/e_pointer.c index 14d724c154..1827a6a360 100644 --- a/src/bin/windowmgr/e_pointer.c +++ b/src/bin/windowmgr/e_pointer.c @@ -7,6 +7,7 @@ #include "e_view_intern.h" #include "e_view_client_intern.h" #include "e_output_intern.h" +#include "e_canvas_intern.h" /* local variables */ static Eina_List *_ptrs = NULL; diff --git a/src/bin/windowmgr/e_policy.c b/src/bin/windowmgr/e_policy.c index c9d17aae02..c871a14167 100644 --- a/src/bin/windowmgr/e_policy.c +++ b/src/bin/windowmgr/e_policy.c @@ -24,6 +24,7 @@ #include "e_policy_stack_intern.h" #include "e_compositor_intern.h" #include "e_policy_desk_intern.h" +#include "e_canvas_intern.h" E_Policy *e_policy = NULL; Eina_Hash *hash_policy_clients = NULL; diff --git a/tests/tc-e_canvas.cpp b/tests/tc-e_canvas.cpp index 83ce13fb9d..36297d52f3 100644 --- a/tests/tc-e_canvas.cpp +++ b/tests/tc-e_canvas.cpp @@ -2,6 +2,7 @@ #include "evas_wrapper.h" #include "src/bin/core/e_view_intern.h" +#include "src/bin/core/e_canvas_intern.h" #include "e_canvas.h" using ::testing::AnyNumber; diff --git a/tests/tc-e_view.cpp b/tests/tc-e_view.cpp index afffdd2c70..b13d1463fa 100644 --- a/tests/tc-e_view.cpp +++ b/tests/tc-e_view.cpp @@ -3,6 +3,7 @@ #define E_TEST #include "src/bin/core/e_view_intern.h" +#include "src/bin/core/e_canvas_intern.h" #include "e_canvas.h" #include "e_view.h" #include "e_map.h" @@ -754,7 +755,7 @@ TEST_F(EViewTest, Test_E_View_Root_Get) E_View view; e_view_init(&view, E_VIEW_TYPE_RECT, NULL, NULL, tree); - E_Canvas *root = e_view_root_get(&view); + E_Canvas *root = e_canvas_get(&view); ASSERT_EQ(root, canvas); } diff --git a/tests/tc-e_view_image.cpp b/tests/tc-e_view_image.cpp index 13a3c91620..a174686313 100755 --- a/tests/tc-e_view_image.cpp +++ b/tests/tc-e_view_image.cpp @@ -2,6 +2,7 @@ #include "evas_wrapper.h" #include "src/bin/core/e_view_intern.h" +#include "src/bin/core/e_canvas_intern.h" #include "e_view_image.h" #include "e_canvas.h" diff --git a/tests/tc-e_view_layout.cpp b/tests/tc-e_view_layout.cpp index 2ee125d19f..8f4cf0951c 100644 --- a/tests/tc-e_view_layout.cpp +++ b/tests/tc-e_view_layout.cpp @@ -2,6 +2,7 @@ #include "evas_wrapper.h" #include "src/bin/core/e_view_intern.h" +#include "src/bin/core/e_canvas_intern.h" #include "e_view_layout.h" #include "e_view_rect.h" #include "e_canvas.h" diff --git a/tests/tc-e_view_rect.cpp b/tests/tc-e_view_rect.cpp index ad5dda74d3..3067f2002f 100644 --- a/tests/tc-e_view_rect.cpp +++ b/tests/tc-e_view_rect.cpp @@ -3,6 +3,7 @@ #include "e_canvas.h" #include "src/bin/core/e_view_intern.h" +#include "src/bin/core/e_canvas_intern.h" #include "e_view_rect.h" using ::testing::Return; -- 2.34.1