Bug 127388

Summary: Audio CD won't play anymore
Product: [Applications] amarok Reporter: Markus Kaufhold <M.Kaufhold>
Component: generalAssignee: Amarok Developers <amarok-bugs-dist>
Status: RESOLVED FIXED    
Severity: normal    
Priority: NOR    
Version: unspecified   
Target Milestone: ---   
Platform: Fedora RPMs   
OS: Linux   
Latest Commit: Version Fixed In:
Attachments: Patch solving the issue

Description Markus Kaufhold 2006-05-15 21:32:48 UTC
Version:           amarok 1.4-SVN (using KDE KDE 3.5.1)
Installed from:    Fedora RPMs
Compiler:          gcc 3.4.4 
OS:                Linux

When trying to play an Audio CD, following happens:
First the CDDB lookup is successfully done
Then when double clicking on a track, the status bar displays:
"Local file does not exist"
and the track is grayed

Reason:
With the recent change of playlist.cpp (12th of May)
(Introduction the method checkFileStatus)
the audio CD handling wasn't considered

Attached a patch where Audio CD playing is enabled again
by adding a url().protocol() == "cdda" check to MetaBundle::checkExists
(checkExists is called within the new checkFileStatus)

Note:
Inside a lot of amaroK sources a check onto url().protocol() == "audiocd" is done
I don't think that this will give back the information of playing an audio CD.
A debug shows that always url().protocol() returns always "cdda" in that case (at least for the xine engine)
Comment 1 Markus Kaufhold 2006-05-15 21:33:28 UTC
Created attachment 16109 [details]
Patch solving the issue
Comment 2 Jeff Mitchell 2006-05-15 22:06:15 UTC
SVN commit 541256 by mitchell:

Fix CD playing.  Thanks to Markus Kaufhold for the patch.

BUG: 127388


 M  +1 -1      metabundle.cpp  


--- trunk/extragear/multimedia/amarok/src/metabundle.cpp #541255:541256
@@ -299,7 +299,7 @@
 bool
 MetaBundle::checkExists()
 {
-    m_exists = isStream() || ( url().protocol() == "file" && QFile::exists( url().path() ) );
+    m_exists = isStream() || url().protocol() == "cdda" || ( url().protocol() == "file" && QFile::exists( url().path() ) );
 
     return m_exists;
 }