1 #include "e_server_intern.h"
2 #include "e_comp_wl_intern.h"
3 #include "e_comp_wl_data_intern.h"
4 #include "e_comp_wl_input_intern.h"
5 #include "e_comp_wl_shell_intern.h"
6 #include "e_wtz_shell_intern.h"
7 #include "e_comp_wl_tbm_intern.h"
8 #include "e_comp_wl_rsm_intern.h"
9 #include "e_pixmap_intern.h"
10 #include "e_comp_wl_screenshooter_intern.h"
11 #include "e_comp_wl_video_intern.h"
12 #include "e_comp_wl_viewport_intern.h"
13 #include "e_comp_wl_renderer_intern.h"
14 #include "e_presentation_time_intern.h"
15 #include "e_blender_intern.h"
16 #include "e_blur_intern.h"
17 #include "e_foreign_intern.h"
18 #include "e_explicit_sync_intern.h"
19 #include "e_tizen_screen_manager_intern.h"
21 typedef struct _E_Server E_Server;
23 // TODO: It is removed after server mdoule implementation is doen.
24 // temporary dummy handle.
25 typedef uint32_t Dummy_Handle;
26 static Dummy_Handle dummy_handle;
31 Dummy_Handle *wl_data_device_manager_handle;
32 Dummy_Handle *input_handle;
33 Dummy_Handle *shell_handle;
34 Dummy_Handle *wtz_shell_handle;
35 Dummy_Handle *wl_tbm_handle;
36 Dummy_Handle *wl_remote_surface_handle;
37 Dummy_Handle *pixmap_handle;
38 Dummy_Handle *wl_screenshooter_handle;
39 Dummy_Handle *tizen_video_handle;
40 Dummy_Handle *wl_viewport_handle;
41 Dummy_Handle *tizen_render_handle;
42 Dummy_Handle *tizen_move_resizes_handle;
43 Dummy_Handle *wp_presentation_handle;
44 Dummy_Handle *tizen_blender_handle;
45 Dummy_Handle *tizen_blur_manager_handle;
46 Dummy_Handle *tizen_foreign_handle;
47 Dummy_Handle *explicit_sync_handle;
48 E_Tizen_Screen_Manager *tizen_screen_manager;
49 } handles; // feature handles
52 static E_Server *g_server = NULL; // singleton server
57 if (g_server) return EINA_TRUE;
59 g_server = E_NEW(E_Server, 1);
60 EINA_SAFETY_ON_NULL_RETURN_VAL(g_server, EINA_FALSE);
62 if (!e_comp_wl_init())
68 if (e_comp_wl_data_manager_init())
69 e_server_feature_register(E_SERVER_FEATURE_WL_DATA_DEVICE_MANAGER, &dummy_handle);
70 if (e_comp_wl_input_init())
71 e_server_feature_register(E_SERVER_FEATURE_INPUT, &dummy_handle);
72 if (e_comp_wl_shell_init())
73 e_server_feature_register(E_SERVER_FEATURE_SHELL, &dummy_handle);
74 if (e_wtz_shell_init())
75 e_server_feature_register(E_SERVER_FEATURE_WTZ_SHELL, &dummy_handle);
76 if (e_comp_wl_tbm_init())
77 e_server_feature_register(E_SERVER_FEATURE_WL_TBM, &dummy_handle);
78 if (e_comp_wl_remote_surface_init())
79 e_server_feature_register(E_SERVER_FEATURE_WL_REMOTE_SURFACE, &dummy_handle);
81 e_server_feature_register(E_SERVER_FEATURE_PIXMAP, &dummy_handle);
82 if (e_comp_wl_screenshooter_init())
83 e_server_feature_register(E_SERVER_FEATURE_WL_SCREENSHOOTER, &dummy_handle);
84 if (e_comp_wl_video_init())
85 e_server_feature_register(E_SERVER_FEATURE_TIZEN_VIDEO, &dummy_handle);
86 if (e_comp_wl_viewport_init())
87 e_server_feature_register(E_SERVER_FEATURE_WL_VIEWPORT, &dummy_handle);
88 if (e_comp_wl_renderer_init())
89 e_server_feature_register(E_SERVER_FEATURE_TIZEN_RENDER, &dummy_handle);
90 if (e_comp_wl_move_resize_init())
91 e_server_feature_register(E_SERVER_FEATURE_TIZEN_MOVE_RESIZE, &dummy_handle);
92 if (e_presentation_time_init())
93 e_server_feature_register(E_SERVER_FEATURE_WP_PRESENTATION, &dummy_handle);
95 e_server_feature_register(E_SERVER_FEATURE_TIZEN_BLENDER, &dummy_handle);
96 if (e_blur_manager_init())
97 e_server_feature_register(E_SERVER_FEATURE_TIZEN_BLUR_MANAGER, &dummy_handle);
98 if (e_foreign_global_init(e_comp_wl->wl.disp))
99 e_server_feature_register(E_SERVER_FEATURE_TIZEN_FOREIGN, &dummy_handle);
100 if (e_explicit_sync_init())
101 e_server_feature_register(E_SERVER_FEATURE_EXPLICIT_SYNC, &dummy_handle);
103 e_server_feature_register(E_SERVER_FEATURE_TIZEN_SRCREEN_MANAGER, e_tizen_screen_manager_init());
109 e_server_shutdown(void)
111 e_explicit_sync_deinit();
112 e_foreign_global_shutdown();
113 e_blur_manager_shutdown();
114 e_blender_shutdown();
115 e_presentation_time_shutdown();
116 e_comp_wl_move_resize_shutdown();
117 e_comp_wl_renderer_shutdown();
118 e_comp_wl_viewport_shutdown();
119 e_comp_wl_video_shutdown();
120 e_comp_wl_screenshooter_shutdown();
122 e_comp_wl_remote_surface_shutdown();
123 e_comp_wl_tbm_shutdown();
124 e_wtz_shell_shutdown();
125 e_comp_wl_shell_shutdown();
126 e_comp_wl_input_shutdown();
127 e_comp_wl_data_manager_shutdown();
129 e_comp_wl_shutdown();
131 memset(g_server, 0, sizeof(E_Server));
136 e_server_feature_register(E_SERVER_FEATURE feature, void *handle)
138 EINA_SAFETY_ON_NULL_RETURN(g_server);
139 EINA_SAFETY_ON_NULL_RETURN(handle);
143 case E_SERVER_FEATURE_WL_DATA_DEVICE_MANAGER:
144 g_server->handles.wl_data_device_manager_handle = handle;
146 case E_SERVER_FEATURE_INPUT:
147 g_server->handles.input_handle = handle;
149 case E_SERVER_FEATURE_SHELL:
150 g_server->handles.shell_handle = handle;
152 case E_SERVER_FEATURE_WTZ_SHELL:
153 g_server->handles.wtz_shell_handle = handle;
155 case E_SERVER_FEATURE_WL_TBM:
156 g_server->handles.wl_tbm_handle = handle;
158 case E_SERVER_FEATURE_WL_REMOTE_SURFACE:
159 g_server->handles.wl_remote_surface_handle= handle;
161 case E_SERVER_FEATURE_PIXMAP:
162 g_server->handles.pixmap_handle = handle;
164 case E_SERVER_FEATURE_WL_SCREENSHOOTER:
165 g_server->handles.wl_screenshooter_handle = handle;
167 case E_SERVER_FEATURE_TIZEN_VIDEO:
168 g_server->handles.tizen_video_handle = handle;
170 case E_SERVER_FEATURE_WL_VIEWPORT:
171 g_server->handles.tizen_video_handle = handle;
173 case E_SERVER_FEATURE_TIZEN_RENDER:
174 g_server->handles.tizen_render_handle = handle;
176 case E_SERVER_FEATURE_TIZEN_MOVE_RESIZE:
177 g_server->handles.tizen_move_resizes_handle = handle;
179 case E_SERVER_FEATURE_WP_PRESENTATION:
180 g_server->handles.wp_presentation_handle = handle;
182 case E_SERVER_FEATURE_TIZEN_BLENDER:
183 g_server->handles.tizen_blender_handle = handle;
185 case E_SERVER_FEATURE_TIZEN_BLUR_MANAGER:
186 g_server->handles.tizen_blur_manager_handle = handle;
188 case E_SERVER_FEATURE_TIZEN_FOREIGN:
189 g_server->handles.tizen_foreign_handle = handle;
191 case E_SERVER_FEATURE_EXPLICIT_SYNC:
192 g_server->handles.explicit_sync_handle = handle;
194 case E_SERVER_FEATURE_TIZEN_SRCREEN_MANAGER:
195 g_server->handles.tizen_screen_manager = handle;
198 ERR("Unknown feature(%d) and handle(%p)", feature, handle);
204 e_server_feature_handle_get(E_SERVER_FEATURE feature)
206 const void *handle = NULL;
208 EINA_SAFETY_ON_NULL_RETURN_VAL(g_server, NULL);
212 case E_SERVER_FEATURE_WL_DATA_DEVICE_MANAGER:
213 handle = g_server->handles.wl_data_device_manager_handle;
215 case E_SERVER_FEATURE_INPUT:
216 handle = g_server->handles.input_handle;
218 case E_SERVER_FEATURE_SHELL:
219 handle = g_server->handles.shell_handle;
221 case E_SERVER_FEATURE_WTZ_SHELL:
222 handle = g_server->handles.wtz_shell_handle;
224 case E_SERVER_FEATURE_WL_TBM:
225 handle = g_server->handles.wl_tbm_handle;
227 case E_SERVER_FEATURE_WL_REMOTE_SURFACE:
228 handle = g_server->handles.wl_remote_surface_handle;
230 case E_SERVER_FEATURE_PIXMAP:
231 handle = g_server->handles.pixmap_handle;
233 case E_SERVER_FEATURE_WL_SCREENSHOOTER:
234 handle = g_server->handles.wl_screenshooter_handle;
236 case E_SERVER_FEATURE_TIZEN_VIDEO:
237 handle = g_server->handles.tizen_video_handle;
239 case E_SERVER_FEATURE_WL_VIEWPORT:
240 handle = g_server->handles.tizen_video_handle;
242 case E_SERVER_FEATURE_TIZEN_RENDER:
243 handle = g_server->handles.tizen_render_handle;
245 case E_SERVER_FEATURE_TIZEN_MOVE_RESIZE:
246 handle = g_server->handles.tizen_move_resizes_handle;
248 case E_SERVER_FEATURE_WP_PRESENTATION:
249 handle = g_server->handles.wp_presentation_handle;
251 case E_SERVER_FEATURE_TIZEN_BLENDER:
252 handle = g_server->handles.tizen_blender_handle;
254 case E_SERVER_FEATURE_TIZEN_BLUR_MANAGER:
255 handle = g_server->handles.tizen_blur_manager_handle;
257 case E_SERVER_FEATURE_TIZEN_FOREIGN:
258 handle = g_server->handles.tizen_foreign_handle;
260 case E_SERVER_FEATURE_EXPLICIT_SYNC:
261 handle = g_server->handles.explicit_sync_handle;
263 case E_SERVER_FEATURE_TIZEN_SRCREEN_MANAGER:
264 handle = g_server->handles.tizen_screen_manager;
267 ERR("Unknown feature(%d)", feature);