summaryrefslogtreecommitdiff
path: root/src/lib/ecore_evas/ecore_evas_buffer.c
diff options
context:
space:
mode:
authorMike Blumenkrantz <zmike@osg.samsung.com>2017-03-31 14:57:34 -0400
committerMike Blumenkrantz <zmike@osg.samsung.com>2017-03-31 14:57:25 -0400
commit0f6139b9cbbde565632b238ea4a4f72b5003f062 (patch)
tree20c6215323624676f39f678da09cb40d71bcf698 /src/lib/ecore_evas/ecore_evas_buffer.c
parentd956f340214a105736c48d9c9eff9b4898b6994e (diff)
ecore-evas: add flag for buffer canvas to prevent deadlock in pixels_get
when calling pixels_get during a render callback, another render would trigger which would cause a deadlock from evas spinlock usage @fix
Diffstat (limited to 'src/lib/ecore_evas/ecore_evas_buffer.c')
-rw-r--r--src/lib/ecore_evas/ecore_evas_buffer.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/lib/ecore_evas/ecore_evas_buffer.c b/src/lib/ecore_evas/ecore_evas_buffer.c
index 80f4ac8e01..4910c072c8 100644
--- a/src/lib/ecore_evas/ecore_evas_buffer.c
+++ b/src/lib/ecore_evas/ecore_evas_buffer.c
@@ -147,6 +147,7 @@ _ecore_evas_buffer_render(Ecore_Evas *ee)
147 int rend = 0; 147 int rend = 0;
148 148
149 bdata = ee->engine.data; 149 bdata = ee->engine.data;
150 if (bdata->in_render) return 0;
150 EINA_LIST_FOREACH(ee->sub_ecore_evas, ll, ee2) 151 EINA_LIST_FOREACH(ee->sub_ecore_evas, ll, ee2)
151 { 152 {
152 if (ee2->func.fn_pre_render) ee2->func.fn_pre_render(ee2); 153 if (ee2->func.fn_pre_render) ee2->func.fn_pre_render(ee2);
@@ -166,7 +167,9 @@ _ecore_evas_buffer_render(Ecore_Evas *ee)
166 if (ee->func.fn_pre_render) ee->func.fn_pre_render(ee); 167 if (ee->func.fn_pre_render) ee->func.fn_pre_render(ee);
167 if (bdata->pixels) 168 if (bdata->pixels)
168 { 169 {
170 bdata->in_render = 1;
169 updates = evas_render_updates(ee->evas); 171 updates = evas_render_updates(ee->evas);
172 bdata->in_render = 0;
170 } 173 }
171 if (bdata->image) 174 if (bdata->image)
172 { 175 {