diff -Nur audacious-plugins-fedora-2.1-orig/src/sndfile/plugin.c audacious-plugins-fedora-2.1-sndfile/src/sndfile/plugin.c --- audacious-plugins-fedora-2.1-orig/src/sndfile/plugin.c 2009-07-07 00:40:36.000000000 +0200 +++ audacious-plugins-fedora-2.1-sndfile/src/sndfile/plugin.c 2009-10-29 13:09:20.444864401 +0100 @@ -49,7 +49,6 @@ static glong seek_time = -1; static volatile char pause_flag; -static GThread *decode_thread; static GMutex *decode_mutex; static GCond *decode_cond; @@ -395,17 +394,8 @@ samples = sf_read_short (sndfile, buffer, BUFFER_SIZE); if (samples > 0 && playback->playing == TRUE) { - while ((playback->output->buffer_free () < samples) && - playback->playing == TRUE) { - g_get_current_time(&sleeptime); - g_time_val_add(&sleeptime, 500000); - g_mutex_lock(decode_mutex); - g_cond_timed_wait(decode_cond, decode_mutex, &sleeptime); - g_mutex_unlock(decode_mutex); - if (playback->playing == FALSE) break; - } playback->pass_audio(playback, FMT_S16_NE, sfinfo.channels, samples * sizeof(buffer[0]), buffer, &playback->playing); @@ -482,9 +472,9 @@ playback->playing = TRUE; - decode_thread = g_thread_self(); playback->set_pb_ready(playback); play_loop(playback); + playback->playing = FALSE; } static void @@ -496,18 +486,12 @@ static void play_stop (InputPlayback *playback) { - if (decode_thread == NULL) - return; - g_mutex_lock(decode_mutex); playback->playing = FALSE; g_mutex_unlock(decode_mutex); g_cond_signal(decode_cond); - g_thread_join (decode_thread); - sndfile = NULL; - decode_thread = NULL; seek_time = -1; }