Disable session backward compatibility with soundpool
[platform/core/api/sound-pool.git] / src / source.c
index b5c74d9..c35d8af 100644 (file)
@@ -22,7 +22,6 @@
 
 #include "internal/source.h"
 #include "internal/stream.h"
-
 #include <unistd.h>
 #ifdef ENABLE_ALURE
 #include <AL/alure.h>
@@ -78,8 +77,13 @@ static sound_pool_error_e __sound_pool_remove_source(sound_pool_t *pool, sound_s
                while (g_hash_table_iter_next(&iter, &key, &value)) {
                        guint size_before = g_hash_table_size(pool->streams);
                        sound_stream_t *stream = (sound_stream_t*)value;
-                       if (src == stream->parent_source)
-                               _sound_stream_destroy((sound_stream_t*)value);
+                       if (src == stream->parent_source) {
+                               if (stream->state == SOUND_POOL_STREAM_STATE_STOPPED || stream->state == SOUND_POOL_STREAM_STATE_FINISHED) {
+                                       SP_DEBUG("Callback isolator thread destroying the stream");
+                               } else {
+                                       _sound_stream_destroy((sound_stream_t*)value);
+                               }
+                       }
                        guint size_after = g_hash_table_size(pool->streams);
                        if (size_before != size_after)
                                g_hash_table_iter_init(&iter, pool->streams);