summaryrefslogtreecommitdiff
path: root/src/lib/edje/edje_multisense.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/edje/edje_multisense.c')
-rw-r--r--src/lib/edje/edje_multisense.c11
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
}