956ec70
diff -Nur audacious-plugins-fedora-2.1-orig/src/musepack/libmpc.cxx audacious-plugins-fedora-2.1-musepack/src/musepack/libmpc.cxx
956ec70
--- audacious-plugins-fedora-2.1-orig/src/musepack/libmpc.cxx	2009-07-07 00:40:36.000000000 +0200
956ec70
+++ audacious-plugins-fedora-2.1-musepack/src/musepack/libmpc.cxx	2009-11-13 19:08:48.066816546 +0100
1ef2bed
@@ -48,7 +48,6 @@
1ef2bed
 static MpcDecoder   mpcDecoder   = {0};
1ef2bed
 static TrackInfo    track        = {0};
1ef2bed
 
1ef2bed
-static GThread            *threadHandle;
1ef2bed
 static GStaticMutex threadMutex = G_STATIC_MUTEX_INIT;
1ef2bed
 
1ef2bed
 /*
956ec70
@@ -301,24 +300,21 @@
1ef2bed
     mpcDecoder.isAlive  = true;
1ef2bed
     mpcDecoder.isOutput = false;
1ef2bed
     mpcDecoder.isPause  = false;
1ef2bed
-    threadHandle = g_thread_self();
956ec70
+    data->playing = TRUE;
1ef2bed
     data->set_pb_ready(data);
1ef2bed
     decodeStream(data);
956ec70
+    data->playing = FALSE;
1ef2bed
 }
956ec70
 
1ef2bed
 static void mpcStop(InputPlayback *data)
1ef2bed
 {
1ef2bed
     setAlive(false);
1ef2bed
-    if (threadHandle)
1ef2bed
-    {
1ef2bed
-        g_thread_join(threadHandle);
1ef2bed
         if (mpcDecoder.isOutput)
1ef2bed
         {
1ef2bed
             data->output->buffer_free();
1ef2bed
             data->output->close_audio();
1ef2bed
             mpcDecoder.isOutput = false;
1ef2bed
         }
1ef2bed
-    }
1ef2bed
 }
1ef2bed
 
1ef2bed
 static void mpcPause(InputPlayback *data, short p_Pause)
956ec70
@@ -833,8 +829,7 @@
1ef2bed
 
1ef2bed
         lockAcquire();
1ef2bed
         short iPlaying = data->output->buffer_playing()? 1 : 0;
1ef2bed
-        gint iFree = data->output->buffer_free();
1ef2bed
-        if (!mpcDecoder.isPause && iFree >= ((1152 * 4) << iPlaying))
1ef2bed
+        if (!mpcDecoder.isPause)
1ef2bed
         {
1ef2bed
             unsigned status = processBuffer(data, sampleBuffer, xmmsBuffer, decoder);
1ef2bed
             if (status == (unsigned) (-1))
956ec70
@@ -860,7 +855,6 @@
1ef2bed
         else
1ef2bed
         {
1ef2bed
             lockRelease();
1ef2bed
-            g_usleep(10000);
1ef2bed
         }
1ef2bed
     }
1ef2bed
     return endThread(filename, input, false);
956ec70
@@ -911,12 +905,12 @@
1ef2bed
 
1ef2bed
 inline static void lockAcquire()
1ef2bed
 {
1ef2bed
-    g_static_mutex_lock(&threadMutex);
1ef2bed
+    /*    g_static_mutex_lock(&threadMutex);  */
1ef2bed
 }
1ef2bed
 
1ef2bed
 inline static void lockRelease()
1ef2bed
 {
1ef2bed
-    g_static_mutex_unlock(&threadMutex);
1ef2bed
+    /*    g_static_mutex_unlock(&threadMutex);  */
1ef2bed
 }
1ef2bed
 
1ef2bed
 inline static bool isAlive()