efl/src/lib
Carsten Haitzler 3df71ab0f6 eo del interceptor: add the ability to intercept deletions of eo objects
Imagine this. You have an object. You pass this object handle as a
message to another thread. Let's say it's not a UI object, so
something you might expect to be able to be accessed from multiple
threads. In order to keep the object alive you eo_ref() it when
placing the message on a queue and eo_unref() it once the message is
"done" in the other thread. If the original sender unref()ed the
object before the message is done, then the object will be destroyed
in the reciever thread. This is bad for objects "expecting" not to be
destroyed outside their owning thread.

This allows thius situation to be fixed. A constructor in a class of
an object can set up a delete interceptor. For example if we have a
"loop ownership" class you multi-ple-inherit from/use as a mixin. This
class will set up the interceptor to ensure that on destruction if
pthread_self() != owning loop thread id, then add object to "delete
me" queue on the owning loop and wake it up. the owning loop thread
will wake up and then process this queue and delete the queued objects
nicely and safely within the "owning context".

This can also be used in this same manner to defer deletion within a
loop "until later" in the same delete_me queue.

You can even use this as a caching mechanism for objects to prevernt
their actual destruction and instead place them in a cached area to be
picked from at a later date.

The uses are many for this and this is a basic building block for
future EFL features like generic messages where a message payload
could be an eo object and thus the above loop onwership issue can
happen and needs fixing.

This adds APIs, implementation, documentation (doxy reference) and tests.

@feature
2016-03-08 16:57:22 +09:00
..
ecore ecore: Create Promises 2016-03-06 17:55:33 -03:00
ecore_audio Eo: fix oversight for key_data 2016-03-04 14:01:48 +02:00
ecore_avahi
ecore_buffer ecore_buffer: fix typos in documentation 2015-09-29 10:48:02 +01:00
ecore_cocoa ecore_cocoa: add function attributes 2016-03-02 13:56:49 -08:00
ecore_con Fix migration script mistakes and compilation warnings. 2016-03-03 09:58:08 +00:00
ecore_drm ecore-drm: Don't reset event modifiers on touch motion 2016-02-22 12:13:06 -05:00
ecore_evas Automatic migration to Eo4. 2016-03-03 09:58:08 +00:00
ecore_fb ecore fb: Use a default tslib device when none is specified through the environment variable TSLIB_TSDEVICE. 2015-10-28 17:17:54 +01:00
ecore_file Ecore_File: fix merge and simplify logic in ecore_file_file_get() on WindoWS 2015-12-07 14:08:19 +09:00
ecore_imf ecore imf: fix imf module load hangs when not even configured 2016-01-18 17:23:56 +09:00
ecore_imf_evas ecore_imf_evas: warnings-- 2015-06-29 14:18:40 +01:00
ecore_input ecore-input: Fix spelling errors in comments 2016-03-03 11:24:50 -05:00
ecore_input_evas ecore_evas_input: add value to enable mouse button cancel feature 2015-07-29 21:56:15 +09:00
ecore_ipc ecore_ipc: use Eina_Bool for one-bit bitfield 2015-11-13 13:20:10 +01:00
ecore_psl1ght ecore_psl1ght: Removed unused variable. 2015-09-03 10:19:06 +02:00
ecore_sdl
ecore_wayland ecore_wayland: move check for pointer capability 2016-01-14 11:19:24 -05:00
ecore_win32 Ecore_Win32: let cursors on the non-client area (the borders) be like the default ones 2015-12-14 11:14:51 +09:00
ecore_wl2 ecore-wl2: do not send double mouse up events during input ungrab 2016-02-17 13:16:04 -05:00
ecore_x ecore-x: add safety checks for _ecore_x_disp in some functions 2016-02-23 08:43:50 -05:00
ector Automatic migration to Eo4. 2016-03-03 09:58:08 +00:00
edje edje: return default description depends on RTL when description doesn't exist 2016-03-04 16:09:51 -08:00
eet Eet: Fail gracefully on invalid input 2015-12-29 16:19:02 +09:00
eeze eeze: add case for Graphics subsystems in eeze_udev_find_by_type 2016-02-10 10:46:45 -08:00
efl Automatic migration to Eo4. 2016-03-03 09:58:08 +00:00
efreet efreet: add locking for efreet_desktop_x_field_get() 2016-01-25 11:27:02 -05:00
eina Revert "eina: split Makefile with files/headers in preparation for additional per sub directory compilation" 2016-03-08 00:18:08 +01:00
eio Automatic migration to Eo4. 2016-03-03 09:58:08 +00:00
eldbus Automatic migration to Eo4. 2016-03-03 09:58:08 +00:00
elocation
elua elua: Fix use of eina_file_mkstemp after previous patch 2016-01-19 18:18:29 +09:00
embryo embryo: add tzdate function 2016-02-22 18:29:01 -05:00
emile emile: move all eina_str_base64 to emile_base64. 2016-01-07 16:27:57 -08:00
emotion Fix migration script mistakes and compilation warnings. 2016-03-03 09:58:08 +00:00
eo eo del interceptor: add the ability to intercept deletions of eo objects 2016-03-08 16:57:22 +09:00
eolian eolian: validate eo/legacy prefix to be [a-z_][a-z0-9_]* 2016-03-07 15:01:19 +00:00
eolian_cxx eolian-cxx: Fix Eolian C++ constructing methods with new eo_add 2016-03-03 16:05:40 -03:00
ephysics ephysics: add missing break in switch to avoid override variable with other cases 2015-10-21 14:37:18 +02:00
escape
ethumb Evil: integrate the dlfcn code into Evil 2015-12-29 22:13:58 +09:00
ethumb_client Ethumb client: Fix shadow issues (warnings). 2015-10-09 12:35:55 +01:00
evas Evas: fix camera node adding to scene 2016-03-04 16:09:51 -08:00
evil Evil: remove useless defines 2016-02-18 13:37:31 -08:00
.gitignore eldbus: add efl.model implementation. 2015-12-10 12:02:30 -08:00