[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    extragear/multimedia/k3b
From:       Michal Malek <michalm () jabster ! pl>
Date:       2010-09-09 18:56:39
Message-ID: 20100909190106.87A98AC884 () svn ! kde ! org
[Download RAW message or body]

SVN commit 1173575 by mmalek:

Don't assume optical Solid device has also Solid::Block interface. For some reason it \
                can lack it (hardware issue or Solid bug)
BUG: 249371

 M  +1 -0      ChangeLog  
 M  +10 -6     libk3bdevice/k3bdevicemanager.cpp  
 M  +4 -1      src/k3bappdevicemanager.cpp  


--- trunk/extragear/multimedia/k3b/ChangeLog #1173574:1173575
@@ -15,6 +15,7 @@
  * Search paths on "Programs" options are not saved (248648)
  * Crash on generation of DVD previews in DVD ripping list (249941)
  * Crash on closing dialog after succesful audio CD ripping (241630)
+ * Crash on device detection (249371)
 
 2.0.1
 =====
--- trunk/extragear/multimedia/k3b/libk3bdevice/k3bdevicemanager.cpp #1173574:1173575
@@ -1,6 +1,7 @@
 /*
  *
  * Copyright (C) 2003-2009 Sebastian Trueg <trueg@k3b.org>
+ * Copyright (C) 2010 Michal Malek <michalm@jabster.pl>
  *
  * This file is part of the K3b project.
  * Copyright (C) 1998-2009 Sebastian Trueg <trueg@k3b.org>
@@ -354,15 +355,16 @@
 
 K3b::Device::Device* K3b::Device::DeviceManager::addDevice( const Solid::Device& \
solidDevice )  {
-    if ( findDevice( solidDevice.as<Solid::Block>()->device() ) ) {
-        kDebug() << "(K3b::Device::DeviceManager) dev " << \
solidDevice.as<Solid::Block>()->device()  << " already found"; +    if( const \
Solid::Block* blockDevice = solidDevice.as<Solid::Block>() ) { +        if( \
!findDevice( blockDevice->device() ) ) +            return addDevice( new \
K3b::Device::Device( solidDevice ) ); +        else
+            kDebug() << "(K3b::Device::DeviceManager) dev " << blockDevice->device() \
<< " already found"; +    }
         return 0;
     }
 
-    return addDevice( new K3b::Device::Device( solidDevice ) );
-}
 
-
 K3b::Device::Device* K3b::Device::DeviceManager::addDevice( K3b::Device::Device* \
device )  {
     const QString devicename = device->blockDeviceName();
@@ -409,7 +411,8 @@
 
 void K3b::Device::DeviceManager::removeDevice( const Solid::Device& dev )
 {
-    if( Device* device = findDevice( dev.as<Solid::Block>()->device() ) ) {
+    if( const Solid::Block* blockDevice = dev.as<Solid::Block>() ) {
+        if( Device* device = findDevice( blockDevice->device() ) ) {
         d->cdReader.removeAll( device );
         d->dvdReader.removeAll( device );
         d->bdReader.removeAll( device );
@@ -424,6 +427,7 @@
         delete device;
     }
 }
+}
 
 
 void K3b::Device::DeviceManager::slotSolidDeviceAdded( const QString& udi )
--- trunk/extragear/multimedia/k3b/src/k3bappdevicemanager.cpp #1173574:1173575
@@ -1,6 +1,7 @@
 /*
  *
  * Copyright (C) 2005-2008 Sebastian Trueg <trueg@k3b.org>
+ * Copyright (C) 2010 Michal Malek <michalm@jabster.pl>
  *
  * This file is part of the K3b project.
  * Copyright (C) 1998-2008 Sebastian Trueg <trueg@k3b.org>
@@ -125,7 +126,8 @@
 
 void K3b::AppDeviceManager::removeDevice( const Solid::Device& solidDev )
 {
-    if( findDevice( solidDev.as<Solid::Block>()->device() ) == currentDevice() )
+    if( const Solid::Block* blockDevice = solidDev.as<Solid::Block>() ) {
+        if( findDevice( blockDevice->device() ) == currentDevice() )
         setCurrentDevice( 0 );
 
     K3b::Device::DeviceManager::removeDevice( solidDev );
@@ -133,6 +135,7 @@
     if( currentDevice() == 0 && !allDevices().isEmpty() )
         setCurrentDevice( allDevices().first() );
 }
+}
 
 
 void K3b::AppDeviceManager::slotMediumChanged( K3b::Device::Device* dev )


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic