diff --git a/tutorial/c/lifecycle/src/lifecycle_main.c b/tutorial/c/lifecycle/src/lifecycle_main.c index 8e962ce1..5165661c 100644 --- a/tutorial/c/lifecycle/src/lifecycle_main.c +++ b/tutorial/c/lifecycle/src/lifecycle_main.c @@ -5,45 +5,36 @@ #include /* - * These are some helper methods for triggering lifecycle events for the purpose of this demo. - * efl_pause and efl_resume may never be called for your application, depending on your environment. - * This demo triggers them directly to show how you can respond. + * This helper method triggers lifecycle events for the purpose of this demo. + * efl_pause and efl_resume may never be called for your application, depending + * on your environment, therefore this demo triggers them directly to show how + * you can respond. */ -static void -_method_delay_call(Efl_Event_Cb method, double delay, Efl_Loop *loop) -{ - efl_add(EFL_LOOP_TIMER_CLASS, loop, - efl_event_callback_add(efl_added, EFL_LOOP_TIMER_EVENT_TICK, method, loop), - efl_loop_timer_interval_set(efl_added, delay)); -} static void -_simulate_app_exit(void *data EINA_UNUSED, const Efl_Event *ev EINA_UNUSED) -{ - efl_exit(0); -} - -static void -_simulate_app_foreground(void *data, const Efl_Event *ev) +_lifecycle_simulation(void *data, const Efl_Event *ev EINA_UNUSED) { Efl_Loop *loop = data; - efl_event_callback_call(loop, EFL_LOOP_EVENT_RESUME, NULL); - efl_del(ev->object); + static int called = 0; - _method_delay_call(_simulate_app_exit, 0.5, loop); + switch (called) + { + case 0: + // First call, pause the application + efl_event_callback_call(loop, EFL_LOOP_EVENT_PAUSE, NULL); + break; + case 1: + // Second call, resume the application + efl_event_callback_call(loop, EFL_LOOP_EVENT_RESUME, NULL); + break; + default: + // Last call, exit the application + efl_exit(0); + } + + called++; } -static void -_simulate_app_background(void *data, const Efl_Event *ev) -{ - Efl_Loop *loop = data; - efl_event_callback_call(loop, EFL_LOOP_EVENT_PAUSE, NULL); - efl_del(ev->object); - - _method_delay_call(_simulate_app_foreground, 1.0, loop); -} -/* end helper methods - what follows below is efl event handling that you can use in your apps. */ - EAPI_MAIN void efl_pause(void *data EINA_UNUSED, const Efl_Event *ev EINA_UNUSED) { @@ -67,8 +58,11 @@ efl_main(void *data EINA_UNUSED, const Efl_Event *ev) { printf("Lifecycle: launched\n"); - // here we trigger the chain of simulated events to show how an app could respond to system lifecycle. - _method_delay_call(_simulate_app_background, 0.5, ev->object); + // The timer function will trigger the chain of simulated events to show + // how an app could respond to system lifecycle events. + efl_add(EFL_LOOP_TIMER_CLASS, ev->object, + efl_event_callback_add(efl_added, EFL_LOOP_TIMER_EVENT_TICK, _lifecycle_simulation, ev->object), + efl_loop_timer_interval_set(efl_added, 1.0)); } EFL_MAIN_EX()