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 "common_probe_init.h"
42 /* FIXME think of a better solution for conditional build. */
43 #ifndef PRIVATE_CAPI_APPFW
45 #if !defined(service_h)
46 #define PRIVATE_CAPI_APPFW
47 #endif /* !service_h */
49 #endif /* !PRIVATE_CAPI_APPFW */
51 Ecore_Event_Handler *register_orientation_event_listener();
52 void unregister_orientation_event_listener(Ecore_Event_Handler *handler);
54 app_event_callback_s gAppCallback;
56 #define PACK_ORIGINAL_APPFWCYCLE(API_ID, RTYPE, RVAL, INPUTFORMAT, ...) \
59 PREPARE_LOCAL_BUF(); \
60 PACK_COMMON_BEGIN(MSG_PROBE_LIFECYCLE, API_ID, INPUTFORMAT, __VA_ARGS__); \
61 PACK_COMMON_END(RTYPE, RVAL, newerrno, blockresult); \
64 errno = (newerrno != 0) ? newerrno : olderrno
66 static bool _dalc_app_create(void *user_data)
72 bret = gAppCallback.create(user_data);
74 PACK_ORIGINAL_APPFWCYCLE(API_ID__dalc_app_create, 'b', bret, "p",
75 voidp_to_uint64(user_data));
80 static void _dalc_app_terminate(void *user_data)
85 gAppCallback.terminate(user_data);
87 PACK_ORIGINAL_APPFWCYCLE(API_ID__dalc_app_terminate, 'v', 0, "p",
88 voidp_to_uint64(user_data));
91 static void _dalc_app_pause(void *user_data)
96 gAppCallback.pause(user_data);
98 PACK_ORIGINAL_APPFWCYCLE(API_ID__dalc_app_pause, 'v', 0, "p",
99 voidp_to_uint64(user_data));
102 static void _dalc_app_resume(void *user_data)
107 gAppCallback.resume(user_data);
109 PACK_ORIGINAL_APPFWCYCLE(API_ID__dalc_app_resume, 'v', 0, "p",
110 voidp_to_uint64(user_data));
113 #ifdef PRIVATE_CAPI_APPFW
114 static void _dalc_app_control(app_control_h handle, void *user_data)
115 #else /* !PRIVATE_CAPI_APPFW */
116 static void _dalc_app_service(service_h handle, void *user_data)
117 #endif /* PRIVATE_CAPI_APPFW */
122 #ifdef PRIVATE_CAPI_APPFW
123 gAppCallback.app_control(handle, user_data);
124 #else /* !PRIVATE_CAPI_APPFW */
125 gAppCallback.service(handle, user_data);
126 #endif /* PRIVATE_CAPI_APPFW */
128 PACK_ORIGINAL_APPFWCYCLE(API_ID__dalc_app_service, 'v', 0, "dp",
129 (unsigned int)handle,
130 voidp_to_uint64(user_data));
133 static void _dalc_app_deviceorientationchanged(app_device_orientation_e orientation, void *user_data)
135 on_orientation_changed((int)orientation, true);
137 if (gAppCallback.device_orientation)
138 gAppCallback.device_orientation(orientation, user_data);
141 int app_efl_main(int *argc, char ***argv, app_event_callback_s *callback, void *user_data)
143 static int (*app_efl_mainp)(int *argc, char ***argv, app_event_callback_s *callback, void *user_data);
144 Ecore_Event_Handler* handler;
147 GET_REAL_FUNCP_RTLD_NEXT(app_efl_main, app_efl_mainp);
150 handler = register_orientation_event_listener();
151 gAppCallback.create = callback->create;
152 gAppCallback.terminate = callback->terminate;
153 gAppCallback.pause = callback->pause;
154 gAppCallback.resume = callback->resume;
155 #ifdef PRIVATE_CAPI_APPFW
156 gAppCallback.app_control = callback->app_control;
157 #else /* !PRIVATE_CAPI_APPFW */
158 gAppCallback.service = callback->service;
159 #endif /* PRIVATE_CAPI_APPFW */
160 gAppCallback.device_orientation = callback->device_orientation;
162 if (callback->create)
163 callback->create = _dalc_app_create;
164 if (callback->terminate)
165 callback->terminate = _dalc_app_terminate;
167 callback->pause = _dalc_app_pause;
168 if (callback->resume)
169 callback->resume = _dalc_app_resume;
170 #ifdef PRIVATE_CAPI_APPFW
171 if (callback->app_control)
172 callback->app_control = _dalc_app_control;
173 #else /* !PRIVATE_CAPI_APPFW */
174 if (callback->service)
175 callback->service = _dalc_app_service;
176 #endif /* PRIVATE_CAPI_APPFW */
177 callback->device_orientation = _dalc_app_deviceorientationchanged;
180 ret = app_efl_mainp(argc, argv, callback, user_data);
183 unregister_orientation_event_listener(handler);
184 callback->create = gAppCallback.create;
185 callback->terminate = gAppCallback.terminate;
186 callback->pause = gAppCallback.pause;
187 callback->resume = gAppCallback.resume;
188 #ifdef PRIVATE_CAPI_APPFW
189 callback->app_control = gAppCallback.app_control;
190 #else /* !PRIVATE_CAPI_APPFW */
191 callback->service = gAppCallback.service;
192 #endif /* PRIVATE_CAPI_APPFW */
193 callback->device_orientation = gAppCallback.device_orientation;