diff --exclude='Makefile*' --exclude='*svn*' --exclude='*pro' --exclude='moc_*.cpp' -ru ../observable/mythplugins/mythmusic/mythmusic/aacdecoder.cpp mythplugins/mythmusic/mythmusic/aacdecoder.cpp
--- ../observable/mythplugins/mythmusic/mythmusic/aacdecoder.cpp	2005-10-27 10:15:41.000000000 -0700
+++ mythplugins/mythmusic/mythmusic/aacdecoder.cpp	2005-11-30 12:21:46.477195480 -0800
@@ -125,9 +125,9 @@
 		memmove(output_buf, output_buf + sz, output_bytes);
 		output_at = output_bytes;
 	      } else {
-		mutex()->unlock();
+		unlock();
 		usleep(500);
-		mutex()->lock();
+		lock();
 		done = user_stop;
 	      }
 	    
@@ -440,12 +440,12 @@
 void aacDecoder::run()
 {
 
-    mutex()->lock();
+    lock();
 
     if (!inited) 
     {
       error("aacDecoder: run() called without being init'd");
-        mutex()->unlock();
+        unlock();
         return;
     }
 
@@ -453,7 +453,7 @@
 
     stat = DecoderEvent::Decoding;
 
-    mutex()->unlock();
+    unlock();
 
     {
         DecoderEvent e((DecoderEvent::Type) stat);
@@ -470,7 +470,7 @@
 
     while (!done && !finish && !user_stop) 
     {
-        mutex()->lock();
+        lock();
 
         ++current_sample;
         if (seekTime >= 0.0) 
@@ -587,12 +587,12 @@
                 }
             }
         }
-        mutex()->unlock();
+        unlock();
     }
 
     flush(TRUE);
 
-    mutex()->lock();
+    lock();
 
     //cerr << "aacDecoder: completed decoding of " << filename << endl;
     if (finish)
@@ -604,7 +604,7 @@
         stat = DecoderEvent::Stopped;
     }
 
-    mutex()->unlock();
+    unlock();
 
     {
         DecoderEvent e((DecoderEvent::Type) stat);
diff --exclude='Makefile*' --exclude='*svn*' --exclude='*pro' --exclude='moc_*.cpp' -ru ../observable/mythplugins/mythmusic/mythmusic/avfdecoder.cpp mythplugins/mythmusic/mythmusic/avfdecoder.cpp
--- ../observable/mythplugins/mythmusic/mythmusic/avfdecoder.cpp	2005-10-27 10:15:41.000000000 -0700
+++ mythplugins/mythmusic/mythmusic/avfdecoder.cpp	2005-11-30 11:55:10.965750088 -0800
@@ -105,9 +105,9 @@
                 memmove(output_buf, output_buf + sz, output_bytes);
                 output_at = output_bytes;
             } else {
-                mutex()->unlock();
+                unlock();
                 usleep(500);
-                mutex()->lock();
+                lock();
                 done = user_stop;
             }
         }
@@ -227,17 +227,17 @@
     int mem_len;
     char *s;
 
-    mutex()->lock();
+    lock();
 
     if (!inited) 
     {
-        mutex()->unlock();
+        unlock();
         return;
     }
 
     stat = DecoderEvent::Decoding;
 
