{{page>index}} ------- ===== Main Loop ===== The EFL is event-driven. This means that the application polls for data, and listens for events to interact with it. The Ecore library provides the main loop abstraction. It gets data when data is available and sends the events so that costly polling threads are not needed. Ecore manages polling, timers, events, and file descriptors. When there is no ongoing event, the main loop automatically enters an idle mode, minimizing the power consumption. The loop wakes up when needed. === Table of Contents === * [[/develop/legacy/program_guide/main_loop/timers|Timers]] * [[/develop/legacy/program_guide/main_loop/timers#To_create_and_destroy_a_timer|To create and destroy a timer]] * [[/develop/legacy/program_guide/main_loop/timers#To_create_a_timer|To create a timer]] * [[/develop/legacy/program_guide/main_loop/timers#To_delete_the_timer|To delete the timer]] * [[/develop/legacy/program_guide/main_loop/timers#To_manage_a_timer|To manage a timer]] * [[/develop/legacy/program_guide/main_loop/timers#To_change_the_timer's_interval|To change the timer's interval]] * [[/develop/legacy/program_guide/main_loop/timers#To_get_the_timer's_pending_time|To get the timer's pending time]] * [[/develop/legacy/program_guide/main_loop/timers#To_delay_the_timer's_next_occurrence|To delay the timer's next occurrence]] * [[/develop/legacy/program_guide/main_loop/timers#To_pause_the_currently_running_timer|To pause the currently running timer]] * [[/develop/legacy/program_guide/main_loop/timers#To_query_the_current_value_of_the_defined_timer_infrastructure_precision|To query the current value of the defined timer infrastructure precision]] * [[/develop/legacy/program_guide/main_loop/animators|Animators]] * [[/develop/legacy/program_guide/main_loop/animators#Forever-running_Animator|Forever-running Animator]] * [[/develop/legacy/program_guide/main_loop/animators#Specific-duration_Animator|Specific-duration Animator]] * [[/develop/legacy/program_guide/main_loop/animators#To_create_and_destroy_the_animator|To create and destroy the animator]] * [[/develop/legacy/program_guide/main_loop/animators#To_create_the_animator|To create the animator]] * [[/develop/legacy/program_guide/main_loop/animators#To_destroy_the_animator|To destroy the animator]] * [[/develop/legacy/program_guide/main_loop/animators#To_manage_the_animator|To manage the animator]] * [[/develop/legacy/program_guide/main_loop/animators#To_pause_the_currently_running_animator|To pause the currently running animator]] * [[/develop/legacy/program_guide/main_loop/animators#To_query_Ecore_for_the_interval_between_2_animator_calls|To query Ecore for the interval between 2 animator calls]] * [[/develop/legacy/program_guide/main_loop/animators#To_change_the_interval|To change the interval]] * [[/develop/legacy/program_guide/main_loop/file_descriptors|File Descriptors]] * [[/develop/legacy/program_guide/main_loop/file_descriptors#To_manage_the_file_descriptors|To manage the file descriptors]] * [[/develop/legacy/program_guide/main_loop/file_descriptors#To_set_a_callback|To set a callback]] * [[/develop/legacy/program_guide/main_loop/file_descriptors#To_listen_to_events|To listen to events]] * [[/develop/legacy/program_guide/main_loop/file_descriptors#To_wait_for_incoming_data_on_the_file_descriptor|To wait for incoming data on the file descriptor]] * [[/develop/legacy/program_guide/main_loop/file_descriptors#To_delete_a_file_descriptor_handler|To delete a file descriptor handler]] * [[/develop/legacy/program_guide/main_loop/file_descriptors#To_get_the_handler's_file_descriptor|To get the handler's file descriptor]] * [[/develop/legacy/program_guide/main_loop/file_descriptors#To_select_whether_a_flag_is_active_on_a_handler|To select whether a flag is active on a handler]] * [[/develop/legacy/program_guide/main_loop/file_descriptors#To_change_the_flags_the_handler_is_monitoring|To change the flags the handler is monitoring]] * [[/develop/legacy/program_guide/main_loop/threads|Threads]] * [[/develop/legacy/program_guide/main_loop/threads#To_manage_threads|To manage threads]] * [[/develop/legacy/program_guide/main_loop/threads#To_cancel_a_thread|To cancel a thread]] * [[/develop/legacy/program_guide/main_loop/threads#To_execute_a_thread_later|To execute a thread later]] * [[/develop/legacy/program_guide/main_loop/threads#To_get_the_maximum_number_of_concurrent_threads|To get the maximum number of concurrent threads]] * [[/develop/legacy/program_guide/main_loop/threads#To_query_the_number_of_active_threads|To query the number of active threads]] * [[/develop/legacy/program_guide/main_loop/idlers|Idlers]] * [[/develop/legacy/program_guide/main_loop/idlers#To_manage_the_idlers|To manage the idlers]] * [[/develop/legacy/program_guide/main_loop/idlers#To_add_an_idler|To add an idler]] * [[/develop/legacy/program_guide/main_loop/idlers#To_delete_an_idler|To delete an idler]] * [[/develop/legacy/program_guide/main_loop/idlers#To_add_and_delete_idle_exiters|To add and delete idle exiters]] * [[/develop/legacy/program_guide/main_loop/idlers#To_add_and_delete_idle_enterers|To add and delete idle enterers]] === Related Info === * [[https://build.enlightenment.org/job/nightly_efl_gcc_x86_64/lastSuccessfulBuild/artifact/doc/html/group__Ecore__Main__Loop__Group.html|Ecore Main Loop API]] ----- {{page>index}}