Ecore

Ecore is a set of libraries to help software development. It's part of [[EFL|Enlightenment Foundation Libraries], is written in C but bindings for Python and Ruby exists.

The base library provides main loop with interesting calls as timers, animators, pollers, file descriptor handlers, idlers idle enterer and exit, some of these do not exit in GLib or Qt counterparts. It will also provide an asynchronous event dispatching system, this can be used by applications and is also used to handle UNIX signals like.

Other libraries provide integration of some other system with Ecore, like ecore_x that integrates X11 using Xlib or Xcb; ecore_directfb that integrates DirectFB; ecore_con to do communication using TCP, UDP and even integrates with curl to provide easy access to HTTP resources; ecore_file for easier path and file manipulation and so on.

Of special interest for EFL users is Ecore_Evas that will integrate Evas with ecore main loop and some input/output system as X11, DirectFB or WindowsCE, it will feed Evas with events, request render of parts and then inform the output system that parts were updated.

Documentation

 * API (Doxygen)
 * Ecore is the base of Edje, so its documentations may help as well.

Features
Main Loop:
 * idlers, including exiter and enterer (useful for garbage collect and render phases)
 * timers, including shared timers as animators and pollers
 * file descriptor handlers
 * asynchronous events
 * UNIX signal handling in asynchronous way

X11:
 * xlib or xcb backends
 * supports most of api, including xrandr, xscreensaver and more
 * used by e17 window manager

Ecore_Evas:
 * integrates with fb, directfb, x11, directdraw, quartz and most of evas engines
 * handles evas render phase automatically using idle enterer.
 * handles memory buffer flushing on idle, releasing shared X11 pixmaps, for example

Ecore_Con:
 * easy to use, main loop based unix sockets, tcp, udp, multicast client and server
 * curl integration

Ecore_Ipc:
 * client server inter-process communication integrated in main loop

Engines

 * framebuffer, supports libts (touchscreen)
 * macos quartz
 * sdl
 * win32 api
 * WindowsCE
 * X11
 * DirectFB