-    mutex()->unlock();
+    unlock();
 
     {
         DecoderEvent e((DecoderEvent::Type) stat);
@@ -247,7 +247,7 @@
     av_read_play(ic);
     while (!done && !finish && !user_stop) 
     {
-        mutex()->lock();
+        lock();
 
         // Look to see if user has requested a seek
         if (seekTime >= 0.0) 
@@ -267,7 +267,7 @@
         if (av_read_frame(ic, pkt) < 0)
         {
             cerr << "avfdecoder.o: read frame failed" << endl;
-            mutex()->unlock();
+            unlock();
             finish = TRUE;
             break;
         }
@@ -275,11 +275,11 @@
         // Get the pointer to the data and its length
         ptr = pkt->data;
         len = pkt->size;
-        mutex()->unlock();
+        unlock();
 
         while (len > 0 && !done && !finish && !user_stop && seekTime <= 0.0)  
         {
-            mutex()->lock();
+            lock();
             // Decode the stream to the output codec
             // Samples is the output buffer
             // data_size is the size in bytes of the frame
@@ -289,17 +289,17 @@
                                            ptr, len);    
             if (dec_len < 0) 
             {
-                mutex()->unlock();
+                unlock();
                 break;
             }
 
             s = (char *)samples;
-            mutex()->unlock();
+            unlock();
 
             while (data_size > 0 && !done && !finish && !user_stop && 
                    seekTime <= 0.0) 
              {
-                mutex()->lock();
+                lock();
                 // Store and check the size
                 // It is possible the returned data is larger than
                 // the output buffer.  If so, flush the buffer and
@@ -326,14 +326,14 @@
                 if (output())
                     flush();
 
-                mutex()->unlock();
+                unlock();
             }
 
-            mutex()->lock();
+            lock();
             flush();
             ptr += dec_len;
             len -= dec_len;
-            mutex()->unlock();
+            unlock();
         }
         av_free_packet(pkt);
     }
@@ -347,7 +347,7 @@
     else if (user_stop)
         stat = DecoderEvent::Stopped;
 
-    // mutex()->unlock();
+    // unlock();
 
     {
         DecoderEvent e((DecoderEvent::Type) stat);
diff --exclude='Makefile*' --exclude='*svn*' --exclude='*pro' --exclude='moc_*.cpp' -ru ../observable/mythplugins/mythmusic/mythmusic/cddecoder.cpp mythplugins/mythmusic/mythmusic/cddecoder.cpp
--- ../observable/mythplugins/mythmusic/mythmusic/cddecoder.cpp	2005-10-14 20:56:20.000000000 -0700
+++ mythplugins/mythmusic/mythmusic/cddecoder.cpp	2005-11-30 11:55:10.966749936 -0800
@@ -77,9 +77,9 @@
                 memmove(output_buf, output_buf + sz, output_bytes);
                 output_at = output_bytes;
             } else {
-                mutex()->unlock();
+                unlock();
                 usleep(500);
-                mutex()->lock();
+                lock();
                 done = user_stop;
             }
         }
