4 * Copyright (c) 2000 - 2014 Samsung Electronics Co., Ltd. All rights reserved.
8 * Jaewon Lim <jaewon81.lim@samsung.com>
9 * Woojin Jung <woojin2.jung@samsung.com>
10 * Juyoung Kim <j0.kim@samsung.com>
11 * Anastasia Lyupa <a.lyupa@samsung.com>
13 * This library is free software; you can redistribute it and/or modify it under
14 * the terms of the GNU Lesser General Public License as published by the
15 * Free Software Foundation; either version 2.1 of the License, or (at your option)
18 * This library is distributed in the hope that it will be useful, but WITHOUT ANY
19 * WARRANTY; without even the implied warranty of MERCHANTABILITY or
20 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
21 * License for more details.
23 * You should have received a copy of the GNU Lesser General Public License
24 * along with this library; if not, write to the Free Software Foundation, Inc., 51
25 * Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
29 * - Samsung RnD Institute Russia
38 #include "probeinfo.h"
40 #include "real_functions.h"
41 #include "common_probe_init.h"
42 #include "api_config.h"
44 Ecore_Event_Handler *register_orientation_event_listener();
45 void unregister_orientation_event_listener(Ecore_Event_Handler *handler);
47 app_event_callback_s gAppCallback;
48 ui_app_lifecycle_callback_s uiAppCallback;
50 #define PACK_ORIGINAL_APPFWCYCLE(API_ID, RTYPE, RVAL, INPUTFORMAT, ...) \
53 PREPARE_LOCAL_BUF(); \
54 PACK_COMMON_BEGIN(MSG_PROBE_LIFECYCLE, API_ID, INPUTFORMAT, __VA_ARGS__); \
55 PACK_COMMON_END(RTYPE, RVAL, newerrno, blockresult); \
58 errno = (newerrno != 0) ? newerrno : olderrno
60 static bool _dalc_app_create(void *user_data)
66 bret = gAppCallback.create(user_data);
68 PACK_ORIGINAL_APPFWCYCLE(API_ID__dalc_app_create, 'b', bret, "p",
69 voidp_to_uint64(user_data));
74 static void _dalc_app_terminate(void *user_data)
79 gAppCallback.terminate(user_data);
81 PACK_ORIGINAL_APPFWCYCLE(API_ID__dalc_app_terminate, 'v', 0, "p",
82 voidp_to_uint64(user_data));
85 static void _dalc_app_pause(void *user_data)
90 gAppCallback.pause(user_data);
92 PACK_ORIGINAL_APPFWCYCLE(API_ID__dalc_app_pause, 'v', 0, "p",
93 voidp_to_uint64(user_data));
96 static void _dalc_app_resume(void *user_data)
101 gAppCallback.resume(user_data);
103 PACK_ORIGINAL_APPFWCYCLE(API_ID__dalc_app_resume, 'v', 0, "p",
104 voidp_to_uint64(user_data));
107 #ifdef PRIVATE_CAPI_APPFW
108 static void _dalc_app_control(app_control_h handle, void *user_data)
109 #else /* !PRIVATE_CAPI_APPFW */
110 static void _dalc_app_service(service_h handle, void *user_data)
111 #endif /* PRIVATE_CAPI_APPFW */
116 #ifdef PRIVATE_CAPI_APPFW
117 gAppCallback.app_control(handle, user_data);
118 #else /* !PRIVATE_CAPI_APPFW */
119 gAppCallback.service(handle, user_data);
120 #endif /* PRIVATE_CAPI_APPFW */
122 PACK_ORIGINAL_APPFWCYCLE(API_ID__dalc_app_service, 'v', 0, "dp",
123 (unsigned int)handle,
124 voidp_to_uint64(user_data));
127 static void _dalc_app_deviceorientationchanged(app_device_orientation_e orientation, void *user_data)
129 on_orientation_changed((int)orientation, true);
131 if (gAppCallback.device_orientation)
132 gAppCallback.device_orientation(orientation, user_data);
135 int app_efl_main(int *argc, char ***argv, app_event_callback_s *callback, void *user_data)
137 static int (*app_efl_mainp)(int *argc, char ***argv, app_event_callback_s *callback, void *user_data);
138 Ecore_Event_Handler* handler;
141 GET_REAL_FUNCP_RTLD_NEXT(app_efl_main, app_efl_mainp);
144 handler = register_orientation_event_listener();
145 gAppCallback.create = callback->create;
146 gAppCallback.terminate = callback->terminate;
147 gAppCallback.pause = callback->pause;
148 gAppCallback.resume = callback->resume;
149 #ifdef PRIVATE_CAPI_APPFW
150 gAppCallback.app_control = callback->app_control;
151 #else /* !PRIVATE_CAPI_APPFW */
152 gAppCallback.service = callback->service;
153 #endif /* PRIVATE_CAPI_APPFW */
154 gAppCallback.device_orientation = callback->device_orientation;
156 if (callback->create)
157 callback->create = _dalc_app_create;
158 if (callback->terminate)
159 callback->terminate = _dalc_app_terminate;
161 callback->pause = _dalc_app_pause;
162 if (callback->resume)
163 callback->resume = _dalc_app_resume;
164 #ifdef PRIVATE_CAPI_APPFW
165 if (callback->app_control)
166 callback->app_control = _dalc_app_control;
167 #else /* !PRIVATE_CAPI_APPFW */
168 if (callback->service)
169 callback->service = _dalc_app_service;
170 #endif /* PRIVATE_CAPI_APPFW */
171 callback->device_orientation = _dalc_app_deviceorientationchanged;
174 ret = app_efl_mainp(argc, argv, callback, user_data);
177 unregister_orientation_event_listener(handler);
178 callback->create = gAppCallback.create;
179 callback->terminate = gAppCallback.terminate;
180 callback->pause = gAppCallback.pause;
181 callback->resume = gAppCallback.resume;
182 #ifdef PRIVATE_CAPI_APPFW
183 callback->app_control = gAppCallback.app_control;
184 #else /* !PRIVATE_CAPI_APPFW */
185 callback->service = gAppCallback.service;
186 #endif /* PRIVATE_CAPI_APPFW */
187 callback->device_orientation = gAppCallback.device_orientation;
194 /************************************ UI APP ******************************************/
195 static bool _ui_dalc_app_create(void *user_data)
201 bret = uiAppCallback.create(user_data);
203 PACK_ORIGINAL_APPFWCYCLE(API_ID__dalc_app_create, 'b', bret, "p",
204 voidp_to_uint64(user_data));
209 static void _ui_dalc_app_terminate(void *user_data)
214 uiAppCallback.terminate(user_data);
216 PACK_ORIGINAL_APPFWCYCLE(API_ID__dalc_app_terminate, 'v', 0, "p",
217 voidp_to_uint64(user_data));
220 static void _ui_dalc_app_pause(void *user_data)
225 uiAppCallback.pause(user_data);
227 PACK_ORIGINAL_APPFWCYCLE(API_ID__dalc_app_pause, 'v', 0, "p",
228 voidp_to_uint64(user_data));
231 static void _ui_dalc_app_resume(void *user_data)
236 uiAppCallback.resume(user_data);
238 PACK_ORIGINAL_APPFWCYCLE(API_ID__dalc_app_resume, 'v', 0, "p",
239 voidp_to_uint64(user_data));
242 static void _ui_dalc_app_control(app_control_h handle, void *user_data)
247 uiAppCallback.app_control(handle, user_data);
249 PACK_ORIGINAL_APPFWCYCLE(API_ID__dalc_app_service, 'v', 0, "dp",
250 (unsigned int)handle,
251 voidp_to_uint64(user_data));
254 int ui_app_main(int argc, char **argv, ui_app_lifecycle_callback_s *callback, void *user_data)
256 static int (*ui_app_mainp)(int argc, char **argv, ui_app_lifecycle_callback_s *callback, void *user_data);
257 Ecore_Event_Handler* handler;
260 GET_REAL_FUNCP_RTLD_NEXT(ui_app_main, ui_app_mainp);
263 handler = register_orientation_event_listener();
264 uiAppCallback.create = callback->create;
265 uiAppCallback.terminate = callback->terminate;
266 uiAppCallback.pause = callback->pause;
267 uiAppCallback.resume = callback->resume;
269 uiAppCallback.app_control = callback->app_control;
271 if (callback->create)
272 callback->create = _ui_dalc_app_create;
273 if (callback->terminate)
274 callback->terminate = _ui_dalc_app_terminate;
276 callback->pause = _ui_dalc_app_pause;
277 if (callback->resume)
278 callback->resume = _ui_dalc_app_resume;
280 if (callback->app_control)
281 callback->app_control = _ui_dalc_app_control;
285 ret = ui_app_mainp(argc, argv, callback, user_data);
288 unregister_orientation_event_listener(handler);
290 callback->create = uiAppCallback.create;
291 callback->terminate = uiAppCallback.terminate;
292 callback->pause = uiAppCallback.pause;
293 callback->resume = uiAppCallback.resume;
294 callback->app_control = uiAppCallback.app_control;