efl/src/lib/ecore/efl_loop.eo

148 lines
6.2 KiB
Plaintext

import efl_types;
import eina_types;
struct Efl.Loop.Arguments {
[[EFL loop arguments data structure]]
argv: const(array<const(stringshare)>); [[Array with loop arguments]]
initialization: bool; [[Set to $true when the program should initialize its internal state. This happen once per process instance.]]
}
class Efl.Loop (Efl.Object)
{
[[The Efl Main Loop
Efl main loop provide a clean and tiny event loop library with many modules to
do lots of convenient things for a programmer, to save time and effort. It's
small and lean, designed to work from embedded systems all the way up to large
and powerful multi-cpu workstations. The main loop has a number of primitives to
be used with its main loop. It serializes all the primitives and allows for
great responsiveness without the need for threads (or any other concurrency), but
provide them if you need to.
]]
methods {
@property main @class {
[[Points to the main loop instance of the application.]]
get {}
values {
main_loop: Efl.Loop; [[Application main loop]]
}
}
@property app_efl_version {
[[Indicates the version of EFL with which this application was compiled.
This might differ from @.efl_version.
]]
get {}
values {
@cref version: Efl.Version; [[Efl version]]
}
}
@property efl_version {
[[Indicates the currently running version of EFL.
This might differ from @.app_efl_version.
]]
get {}
values {
@cref version: Efl.Version; [[Efl version]]
}
}
iterate {
[[Runs a single iteration of the main loop to process everything on the
queue.]]
}
iterate_may_block {
[[Runs a single iteration of the main loop to process everything on the
queue with block/non-blocking status.]]
return: int; [[Return from single iteration run]]
params {
may_block: int; [[A flag if the main loop has a possibility of blocking.]]
}
}
begin {
[[Runs the application main loop.]]
return: any_value_ptr; [[Value set by quit()]]
}
quit {
[[Quits the main loop once all the events currently on the queue have
been processed.]]
params {
@in exit_code: any_value; [[Returned value by begin()]]
}
}
Eina_FutureXXX_job {
[[A future promise that will be resolved from a clean main
loop context as soon as possible.
This has higher priority, for low priority use
@.Eina_FutureXXX_idle
]]
return: ptr(Eina.Future) @owned /* TODO: future<void> */; [[The future handle.]]
}
Eina_FutureXXX_idle {
[[A future promise that will be resolved from a clean main
loop context as soon as the main loop is idle.
This is a low priority version of @.Eina_FutureXXX_job
]]
return: ptr(Eina.Future) @owned /* TODO: future<void> */; [[The future handle.]]
}
Eina_FutureXXX_timeout {
[[A future promise that will be resolved from a clean main
loop context after $time seconds.]]
params {
@in time: double; [[The time from now in second that the main loop will wait before triggering it.]]
}
return: ptr(Eina.Future) @owned /* future<void> */; [[The future handle.]]
}
job {
[[Will execute that promise in the near future.]]
params {
@in data: const(void_ptr) @optional; [[The data to be given when the promise is done.]]
}
return: future<void_ptr>; [[The promise that will be triggered.]]
}
timeout {
[[Will trigger this promise when the specified timeout occur.]]
params {
@in time: double; [[The time from now in second that the main loop will wait before triggering it.]]
@in data: const(void_ptr) @optional; [[The data to be given when the promise is done.]]
}
return: future<void_ptr>; [[The promise that will be triggered.]]
}
register {
[[Will register a manager of a specific class to be answered by eo.provider_find.]]
params {
@in klass: const(Efl.Class); [[The class provided by the registered provider.]]
@in provider: const(Efl.Object); [[The provider for the newly registered class that has to provide that said Efl.Class.]]
}
return: bool; [[$true if successfully register, $false otherwise.]]
}
unregister {
[[Will unregister a manager of a specific class that was previously registered and answered by eo.provider_find.]]
params {
@in klass: const(Efl.Class); [[The class provided by the provider to unregister for.]]
@in provider: const(Efl.Object); [[The provider for the registered class to unregister.]]
}
return: bool; [[$true if successfully unregistered, $false otherwise.]]
}
}
events {
idle,enter @restart; [[Event occurs once the main loop enters the idle state.]]
idle,exit @restart; [[Event occurs once the main loop exits the idle state.]]
idle @restart; [[Event occurs once the main loop is idler. Be carefull, this will spin your CPU high if you keep listening on this event.]]
arguments: Efl.Loop.Arguments; [[Event happens when args are provided to the loop by args_add().]]
poll,high; [[Event occurs multiple time per second. The exact tick is undefined and could be adjusted system wide.]]
poll,medium; [[Event occurs multiple time per minute. The exact tick is undefined and could be adjusted system wide.]]
poll,low; [[Event occurs multiple time every 15 minutes. The exact tick is undefined and could be adjusted system wide.]]
pause; [[Called when the window is going not be displayed for some time]]
resume; [[Called before a window get rendered after a pause event]]
terminate; [[Called before starting the shutdown of elementary]]
}
implements {
Efl.Object.constructor;
Efl.Object.destructor;
Efl.Object.provider_find;
}
}