summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Blumenkrantz <zmike@osg.samsung.com>2016-03-10 11:48:47 -0500
committerMike Blumenkrantz <zmike@osg.samsung.com>2016-03-10 11:48:47 -0500
commit17dc3719326c1100a746e21270e34bc4cd57807d (patch)
tree80d5bc967ee3e95509372d087dd3af8244440772
parentb1b875ce6772e014821a22d5e114837841e6adb7 (diff)
ensure pointer lifetimes when advancing efx effect queue
CIDs 1352853, 1352852, 1352851, 1352850, 1352849, 1352848, 1352847
-rw-r--r--src/lib/efx_private.h7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/lib/efx_private.h b/src/lib/efx_private.h
index 9ab13f5..0c89a6f 100644
--- a/src/lib/efx_private.h
+++ b/src/lib/efx_private.h
@@ -98,11 +98,12 @@ void efx_fade_reclip(void *efd);
98 98
99#define EFX_QUEUE_CHECK(X) do \ 99#define EFX_QUEUE_CHECK(X) do \
100 { \ 100 { \
101 Eina_Bool run; \
102 EFX *ee = (X)->e; \ 101 EFX *ee = (X)->e; \
103 run = efx_queue_complete((X)->e, (X)); \ 102 evas_object_ref(ee->obj); \
104 if ((X)->cb) (X)->cb((X)->data, &(X)->e->map_data, (X)->e->obj); \ 103 if ((X)->cb) (X)->cb((X)->data, &(X)->e->map_data, (X)->e->obj); \
105 if (run) efx_queue_process(ee); \ 104 if (efx_queue_complete((X)->e, (X))) \
105 efx_queue_process(ee); \
106 evas_object_unref(ee->obj); \
106 } while (0) 107 } while (0)
107Eina_Bool efx_queue_complete(EFX *e, void *effect_data); 108Eina_Bool efx_queue_complete(EFX *e, void *effect_data);
108void efx_queue_process(EFX *e); 109void efx_queue_process(EFX *e);