Efl.Loop (class)

Description

The Efl Main Loop

The Efl main loop provides a clean and tiny event loop library with many modules to do lots of convenient things for a programmer, saving time and effort. It's lean and designed to work on anything from embedded systems all the way up to large and powerful multi-cpu workstations. The main loop has a number of primitives you can use. It serializes these and allows for greater responsiveness without the need for threads (or any other concurrency). However you can provide these if you need to.

Since 1.22

Inheritance

Efl.Task (class)Efl.Loop_Consumer (class)Efl.Object (class)

Full hierarchy

Members

begin

Runs the application main loop.
Eina_Value *efl_loop_begin(Eo *obj);


constructor [Overridden from Efl.Object]

Implement this method to provide optional initialization code for your object.
Efl_Object *efl_constructor(Eo *obj);


destructor [Overridden from Efl.Object]

Implement this method to provide deinitialization code for your object if you need it.
void efl_destructor(Eo *obj);


end [Overridden from Efl.Task]

Request the task end (may send a signal or interrupt signal resulting in a terminate event being triggered in the target task loop).
void efl_task_end(Eo *obj);


idle

A future promise that will be resolved from a clean main loop context as soon as the main loop is idle.
Eina_Future *efl_loop_idle(Eo *obj);


invalidate [Overridden from Efl.Object]

Implement this method to perform special actions when your object loses its parent, if you need to.
void efl_invalidate(Eo *obj);


iterate

Runs a single iteration of the main loop to process everything on the queue.
void efl_loop_iterate(Eo *obj);


iterate_may_block

Runs a single iteration of the main loop to process everything on the queue with block/non-blocking status.
int efl_loop_iterate_may_block(Eo *obj, int may_block);


job

A future promise that will be resolved from a clean main loop context as soon as possible.
Eina_Future *efl_loop_job(Eo *obj);


quit

Quits the main loop once all the events currently on the queue have been processed.
void efl_loop_quit(Eo *obj, Eina_Value exit_code);


run [Overridden from Efl.Task]

Actually run the task.
Eina_Bool efl_task_run(Eo *obj);


throttle (get, set)

Slow down the loop execution by forcing sleep for a small period of time every time the loop iterates/loops.
double efl_loop_throttle_get(const Eo *obj);
void efl_loop_throttle_set(Eo *obj, double amount);


time (get, set) protected set

Retrieves the time at which the last loop stopped waiting for timeouts or events.
double efl_loop_time_get(const Eo *obj);
void efl_loop_time_set(Eo *obj, double timepoint);


timeout

A future promise that will be resolved from a clean main loop context after time seconds.
Eina_Future *efl_loop_timeout(Eo *obj, double time);


Inherited

Efl.Loop_Consumer
future_rejected Creates a new future that is already rejected to a specified error using the Efl.Loop_Consumer.loop.get.
future_resolved Creates a new future that is already resolved to a value.
loop (get)
promise_new Create a new promise with the scheduler coming from the loop provided by this object.
Efl.Object
allow_parent_unref (get, set) Allow an object to be deleted by unref even if it has a parent.
children_iterator_new Get an iterator on all children.
comment (get, set) A human readable comment for the object.
composite_attach Make an object a composite object of another.
composite_detach Detach a composite object from another object.
composite_part_is Check if an object is part of a composite object.
debug_name_override Build a read-only name for this object used for debugging.
event_callback_forwarder_del Remove an event callback forwarder for a specified event and object.
event_callback_forwarder_priority_add Add an event callback forwarder that will make this object emit an event whenever another object (source) emits it. The event is said to be forwarded from source to this object.
event_callback_stop Stop the current callback call.
event_freeze Freeze events of this object.
event_freeze_count (get)
static event_global_freeze Globally freeze events for ALL EFL OBJECTS.
static event_global_freeze_count (get)
static event_global_thaw Globally thaw events for ALL EFL OBJECTS.
event_thaw Thaw events of object.
finalize Implement this method to finish the initialization of your object after all (if any) user-provided configuration methods have been executed.
finalized (get)
invalidated (get)
invalidating (get)
name (get, set) The name of the object.
name_find Find a child object with the given name and return it.
provider_find Searches upwards in the object tree for a provider which knows the given class/interface.
provider_register Will register a manager of a specific class to be answered by Efl.Object.provider_find.
provider_unregister Will unregister a manager of a specific class that was previously registered and answered by Efl.Object.provider_find.
Efl.Task
exit_code (get)
flags (get, set) Flags to further customize task's behavior.
parent (get, set) The parent of an object.
priority (get, set) The priority of this task.

Events

arguments

Event happens when args are provided to the loop by args_add().
EFL_LOOP_EVENT_ARGUMENTS(Efl_Loop_Arguments)


idle

Event occurs once the main loop is idle. If you keep listening on this event it may increase the burden on your CPU.
EFL_LOOP_EVENT_IDLE(void, @restart)


idle,enter

Event occurs once the main loop enters the idle state.
EFL_LOOP_EVENT_IDLE_ENTER(void, @restart)


idle,exit

Event occurs once the main loop exits the idle state.
EFL_LOOP_EVENT_IDLE_EXIT(void, @restart)


poll,high

Event occurs multiple times per second. The exact tick is undefined and can be adjusted system-wide.
EFL_LOOP_EVENT_POLL_HIGH(void)


poll,low

Event occurs multiple times every 15 minutes. The exact tick is undefined and can be adjusted system-wide.
EFL_LOOP_EVENT_POLL_LOW(void)


poll,medium

Event occurs multiple times per minute. The exact tick is undefined and can be adjusted system-wide.
EFL_LOOP_EVENT_POLL_MEDIUM(void)


quit

Event occurs when the loop was requested to quit externally e.g. by a ctrl+c signal or a request from a parent loop/thread to have the child exit.
EFL_LOOP_EVENT_QUIT(void)


Inherited

Efl.Object
del Object is being deleted. See Efl.Object.destructor.
destruct Object has been fully destroyed. It can not be used beyond this point. This event should only serve to clean up any reference you keep to the object.
invalidate Object is being invalidated and losing its parent. See Efl.Object.invalidate.
noref Object has lost its last reference, only parent relationship is keeping it alive. Advanced usage.
ownership,shared Object has acquired a second reference. It has multiple owners now. Triggered whenever increasing the refcount from one to two, it will not trigger by further increasing the refcount beyond two.
ownership,unique Object has lost a reference and only one is left. It has just one owner now. Triggered whenever the refcount goes from two to one.
Efl.Task
exit Called when the task exits. You can pick up any information you need at this point such as exit_code etc.