path: root/src/lib/evas/include
diff options
authorDerek Foreman <>2018-07-31 17:02:12 -0400
committerMike Blumenkrantz <>2018-07-31 17:03:16 -0400
commite7bcf0e690e75b13db022adaeeab1ab86c459540 (patch)
tree9660bfc48c7cebd1b41f13811667ae341d754b14 /src/lib/evas/include
parent3524d48719e7815792a28bf624468b21d5030736 (diff)
evas: Defer render post callbacks added during async render
Summary: To take screenshots, Enlightenment makes a new snapshot object, performs a manual render, and uses the snapshot results. Turns out if this happens while an async render is in progress, the async render's completion triggers a render post callback on the snapshot object even though it's never been involved in a render. We need to defer new render post callbacks until any currently running render completes, then add them during that render's post. Fix T7156 Reviewers: devilhorns, zmike Reviewed By: devilhorns, zmike Subscribers: devilhorns, cedric, #committers, zmike Tags: #efl Maniphest Tasks: T7156 Differential Revision:
Diffstat (limited to 'src/lib/evas/include')
1 files changed, 3 insertions, 0 deletions
diff --git a/src/lib/evas/include/evas_private.h b/src/lib/evas/include/evas_private.h
index bded8892b6..a63194df3f 100644
--- a/src/lib/evas/include/evas_private.h
+++ b/src/lib/evas/include/evas_private.h
@@ -860,6 +860,7 @@ struct _Evas_Public_Data
860 Eina_List *post_events; // free me on evas_free 860 Eina_List *post_events; // free me on evas_free
861 861
862 Eina_Inlist *callbacks; 862 Eina_Inlist *callbacks;
863 Eina_Inlist *deferred_callbacks;
863 864
864 int delete_grabs; 865 int delete_grabs;
865 int walking_grabs; 866 int walking_grabs;
@@ -1914,6 +1915,8 @@ void _efl_canvas_gesture_manager_callback_add_hook(Eo *gesture_manager, Eo *targ
1914void evas_focus_init(void); 1915void evas_focus_init(void);
1915void evas_focus_shutdown(void); 1916void evas_focus_shutdown(void);
1916 1917
1918void _deferred_callbacks_process(Evas *eo_e, Evas_Public_Data *e);
1917extern Eina_Cow *evas_object_proxy_cow; 1920extern Eina_Cow *evas_object_proxy_cow;
1918extern Eina_Cow *evas_object_map_cow; 1921extern Eina_Cow *evas_object_map_cow;
1919extern Eina_Cow *evas_object_state_cow; 1922extern Eina_Cow *evas_object_state_cow;