summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Blumenkrantz <zmike@osg.samsung.com>2016-03-10 11:46:18 -0500
committerMike Blumenkrantz <zmike@osg.samsung.com>2016-03-10 11:46:18 -0500
commite49657eed0aa500503eda65195683862637ceb55 (patch)
treee3c3ad03632a42c693e119cc662924067b90acd3
parent53d64276b48463ac7d8ee0d9ac673b8bf80173cf (diff)
downloadenlightenment-e49657eed0aa500503eda65195683862637ceb55.tar.gz
ensure pointer lifetimes when advancing efx effect queue
CIDs 1352853, 1352852, 1352851, 1352850, 1352849, 1352848, 1352847
-rw-r--r--src/bin/efx/e_efx_private.h7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/bin/efx/e_efx_private.h b/src/bin/efx/e_efx_private.h
index 4b5e6a5c44..95e942253b 100644
--- a/src/bin/efx/e_efx_private.h
+++ b/src/bin/efx/e_efx_private.h
@@ -98,11 +98,12 @@ void e_efx_fade_reclip(void *efd);
#define E_EFX_QUEUE_CHECK(X) do \
{ \
- Eina_Bool run; \
E_EFX *ee = (X)->e; \
- run = e_efx_queue_complete((X)->e, (X)); \
+ evas_object_ref(ee->obj); \
if ((X)->cb) (X)->cb((X)->data, &(X)->e->map_data, (X)->e->obj); \
- if (run) e_efx_queue_process(ee); \
+ if (e_efx_queue_complete((X)->e, (X))) \
+ e_efx_queue_process(ee); \
+ evas_object_unref(ee->obj); \
} while (0)
Eina_Bool e_efx_queue_complete(E_EFX *e, void *effect_data);
void e_efx_queue_process(E_EFX *e);