@@ -174,17 +174,17 @@
 
 void CdDecoder::run()
 {
-    mutex()->lock();
+    lock();
 
     if (! inited) {
-        mutex()->unlock();
+        unlock();
 
         return;
     }
 
     stat = DecoderEvent::Decoding;
 
-    mutex()->unlock();
+    unlock();
 
     {
         DecoderEvent e((DecoderEvent::Type) stat);
@@ -194,7 +194,7 @@
     int16_t *cdbuffer;
 
     while (! done && ! finish) {
-        mutex()->lock();
+        lock();
         // decode
 
         if (seekTime >= 0.0) {
@@ -231,17 +231,17 @@
             }
         } 
 
-        mutex()->unlock();
+        unlock();
     }
 
-    mutex()->lock();
+    lock();
 
     if (finish)
         stat = DecoderEvent::Finished;
     else if (user_stop)
         stat = DecoderEvent::Stopped;
 
-    mutex()->unlock();
+    unlock();
 
     {
         DecoderEvent e((DecoderEvent::Type) stat);
diff --exclude='Makefile*' --exclude='*svn*' --exclude='*pro' --exclude='moc_*.cpp' -ru ../observable/mythplugins/mythmusic/mythmusic/decoder.cpp mythplugins/mythmusic/mythmusic/decoder.cpp
--- ../observable/mythplugins/mythmusic/mythmusic/decoder.cpp	2005-11-13 17:43:14.000000000 -0800
+++ mythplugins/mythmusic/mythmusic/decoder.cpp	2005-11-30 11:55:10.967749784 -0800
@@ -45,16 +45,16 @@
 
 void Decoder::setInput(QIODevice *i)
 {
-    mutex()->lock();
+    lock();
     in = i;
-    mutex()->unlock();
+    unlock();
 }
 
 void Decoder::setOutput(AudioOutput *o)
 {
-    mutex()->lock();
+    lock();
     out = o;
-    mutex()->unlock();
+    unlock();
 }
 
 void Decoder::error(const QString &e) 
diff --exclude='Makefile*' --exclude='*svn*' --exclude='*pro' --exclude='moc_*.cpp' -ru ../observable/mythplugins/mythmusic/mythmusic/decoder.h mythplugins/mythmusic/mythmusic/decoder.h
--- ../observable/mythplugins/mythmusic/mythmusic/decoder.h	2005-11-13 17:38:56.000000000 -0800
+++ mythplugins/mythmusic/mythmusic/decoder.h	2005-11-30 11:55:10.967749784 -0800
@@ -65,7 +65,11 @@
     void setOutput(AudioOutput *);
     void setFilename(const QString &newName) { filename = newName; }
 
-    QMutex *mutex() { return &mtx; }
+	virtual void lock(void) { return mtx.lock(); }
+	virtual void unlock(void) { return mtx.unlock(); }
+	virtual bool tryLock(void) { return mtx.tryLock(); }
+	virtual bool locked(void) { return mtx.locked(); }
+
     QWaitCondition *cond() { return &cnd; }
 
     void setBlockSize(unsigned int sz) { blksize = sz; }
@@ -87,7 +91,7 @@
 
   protected:
     Decoder(DecoderFactory *, QIODevice *, AudioOutput *);
-
+	QMutex* getMutex(void) { return &mtx; }
     void error(const QString &);
 
     QString filename;
diff --exclude='Makefile*' --exclude='*svn*' --exclude='*pro' --exclude='moc_*.cpp' -ru ../observable/mythplugins/mythmusic/mythmusic/flacdecoder.cpp mythplugins/mythmusic/mythmusic/flacdecoder.cpp
--- ../observable/mythplugins/mythmusic/mythmusic/flacdecoder.cpp	2005-10-27 10:15:41.000000000 -0700
+++ mythplugins/mythmusic/mythmusic/flacdecoder.cpp	2005-11-30 11:55:10.968749632 -0800
@@ -213,9 +213,9 @@
                 memmove(output_buf, output_buf + sz, output_bytes);
                 output_at = output_bytes;
             } else {
-                mutex()->unlock();
+                unlock();
                 usleep(500);
-                mutex()->lock();
+                lock();
                 done = user_stop;
             }
         }
