diff options
author | Mike Blumenkrantz <zmike@osg.samsung.com> | 2016-03-10 11:48:47 -0500 |
---|---|---|
committer | Mike Blumenkrantz <zmike@osg.samsung.com> | 2016-03-10 11:48:47 -0500 |
commit | 17dc3719326c1100a746e21270e34bc4cd57807d (patch) | |
tree | 80d5bc967ee3e95509372d087dd3af8244440772 /src/lib/efx_private.h | |
parent | b1b875ce6772e014821a22d5e114837841e6adb7 (diff) |
ensure pointer lifetimes when advancing efx effect queue
CIDs 1352853, 1352852, 1352851, 1352850, 1352849, 1352848, 1352847
Diffstat (limited to 'src/lib/efx_private.h')
-rw-r--r-- | src/lib/efx_private.h | 7 |
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) |
107 | Eina_Bool efx_queue_complete(EFX *e, void *effect_data); | 108 | Eina_Bool efx_queue_complete(EFX *e, void *effect_data); |
108 | void efx_queue_process(EFX *e); | 109 | void efx_queue_process(EFX *e); |