#include "internal/source.h"
#include "internal/stream.h"
-
#include <unistd.h>
#ifdef ENABLE_ALURE
#include <AL/alure.h>
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);