summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarsten Haitzler (Rasterman) <raster@rasterman.com>2013-05-10 09:10:58 +0900
committerCarsten Haitzler (Rasterman) <raster@rasterman.com>2013-05-10 09:10:58 +0900
commit45c8b4ec89b58f162b0af44c2dd96a86b893abc8 (patch)
tree0b2938a1a45aa61489fcd0606b468928035078db
parent95b91ad9b9c70f02975d4b0cf17f84a84a6ed44d (diff)
downloadefl-45c8b4ec89b58f162b0af44c2dd96a86b893abc8.tar.gz
note the pa abort and disble del of out. leak it for now.
-rw-r--r--src/lib/edje/edje_multisense.c24
1 files changed, 20 insertions, 4 deletions
diff --git a/src/lib/edje/edje_multisense.c b/src/lib/edje/edje_multisense.c
index 310e4371f0..15400b33d4 100644
--- a/src/lib/edje/edje_multisense.c
+++ b/src/lib/edje/edje_multisense.c
@@ -5,6 +5,7 @@
#include "Ecore_Audio.h"
static Eo *out = NULL;
+static int outs = 0;
static Eina_Bool _play_finished(void *data EINA_UNUSED, Eo *in, const Eo_Event_Description *desc EINA_UNUSED, void *event_info EINA_UNUSED)
{
@@ -72,12 +73,13 @@ eet_snd_file_tell(void *data, Eo *eo_obj EINA_UNUSED)
static void _free(void *data)
{
- struct _edje_multisense_eet_data *eet_data = data;
+ struct _edje_multisense_eet_data *eet_data = data;
- if (eet_data->ef) eet_close(eet_data->ef);
+ if (eet_data->ef) eet_close(eet_data->ef);
// don't free if eet_data->data comes from eet_read_direct
// free(eet_data->data);
- free(data);
+ free(data);
+ outs--;
}
#endif
@@ -150,7 +152,10 @@ _edje_multisense_internal_sound_sample_play(Edje *ed, const char *sample_name, c
ecore_audio_obj_vio_set(&eet_data->vio, eet_data, _free),
eo_event_callback_add(ECORE_AUDIO_EV_IN_STOPPED, _play_finished, NULL));
if (!out)
- out = eo_add(ECORE_AUDIO_OBJ_OUT_PULSE_CLASS, NULL);
+ {
+ out = eo_add(ECORE_AUDIO_OBJ_OUT_PULSE_CLASS, NULL);
+ if (out) outs++;
+ }
if (!out)
{
ERR("Could not create multisense audio out (pulse)");
@@ -238,6 +243,17 @@ void
_edje_multisense_shutdown(void)
{
#ifdef ENABLE_MULTISENSE
+ if (outs > 0)
+ {
+ WRN("Shutting down audio while samples still playing");
+ }
+ if (out)
+ {
+ // XXX: this causes an abort inside of pa!!!!!
+ //eo_del(out);
+ out = NULL;
+ outs = 0;
+ }
ecore_audio_shutdown();
#endif
}