@@ -245,7 +245,7 @@
 
     if (! input()->isOpen()) {
         if (! input()->open(IO_ReadOnly)) {
-            error("FlacOgg: Failed to open input. Error " +
+            error("FlacDecoder: Failed to open input. Error " +
                   QString::number(input()->status()) + ".");
             return FALSE;
         }
@@ -301,17 +301,17 @@
 
 void FlacDecoder::run()
 {
-    mutex()->lock();
+    lock();
 
     if (! inited) {
-        mutex()->unlock();
+        unlock();
 
         return;
     }
 
     stat = DecoderEvent::Decoding;
 
-    mutex()->unlock();
+    unlock();
 
     {
         DecoderEvent e((DecoderEvent::Type) stat);
@@ -322,7 +322,7 @@
     FLAC__SeekableStreamDecoderState decoderstate;
 
     while (! done && ! finish) {
-        mutex()->lock();
+        lock();
         // decode
 
         if (seekTime >= 0.0) {
@@ -355,17 +355,17 @@
             }
         }
 
-        mutex()->unlock();
+        unlock();
     }
 
-    mutex()->lock();
+    lock();
 
     if (finish)
         stat = DecoderEvent::Finished;
     else if (user_stop)
         stat = DecoderEvent::Stopped;
 
-    mutex()->unlock();
+    unlock();
 
     {
         DecoderEvent e((DecoderEvent::Type) stat);
diff --exclude='Makefile*' --exclude='*svn*' --exclude='*pro' --exclude='moc_*.cpp' -ru ../observable/mythplugins/mythmusic/mythmusic/maddecoder.cpp mythplugins/mythmusic/mythmusic/maddecoder.cpp
--- ../observable/mythplugins/mythmusic/mythmusic/maddecoder.cpp	2005-11-23 12:40:28.000000000 -0800
+++ mythplugins/mythmusic/mythmusic/maddecoder.cpp	2005-11-30 11:55:10.969749480 -0800
@@ -305,9 +305,9 @@
                 memmove(output_buf, output_buf + sz, output_bytes);
                 output_at = output_bytes;
             } else {
-                mutex()->unlock();
+                unlock();
                 usleep(500);
-                mutex()->lock();
+                lock();
                 done = user_stop;
             }
         }
@@ -316,16 +316,16 @@
 
 void MadDecoder::run()
 {
-    mutex()->lock();
+    lock();
 
     if (! inited) {
-        mutex()->unlock();
+        unlock();
         return;
     }
 
     stat = DecoderEvent::Decoding;
 
-    mutex()->unlock();
+    unlock();
 
     {
         DecoderEvent e((DecoderEvent::Type) stat);
@@ -333,7 +333,7 @@
     }
 
     while (! done && ! finish && ! derror) {
-        mutex()->lock();
+        lock();
 
         if (seekTime >= 0.0) {
             long seek_pos = long(seekTime * input()->size() / totalTime);
@@ -361,6 +361,7 @@
                     eof = true;
                 } else if (len < 0) {
                     derror = true;
+                    unlock();
                     break;
                 }
 
@@ -373,7 +374,7 @@
 
         seekTime = -1.;
 
-        mutex()->unlock();
+        unlock();
 
         while (! done && ! finish && ! derror) {
             if (mad_frame_decode(&frame, &stream) == -1) {
@@ -387,20 +388,20 @@
                 continue;
             }
 
-            mutex()->lock();
+            lock();
 
             if (seekTime >= 0.) {
-                mutex()->unlock();
+                unlock();
                 break;
             }
 
             mad_synth_frame(&synth, &frame);
             madOutput();
-            mutex()->unlock();
+            unlock();
         }
     }
 
-    mutex()->lock();
+    lock();
 
     if (! user_stop && eof) {
         flush(TRUE);
@@ -419,7 +420,7 @@
     else if (user_stop)
         stat = DecoderEvent::Stopped;
 
-    mutex()->unlock();
+    unlock();
 
     {
         DecoderEvent e((DecoderEvent::Type) stat);
--- ../observable/mythplugins/mythmusic/mythmusic/playbackbox.cpp	2005-11-23 12:40:28.000000000 -0800
+++ mythplugins/mythmusic/mythmusic/playbackbox.cpp	2005-11-30 11:55:10.973748872 -0800
@@ -923,7 +923,7 @@
             mainvisual->setVisual(visual_mode);
             
             if (curMeta) 
-                setTrackOnLCD(curMeta);
+                updateTrackInfo(curMeta);
         }    
         else
             constructPlaylistTree();
@@ -1009,7 +1009,7 @@
                     volume_status->refresh();
 
                     if (curMeta)
-                        setTrackOnLCD (curMeta);
+                        setTrackOnLCD(curMeta);
                 }
             }
         }
@@ -1039,24 +1039,8 @@
     QUrl sourceurl(playfile);
     QString sourcename(playfile);
 
-    bool startoutput = false;
-
     if (!output)
-    {
-        QString adevice = gContext->GetSetting("AudioDevice");
-
-        // TODO: Error checking that device is opened correctly!
-        output = AudioOutput::OpenAudio(adevice, 16, 2, 44100, 
-                                     AUDIOOUTPUT_MUSIC, true ); 
-        output->setBufferSize(outputBufferSize * 1024);
-        output->SetBlocking(false);
-        output->addListener(this);
-        output->addListener(mainvisual);
-        output->addVisual(mainvisual);
-    
-        startoutput = true;
-
-    }
+        openOutputDevice();
    
     if (output->GetPause())
     {
@@ -1209,9 +1193,9 @@
     // wake up threads
     if (decoder) 
     {
-        decoder->mutex()->lock();
+        decoder->lock();
         decoder->cond()->wakeAll();
-        decoder->mutex()->unlock();
+        decoder->unlock();
     }
 
 }
@@ -1220,16 +1204,16 @@
 {
     if (decoder && decoder->running()) 
     {
-        decoder->mutex()->lock();
+        decoder->lock();
         decoder->stop();
-        decoder->mutex()->unlock();
+        decoder->unlock();
     }
 
     if (decoder) 
     {
-        decoder->mutex()->lock();
+        decoder->lock();
         decoder->cond()->wakeAll();
-        decoder->mutex()->unlock();
+        decoder->unlock();
     }
 
     if (decoder)
@@ -1238,23 +1222,7 @@
 
 void PlaybackBoxMusic::stop(void)
 {
-    if (decoder && decoder->running()) 
-    {
-        decoder->mutex()->lock();
-        decoder->stop();
-        decoder->mutex()->unlock();
-    }
-
-    // wake up threads
-    if (decoder) 
-    {
-        decoder->mutex()->lock();
-        decoder->cond()->wakeAll();
-        decoder->mutex()->unlock();
-    }
-
-    if (decoder)
-        decoder->wait();
+    stopDecoder();
 
     if (output)
     {
@@ -1265,9 +1233,6 @@
     mainvisual->setDecoder(0);
     mainvisual->setOutput(0);
 
-    delete input;
-    input = 0;
-
     QString time_string;
     int maxh = maxTime / 3600;
     int maxm = (maxTime / 60) % 60;
@@ -1379,7 +1344,7 @@
 
         if (decoder && decoder->running()) 
         {
-            decoder->mutex()->lock();
+            decoder->lock();
             decoder->seek(pos);
 
             if (mainvisual) 
@@ -1389,7 +1354,7 @@
                 mainvisual->mutex()->unlock();
             }
 
-            decoder->mutex()->unlock();
+            decoder->unlock();
         }
     }
 }
@@ -1620,7 +1585,7 @@
     {
         case OutputEvent::Playing:
         {
-            setTrackOnLCD(curMeta);
+            updateTrackInfo(curMeta);
             statusString = tr("Playing stream.");
             break;
         }
@@ -1654,19 +1619,26 @@
             int maxm = (maxTime / 60) % 60;
             int maxs = maxTime % 60;
             
-            if (maxh > 0)
-                time_string.sprintf("%d:%02d:%02d / %02d:%02d:%02d", eh, em, 
-                                    es, maxh, maxm, maxs);
-            else
-                time_string.sprintf("%02d:%02d / %02d:%02d", em, es, maxm, 
-                                    maxs);
+            if (maxTime <= 0) {
+                if (eh > 0) 
+                    time_string.sprintf("%d:%02d:%02d", eh, em, es);
+                else 
+                    time_string.sprintf("%02d:%02d", em, es);                    
+            } else {
+                if (maxh > 0)
+                    time_string.sprintf("%d:%02d:%02d / %02d:%02d:%02d", eh, em, 
+                                        es, maxh, maxm, maxs);
+                else
+                    time_string.sprintf("%02d:%02d / %02d:%02d", em, es, maxm, 
+                                        maxs);
+            }
             
             if (curMeta)
             {
                 if (class LCD *lcd = LCD::Get())
                 {
-                    float percent_heard = ((float)rs / 
-                                           (float)curMeta->Length()) * 1000.0;
+                    float percent_heard = maxTime<=0?0.0:((float)rs / 
+                                                          (float)curMeta->Length()) * 1000.0;
                     lcd->setMusicProgress(time_string, percent_heard);
                 }
             }
@@ -1768,6 +1740,32 @@
             current_visualization_text->SetText("");
 }
 
+void PlaybackBoxMusic::updateTrackInfo(Metadata *mdata)
+{
+    if (title_text)
+        title_text->SetText(mdata->FormatTitle());
+    if (artist_text)
+        artist_text->SetText(mdata->FormatArtist());
+    if (album_text)
+        album_text->SetText(mdata->Album());
+    
+    setTrackOnLCD(mdata);
+}
+
+void PlaybackBoxMusic::openOutputDevice(void)
+{
+    QString adevice = gContext->GetSetting("AudioDevice");
+    
+    // TODO: Error checking that device is opened correctly!
+    output = AudioOutput::OpenAudio(adevice, 16, 2, 44100, 
+                                    AUDIOOUTPUT_MUSIC, true ); 
+    output->setBufferSize(outputBufferSize * 1024);
+    output->SetBlocking(false);
+    output->addListener(this);
+    output->addListener(mainvisual);
+    output->addVisual(mainvisual);    
+}
+
 void PlaybackBoxMusic::handleTreeListSignals(int node_int, IntVector *attributes)
 {
     if (attributes->size() < 4)
diff --exclude='Makefile*' --exclude='*svn*' --exclude='*pro' --exclude='moc_*.cpp' -ru ../observable/mythplugins/mythmusic/mythmusic/playbackbox.h mythplugins/mythmusic/mythmusic/playbackbox.h
--- ../observable/mythplugins/mythmusic/mythmusic/playbackbox.h	2005-11-23 12:40:28.000000000 -0800
+++ mythplugins/mythmusic/mythmusic/playbackbox.h	2005-11-30 11:55:10.973748872 -0800
@@ -104,7 +104,9 @@
     void doUpdatePlaylist(QString whereClause);
     void CycleVisualizer(void);
     void updatePlaylistFromCD(void);
-    void setTrackOnLCD (Metadata *mdata);
+    void setTrackOnLCD(Metadata *mdata);
+    void updateTrackInfo(Metadata *mdata);
+    void openOutputDevice(void);
     void postUpdate();
     void playFirstTrack();
 
diff --exclude='Makefile*' --exclude='*svn*' --exclude='*pro' --exclude='moc_*.cpp' -ru ../observable/mythplugins/mythmusic/mythmusic/streaminput.cpp mythplugins/mythmusic/mythmusic/streaminput.cpp
--- ../observable/mythplugins/mythmusic/mythmusic/streaminput.cpp	2005-10-14 20:56:20.000000000 -0700
+++ mythplugins/mythmusic/mythmusic/streaminput.cpp	2005-11-30 11:55:10.974748720 -0800
@@ -21,7 +21,7 @@
 void StreamInput::setup()
 {
     if (! url.isValid())
-	return;
+        return;
 
     QString protocol = url.protocol();
     QString host = url.host();
@@ -29,10 +29,10 @@
     int port = url.port();
 
     if (protocol != "mqp" || host.isNull())
-	return;
+        return;
 
     if (port == -1)
-	port = 42666;
+        port = 42666;
 
     request = ".song " + path.utf8() + "\r\n";
 
@@ -45,10 +45,11 @@
 
     sock->connectToHost(host, port);
 
-    while (stage != -1 && stage < 4) {
-	qDebug("processing one event: stage %d %d %ld",
-	       stage, sock->canReadLine(), sock->bytesAvailable());
-	qApp->processOneEvent();
+    while (stage != -1 && stage < 4) 
+    {
+        qDebug("processing one event: stage %d %d %ld",
+               stage, sock->canReadLine(), sock->bytesAvailable());
+        qApp->processOneEvent();
     }
 
     qDebug("disconnecting from socket");
@@ -57,10 +58,11 @@
     disconnect(sock, SIGNAL(connected()), this, SLOT(connected()));
     disconnect(sock, SIGNAL(readyRead()), this, SLOT(readyread()));
 
-    if (stage == -1) {
-	// some sort of error
-	delete sock;
-	sock = 0;
+    if (stage == -1) 
+    {
+        // some sort of error
+        delete sock;
+        sock = 0;
     }
 }
 
@@ -85,32 +87,38 @@
 
 void StreamInput::readyread()
 {
-    if (stage == 2) {
-    qDebug("readyread... checking response");
-
-    if (! sock->canReadLine()) {
-	stage = -1;
-	qDebug("can't read line");
-	return;
-    }
-
-    QString line = sock->readLine();
-    if (line.isEmpty()) {
-	stage = -1;
-	qDebug("line is empty");
-	return;
-    }
-
-    if (line.left(5) != "*GOOD") {
-	VERBOSE(VB_IMPORTANT, QString("server error response: %1")
-                                      .arg(line));
-	stage = -1;
-	return;
-    }
-
-    stage = 3;
-    } else if (sock->bytesAvailable() > 65536 || sock->atEnd()) {
-	stage = 4;
+    if (stage == 2) 
+    {
+        qDebug("readyread... checking response");
+        
+        if (! sock->canReadLine()) 
+        {
+            stage = -1;
+            qDebug("can't read line");
+            return;
+        }
+        
+        QString line = sock->readLine();
+        if (line.isEmpty()) 
+        {
+            stage = -1;
+            qDebug("line is empty");
+            return;
+        }
+
+        if (line.left(5) != "*GOOD") 
+        {
+            VERBOSE(VB_IMPORTANT, QString("server error response: %1")
+                    .arg(line));
+            stage = -1;
+            return;
+        }
+        
+        stage = 3;
+    } 
+    else if (sock->bytesAvailable() > 65536 || sock->atEnd()) 
+    {
+        stage = 4;
     }
 }
 
diff --exclude='Makefile*' --exclude='*svn*' --exclude='*pro' --exclude='moc_*.cpp' -ru ../observable/mythplugins/mythmusic/mythmusic/vorbisdecoder.cpp mythplugins/mythmusic/mythmusic/vorbisdecoder.cpp
--- ../observable/mythplugins/mythmusic/mythmusic/vorbisdecoder.cpp	2005-10-27 10:15:41.000000000 -0700
+++ mythplugins/mythmusic/mythmusic/vorbisdecoder.cpp	2005-11-30 11:55:10.975748568 -0800
@@ -120,9 +120,9 @@
                 memmove(output_buf, output_buf + sz, output_bytes);
                 output_at = output_bytes;
             } else {
-                mutex()->unlock();
+                unlock();
                 usleep(500);
-                mutex()->lock();
+                lock();
                 done = user_stop;
             }
         }
@@ -212,17 +212,17 @@
 
 void VorbisDecoder::run()
 {
-    mutex()->lock();
+    lock();
 
     if (! inited) {
-        mutex()->unlock();
+        unlock();
 
         return;
     }
 
     stat = DecoderEvent::Decoding;
 
-    mutex()->unlock();
+    unlock();
 
     {
         DecoderEvent e((DecoderEvent::Type) stat);
@@ -232,7 +232,7 @@
     int section = 0;
 
     while (! done && ! finish) {
-        mutex()->lock();
+        lock();
         // decode
 
         if (seekTime >= 0.0) {
@@ -273,17 +273,17 @@
             finish = TRUE;
         }
 
-        mutex()->unlock();
+        unlock();
     }
 
-    mutex()->lock();
+    lock();
 
     if (finish)
         stat = DecoderEvent::Finished;
     else if (user_stop)
         stat = DecoderEvent::Stopped;
 
-    mutex()->unlock();
+    unlock();
 
     {
         DecoderEvent e((DecoderEvent::Type) stat);
