aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib/evas/canvas/evas_main.c
diff options
context:
space:
mode:
authorUlisses Furquim <ulisses.furquim@intel.com>2013-09-02 19:38:52 -0300
committerUlisses Furquim <ulisses.furquim@intel.com>2013-09-02 19:41:32 -0300
commit31b1cc6e3e158e9f47c4395888be9b227e172807 (patch)
tree3311f2162b1db33c629f693fe7ad59c7099408d3 /src/lib/evas/canvas/evas_main.c
parenteldbus: Check if interface of signal match with signal handler (diff)
downloadefl-31b1cc6e3e158e9f47c4395888be9b227e172807.tar.gz
evas/render: introduce evas_render_sync().
evas_render_sync() will loop through all canvases and wait for their rendering to finish. Since this function will execute from the main thread that will sync all of them.
Diffstat (limited to 'src/lib/evas/canvas/evas_main.c')
-rw-r--r--src/lib/evas/canvas/evas_main.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/lib/evas/canvas/evas_main.c b/src/lib/evas/canvas/evas_main.c
index 0d13a27c97..23d8f3215e 100644
--- a/src/lib/evas/canvas/evas_main.c
+++ b/src/lib/evas/canvas/evas_main.c
@@ -16,8 +16,11 @@ EAPI Eina_Bool lockdebug = EINA_FALSE;
EAPI int lockmax = 0;
#endif
+Eina_List *all_evases = NULL;
+
static int _evas_init_count = 0;
int _evas_log_dom_global = -1;
+
EAPI int
evas_init(void)
{
@@ -108,6 +111,9 @@ evas_shutdown(void)
evas_object_image_load_opts_cow = NULL;
evas_object_image_state_cow = NULL;
+ eina_list_free(all_evases);
+ all_evases = NULL;
+
evas_thread_shutdown();
_evas_preload_thread_shutdown();
evas_async_events_shutdown();
@@ -171,6 +177,8 @@ _constructor(Eo *eo_obj, void *class_data, va_list *list EINA_UNUSED)
EVAS_ARRAY_SET(e, texts_unref_queue);
#undef EVAS_ARRAY_SET
+
+ all_evases = eina_list_append(all_evases, e);
}
EAPI void
@@ -266,6 +274,8 @@ _destructor(Eo *eo_e, void *_pd, va_list *list EINA_UNUSED)
if (e->engine.module) evas_module_unref(e->engine.module);
+ all_evases = eina_list_remove(all_evases, e);
+
eina_array_flush(&e->delete_objects);
eina_array_flush(&e->active_objects);
eina_array_flush(&e->restack_objects);