diff -Naur amarok-2.4.3.orig/src/MediaDeviceCache.cpp amarok-2.4.3/src/MediaDeviceCache.cpp --- amarok-2.4.3.orig/src/MediaDeviceCache.cpp 2011-07-28 15:04:45.000000000 +0200 +++ amarok-2.4.3/src/MediaDeviceCache.cpp 2011-08-19 12:34:14.000000000 +0200 @@ -93,14 +93,8 @@ debug() << "Device name is = " << device.product() << " and was made by " << device.vendor(); const Solid::StorageAccess* ssa = device.as<Solid::StorageAccess>(); - const Solid::OpticalDisc * opt = device.as<Solid::OpticalDisc>(); - if ( opt && opt->availableContent() & Solid::OpticalDisc::Audio ) - { - m_type[ device.udi() ] = MediaDeviceCache::SolidAudioCdType; - m_name[ device.udi() ] = device.vendor() + " - " + device.product(); - } - else if( ssa ) + if( ssa ) { if( !m_volumes.contains( device.udi() ) ) { @@ -133,6 +127,21 @@ m_name[device.udi()] = device.vendor() + " - " + device.product(); } } + deviceList = Solid::Device::listFromType( Solid::DeviceInterface::OpticalDisc ); + foreach( const Solid::Device &device, deviceList ) + { + debug() << "Found Solid::DeviceInterface::OpticalDisc with udi = " << device.udi(); + debug() << "Device name is = " << device.product() << " and was made by " << device.vendor(); + + const Solid::OpticalDisc * opt = device.as<Solid::OpticalDisc>(); + + if ( opt && opt->availableContent() & Solid::OpticalDisc::Audio ) + { + debug() << "device is an Audio CD"; + m_type[device.udi()] = MediaDeviceCache::SolidAudioCdType; + m_name[device.udi()] = device.vendor() + " - " + device.product(); + } + } deviceList = Solid::Device::allDevices(); foreach( const Solid::Device &device, deviceList ) {