elementary: provide a new initialization macro that support lifecycle.
EFL_MAIN_EX require efl_main, efl_resume, efl_pause and efl_terminate to be working. Quicklaunch support added too.
This commit is contained in:
parent
596dba5fe5
commit
fdc92ca868
|
@ -110,12 +110,32 @@ extern EAPI double _elm_startup_time;
|
||||||
|
|
||||||
#ifndef ELM_LIB_QUICKLAUNCH
|
#ifndef ELM_LIB_QUICKLAUNCH
|
||||||
#define EFL_MAIN() int main(int argc, char **argv) { int ret__; _EFL_APP_VERSION_SET(); _elm_startup_time = ecore_time_unix_get(); elm_init(argc, argv); efl_event_callback_add(ecore_main_loop_get(), EFL_LOOP_EVENT_ARGUMENTS, efl_main, NULL); ret__ = efl_loop_begin(ecore_main_loop_get()); elm_shutdown(); return ret__; }
|
#define EFL_MAIN() int main(int argc, char **argv) { int ret__; _EFL_APP_VERSION_SET(); _elm_startup_time = ecore_time_unix_get(); elm_init(argc, argv); efl_event_callback_add(ecore_main_loop_get(), EFL_LOOP_EVENT_ARGUMENTS, efl_main, NULL); ret__ = efl_loop_begin(ecore_main_loop_get()); elm_shutdown(); return ret__; }
|
||||||
|
|
||||||
|
#define EFL_MAIN_EX() \
|
||||||
|
EFL_CALLBACKS_ARRAY_DEFINE(_efl_main_ex, \
|
||||||
|
{ EFL_LOOP_EVENT_ARGUMENTS, efl_main }, \
|
||||||
|
{ EFL_LOOP_EVENT_PAUSE, efl_pause }, \
|
||||||
|
{ EFL_LOOP_EVENT_RESUME, efl_resume }, \
|
||||||
|
{ EFL_EVENT_DEL, efl_terminate }); \
|
||||||
|
int main(int argc, char **argv) \
|
||||||
|
{ \
|
||||||
|
int ret__; \
|
||||||
|
_EFL_APP_VERSION_SET(); \
|
||||||
|
_elm_startup_time = ecore_time_unix_get(); \
|
||||||
|
elm_init(argc, argv); \
|
||||||
|
efl_event_callback_array_add(ecore_main_loop_get(), _efl_main_ex(), NULL); \
|
||||||
|
ret__ = efl_loop_begin(ecore_main_loop_get()); \
|
||||||
|
elm_shutdown(); \
|
||||||
|
return ret__; \
|
||||||
|
}
|
||||||
|
|
||||||
#else
|
#else
|
||||||
/** @deprecated macro to be used after the elm_main() function.
|
/** @deprecated macro to be used after the elm_main() function.
|
||||||
* Do not define ELM_LIB_QUICKLAUNCH
|
* Do not define ELM_LIB_QUICKLAUNCH
|
||||||
* Compile your programs with -fpie and -pie -rdynamic instead, to generate a single binary (linkable executable).
|
* Compile your programs with -fpie and -pie -rdynamic instead, to generate a single binary (linkable executable).
|
||||||
*/
|
*/
|
||||||
#define EFL_MAIN() int main(int argc, char **argv) { int ret__; _EFL_APP_VERSION_SET(); _elm_startup_time = ecore_time_unix_get(); ret__ = efl_quicklaunch_fallback(argc, argv); elm_shutdown(); return ret__; }
|
#define EFL_MAIN() int main(int argc, char **argv) { int ret__; _EFL_APP_VERSION_SET(); _elm_startup_time = ecore_time_unix_get(); ret__ = efl_quicklaunch_fallback(argc, argv); elm_shutdown(); return ret__; (void) efl_main(NULL, NULL); return 0; }
|
||||||
|
#define EFL_MAIN_EX() int main(int argc, char **argv) { int ret__; _EFL_APP_VERSION_SET(); _elm_startup_time = ecore_time_unix_get(); ret__ = efl_quicklaunch_fallback(argc, argv); elm_shutdown(); return ret__; (void) efl_main(NULL, NULL); (void) efl_pause(NULL, NULL); (void) efl_resume(NULL, NULL); (void) efl_terminate(NULL, NULL); return 0; }
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif /* EFL_BETA_API_SUPPORT */
|
#endif /* EFL_BETA_API_SUPPORT */
|
||||||
|
|
|
@ -930,6 +930,18 @@ static int (*qr_main)(int argc,
|
||||||
char **argv) = NULL;
|
char **argv) = NULL;
|
||||||
static void (*qre_main)(void *data,
|
static void (*qre_main)(void *data,
|
||||||
const Efl_Event *ev) = NULL;
|
const Efl_Event *ev) = NULL;
|
||||||
|
static void (*qre_pause)(void *data,
|
||||||
|
const Efl_Event *ev) = NULL;
|
||||||
|
static void (*qre_resume)(void *data,
|
||||||
|
const Efl_Event *ev) = NULL;
|
||||||
|
static void (*qre_terminate)(void *data,
|
||||||
|
const Efl_Event *ev) = NULL;
|
||||||
|
|
||||||
|
EFL_CALLBACKS_ARRAY_DEFINE(_qre_main_ex,
|
||||||
|
{ EFL_LOOP_EVENT_ARGUMENTS, qre_main },
|
||||||
|
{ EFL_LOOP_EVENT_PAUSE, qre_pause },
|
||||||
|
{ EFL_LOOP_EVENT_RESUME, qre_resume },
|
||||||
|
{ EFL_EVENT_DEL, qre_terminate });
|
||||||
|
|
||||||
EAPI Eina_Bool
|
EAPI Eina_Bool
|
||||||
elm_quicklaunch_prepare(int argc,
|
elm_quicklaunch_prepare(int argc,
|
||||||
|
@ -1057,6 +1069,9 @@ efl_quicklaunch_prepare(int argc,
|
||||||
{
|
{
|
||||||
INF("dlopen('%s') = %p", exe, qr_handle);
|
INF("dlopen('%s') = %p", exe, qr_handle);
|
||||||
qre_main = dlsym(qr_handle, "efl_main");
|
qre_main = dlsym(qr_handle, "efl_main");
|
||||||
|
qre_pause = dlsym(qr_handle, "efl_pause");
|
||||||
|
qre_resume = dlsym(qr_handle, "efl_resume");
|
||||||
|
qre_terminate = dlsym(qr_handle, "efl_terminate");
|
||||||
if (qre_main)
|
if (qre_main)
|
||||||
{
|
{
|
||||||
INF("dlsym(%p, 'elm_main') = %p", qr_handle, qre_main);
|
INF("dlsym(%p, 'elm_main') = %p", qr_handle, qre_main);
|
||||||
|
@ -1090,6 +1105,9 @@ efl_quicklaunch_prepare(int argc,
|
||||||
INF("dlopen('%s') = %p", exe2, qr_handle);
|
INF("dlopen('%s') = %p", exe2, qr_handle);
|
||||||
qre_main = dlsym(qr_handle, "efl_main");
|
qre_main = dlsym(qr_handle, "efl_main");
|
||||||
INF("dlsym(%p, 'elm_main') = %p", qr_handle, qre_main);
|
INF("dlsym(%p, 'elm_main') = %p", qr_handle, qre_main);
|
||||||
|
qre_pause = dlsym(qr_handle, "efl_pause");
|
||||||
|
qre_resume = dlsym(qr_handle, "efl_resume");
|
||||||
|
qre_terminate = dlsym(qr_handle, "efl_terminate");
|
||||||
if (!qre_main)
|
if (!qre_main)
|
||||||
{
|
{
|
||||||
WRN("not quicklauncher capable: no efl_main in '%s'", exe2);
|
WRN("not quicklauncher capable: no efl_main in '%s'", exe2);
|
||||||
|
@ -1210,7 +1228,14 @@ elm_quicklaunch_fork(int argc,
|
||||||
|
|
||||||
if (qre_main)
|
if (qre_main)
|
||||||
{
|
{
|
||||||
efl_event_callback_add(ecore_main_loop_get(), EFL_LOOP_EVENT_ARGUMENTS, qre_main, NULL);
|
if (qre_pause && qre_resume && qre_terminate)
|
||||||
|
{
|
||||||
|
efl_event_callback_array_add(ecore_main_loop_get(), _qre_main_ex(), NULL);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
efl_event_callback_add(ecore_main_loop_get(), EFL_LOOP_EVENT_ARGUMENTS, qre_main, NULL);
|
||||||
|
}
|
||||||
ret = efl_loop_begin(ecore_main_loop_get());
|
ret = efl_loop_begin(ecore_main_loop_get());
|
||||||
elm_shutdown();
|
elm_shutdown();
|
||||||
exit(ret);
|
exit(ret);
|
||||||
|
|
Loading…
Reference in New Issue