diff options
Diffstat (limited to 'src/lib/edje/edje_multisense.c')
-rw-r--r-- | src/lib/edje/edje_multisense.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/lib/edje/edje_multisense.c b/src/lib/edje/edje_multisense.c index ce4bd12e87..1bbb457ae3 100644 --- a/src/lib/edje/edje_multisense.c +++ b/src/lib/edje/edje_multisense.c @@ -5,14 +5,17 @@ static Eo *out = NULL; static int outs = 0; +static Eina_List *ins = NULL; static Eina_Bool outfail = EINA_FALSE; static void _play_finished(void *data EINA_UNUSED, const Efl_Event *event) { + ins = eina_list_remove(ins, event->object); efl_unref(event->object); } +#if defined(_WIN32) || defined(HAVE_PULSE) static void _out_fail(void *data EINA_UNUSED, const Efl_Event *event) { @@ -20,6 +23,7 @@ _out_fail(void *data EINA_UNUSED, const Efl_Event *event) efl_unref(event->object); out = NULL; } +#endif struct _edje_multisense_eet_data { @@ -243,6 +247,7 @@ _edje_multisense_internal_sound_sample_play(Edje *ed, const char *sample_name, c efl_unref(in); return EINA_FALSE; } + ins = eina_list_append(ins, in); } } return EINA_TRUE; @@ -346,17 +351,19 @@ void _edje_multisense_shutdown(void) { #ifdef ENABLE_MULTISENSE + Eo *in; if (outs > 0) { WRN("Shutting down audio while samples still playing"); } if (out) { - // XXX: this causes an abort inside of pa!!!!! - //efl_unref(out); + efl_unref(out); out = NULL; outs = 0; } + EINA_LIST_FREE(ins, in) + efl_unref(in); ecore_audio_shutdown(); #endif } |