Summary: | half broken k3b hal+dbus support in FC4 | ||
---|---|---|---|
Product: | [Applications] k3b | Reporter: | Paul Ionescu <i_p_a_u_l> |
Component: | general | Assignee: | Sebastian Trueg <trueg> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | rdieter |
Priority: | NOR | ||
Version: | 0.12.x | ||
Target Milestone: | --- | ||
Platform: | Fedora RPMs | ||
OS: | Linux | ||
Latest Commit: | Version Fixed In: |
Description
Paul Ionescu
2005-06-27 17:40:20 UTC
For the record, fc4 includes dbus-0.33 and hal-0.5.2 SVN commit 430473 by trueg: Fixed HAL device removing. BUG: 108229 M +2 -0 ChangeLog M +17 -20 libk3bdevice/k3bhalconnection.cpp M +2 -0 libk3bdevice/k3bhalconnection.h --- branches/stable/extragear/multimedia/k3b/ChangeLog #430472:430473 @@ -14,6 +14,8 @@ * Improved session import dialog. * Properly default to DVD size in Video DVD project. * Fixed automatic multisession handling for DVD+RW media + * Fixed handbook installation + * Fixed HAL backend: devices are properly removed now. 0.12.1 Fixed compilation problems with older musepack library version. --- branches/stable/extragear/multimedia/k3b/libk3bdevice/k3bhalconnection.cpp #430472:430473 @@ -100,9 +100,10 @@ s_contextMap[m_halContext] = this; // report all already detected devices - QStringList devs = devices(); - for( QStringList::iterator it = devs.begin(); it != devs.end(); ++it ) - emit deviceAdded( *it ); + int numDevices; + char** halDeviceList = libhal_get_all_devices( m_halContext, &numDevices, 0 ); + for( int i = 0; i < numDevices; ++i ) + addDevice( halDeviceList[i] ); return true; } @@ -133,17 +134,7 @@ QStringList K3bDevice::HalConnection::devices() const { - QStringList devs; - if( m_halContext ) { - int numDevices; - char** halDeviceList = libhal_get_all_devices( m_halContext, &numDevices, 0 ); - for( int i = 0; i < numDevices; ++i ) { - QString dev = getSystemDeviceForCdrom( halDeviceList[i] ); - if( !dev.isEmpty() ) - devs.append( dev ); - } - } - return devs; + return QStringList( m_udiDeviceMap.values() ); } @@ -169,16 +160,22 @@ void K3bDevice::HalConnection::addDevice( const char* udi ) { QString s = getSystemDeviceForCdrom( udi ); - if( !s.isEmpty() ) + if( !s.isEmpty() ) { + // kdDebug() << "Mapping udi " << udi << " to device " << s << endl; + m_udiDeviceMap[udi] = s; emit deviceAdded( s ); + } } void K3bDevice::HalConnection::removeDevice( const char* udi ) { - QString s = getSystemDeviceForCdrom( udi ); - if( !s.isEmpty() ) - emit deviceRemoved( s ); + QMapIterator<QCString, QString> it = m_udiDeviceMap.find( udi ); + if( it != m_udiDeviceMap.end() ) { + // kdDebug() << "Unmapping udi " << udi << " from device " << it.data() << endl; + emit deviceRemoved( it.data() ); + m_udiDeviceMap.erase( it ); + } } @@ -192,7 +189,7 @@ // CALLBACKS void K3bDevice::HalConnection::halDeviceAdded( LibHalContext* ctx, const char* udi ) { - // kdDebug() << k_funcinfo << endl; + // kdDebug() << "adding udi " << udi << endl; HalConnection* con = s_contextMap[ctx]; con->addDevice( udi ); } @@ -200,7 +197,7 @@ void K3bDevice::HalConnection::halDeviceRemoved( LibHalContext* ctx, const char* udi ) { - // kdDebug() << k_funcinfo << endl; + // kdDebug() << "removing udi " << udi << endl; HalConnection* con = s_contextMap[ctx]; con->removeDevice( udi ); } --- branches/stable/extragear/multimedia/k3b/libk3bdevice/k3bhalconnection.h #430472:430473 @@ -85,6 +85,8 @@ LibHalFunctions m_halFunctions; #endif + QMap<QCString, QString> m_udiDeviceMap; + /** * \return the system device for cdrom devices and an empty string for all other devices. */ |