All pastes #1724274 Raw Edit

Anonymous

public diff v1 · immutable
#1724274 ·published 2009-12-22 23:02 UTC
rendered paste body
diff --git a/xbmc/linux/DeviceKitDisksProvider.cpp b/xbmc/linux/DeviceKitDisksProvider.cppindex a1ec6d7..396f610 100644--- a/xbmc/linux/DeviceKitDisksProvider.cpp+++ b/xbmc/linux/DeviceKitDisksProvider.cpp@@ -27,9 +27,9 @@  void CDeviceKitDiskDeviceOldAPI::Update() {-  m_isPartition = CDBusUtil::GetBoolean("org.freedesktop.DeviceKit.Disks", m_DeviceKitUDI.c_str(), "org.freedesktop.DeviceKit.Disks.Device", "device-is-partition");+  m_isFileSystem = CDBusUtil::GetVariant("org.freedesktop.DeviceKit.Disks", m_DeviceKitUDI.c_str(), "org.freedesktop.DeviceKit.Disks.Device", "id-usage").Equals("filesystem"); -  if (m_isPartition)+  if (m_isFileSystem)   {     PropertyMap properties;     CDBusUtil::GetAll(properties, "org.freedesktop.DeviceKit.Disks", m_DeviceKitUDI.c_str(), "org.freedesktop.DeviceKit.Disks.Device");@@ -39,9 +39,14 @@ void CDeviceKitDiskDeviceOldAPI::Update()     m_FileSystem  = properties["id-type"];     m_MountPath   = properties["device-mount-paths"];     m_isMounted   = properties["device-is-mounted"].Equals("true");-    m_isRemovable = CDBusUtil::GetBoolean("org.freedesktop.DeviceKit.Disks", properties["partition-slave"].c_str(), "org.freedesktop.DeviceKit.Disks.Device", "device-is-removable");      m_PartitionSizeGiB = (strtoull(properties["partition-size"].c_str(), NULL, 10) / 1024.0 / 1024.0 / 1024.0);+    m_isPartition = properties["device-is-partition"].Equals("true");+    m_isSystemInternal = properties["device-is-system-internal"].Equals("true");+    if (m_isPartition)+      m_isRemovable = CDBusUtil::GetBoolean("org.freedesktop.DeviceKit.Disks", properties["partition-slave"].c_str(), "org.freedesktop.DeviceKit.Disks.Device", "device-is-removable");+    else+      m_isRemovable = properties["device-is-removable"].Equals("true");   } } @@ -49,8 +54,8 @@ void CDeviceKitDiskDeviceNewAPI::Update() {   PropertyMap properties;   -  m_isPartition = CDBusUtil::GetBoolean("org.freedesktop.DeviceKit.Disks", m_DeviceKitUDI.c_str(), "org.freedesktop.DeviceKit.Disks.Device", "DeviceIsPartition");-  if (m_isPartition)+  m_isFileSystem = CDBusUtil::GetVariant("org.freedesktop.DeviceKit.Disks", m_DeviceKitUDI.c_str(), "org.freedesktop.DeviceKit.Disks.Device", "IdUsage").Equals("filesystem");+  if (m_isFileSystem)   {     CDBusUtil::GetAll(properties, "org.freedesktop.DeviceKit.Disks", m_DeviceKitUDI.c_str(), "org.freedesktop.DeviceKit.Disks.Device"); @@ -59,9 +64,14 @@ void CDeviceKitDiskDeviceNewAPI::Update()     m_FileSystem  = properties["IdType"];     m_MountPath   = properties["DeviceMountPaths"];     m_isMounted   = properties["DeviceIsMounted"].Equals("true");-    m_isRemovable = CDBusUtil::GetBoolean("org.freedesktop.DeviceKit.Disks", properties["PartitionSlave"].c_str(), "org.freedesktop.DeviceKit.Disks.Device", "DeviceIsRemovable");      m_PartitionSizeGiB = (strtoull(properties["PartitionSize"].c_str(), NULL, 10) / 1024.0 / 1024.0 / 1024.0);+    m_isPartition = properties["DeviceIsPartition"].Equals("true");+    m_isSystemInternal = properties["DeviceIsSystemInternal"].Equals("true");+    if (m_isPartition)+      m_isRemovable = CDBusUtil::GetBoolean("org.freedesktop.DeviceKit.Disks", properties["PartitionSlave"].c_str(), "org.freedesktop.DeviceKit.Disks.Device", "DeviceIsRemovable");+    else+      m_isRemovable = properties["DeviceIsRemovable"].Equals("true");   } } @@ -75,11 +85,13 @@ CDeviceKitDiskDevice::CDeviceKitDiskDevice(const char *DeviceKitUDI)   m_isMountedByUs = false;   m_isRemovable = false;   m_isPartition = false;+  m_isFileSystem = false;+  m_isSystemInternal = false; }  bool CDeviceKitDiskDevice::Mount() {-  if (!m_isMounted && m_isRemovable && m_isPartition)+  if (!m_isMounted && !m_isSystemInternal && m_isFileSystem)   {     CLog::Log(LOGDEBUG, "DeviceKit.Disks: Mounting %s", m_DeviceKitUDI.c_str());     CDBusMessage message("org.freedesktop.DeviceKit.Disks", m_DeviceKitUDI.c_str(), "org.freedesktop.DeviceKit.Disks.Device", "FilesystemMount");@@ -109,7 +121,7 @@ bool CDeviceKitDiskDevice::Mount()  bool CDeviceKitDiskDevice::UnMount() {-  if (m_isMounted && m_isRemovable && m_isPartition)+  if (m_isMounted && !m_isSystemInternal && m_isFileSystem)   {     CDBusMessage message("org.freedesktop.DeviceKit.Disks", m_DeviceKitUDI.c_str(), "org.freedesktop.DeviceKit.Disks.Device", "FilesystemUnmount"); @@ -136,20 +148,26 @@ CMediaSource CDeviceKitDiskDevice::ToMediaShare()     source.strName.Format("%.1f GB %s", m_PartitionSizeGiB, g_localizeStrings.Get(155).c_str());   else     source.strName = m_Label;-  source.m_iDriveType =  m_isRemovable ? CMediaSource::SOURCE_TYPE_REMOVABLE : CMediaSource::SOURCE_TYPE_LOCAL;+  source.m_iDriveType =  !m_isSystemInternal ? CMediaSource::SOURCE_TYPE_REMOVABLE : CMediaSource::SOURCE_TYPE_LOCAL;   source.m_ignore = true;   return source; }  bool CDeviceKitDiskDevice::IsApproved() {-  return (m_isPartition && m_UDI.length() > 0 && (m_FileSystem.length() > 0 && !m_FileSystem.Equals("swap")) && m_isMounted && !m_MountPath.Equals("/"));+  return (m_isFileSystem && m_isMounted && m_UDI.length() > 0 && (m_FileSystem.length() > 0 && !m_FileSystem.Equals("swap")) && !m_MountPath.Equals("/")); } +#define BOOL2SZ(b) ((b) ? "true" : "false")+ CStdString CDeviceKitDiskDevice::toString() {   CStdString str;-  str.Format("DeviceUDI %s: HasFileSystem %s IsMounted %s IsRemovable %s IsPartition %s", m_DeviceKitUDI.c_str(), m_FileSystem, m_isMounted ? "true" : "false", m_isRemovable ? "true" : "false", m_isPartition ? "true" : "false");+  str.Format("DeviceUDI %s: IsFileSystem %s HasFileSystem %s "+      "IsSystemInternal %s IsMounted %s IsRemovable %s IsPartition %s",+      m_DeviceKitUDI.c_str(), BOOL2SZ(m_isFileSystem), m_FileSystem,+      BOOL2SZ(m_isSystemInternal), BOOL2SZ(m_isMounted),+      BOOL2SZ(m_isRemovable), BOOL2SZ(m_isPartition));    return str; }@@ -379,7 +397,7 @@ void CDeviceKitDisksProvider::GetDisks(VECSOURCES& devices, bool EnumerateRemova   for (itr = m_AvailableDevices.begin(); itr != m_AvailableDevices.end(); ++itr)   {     CDeviceKitDiskDevice *device = itr->second;-    if (device && device->IsApproved() && device->m_isRemovable == EnumerateRemovable)+    if (device && device->IsApproved() && device->m_isSystemInternal != EnumerateRemovable)       devices.push_back(device->ToMediaShare());   } }diff --git a/xbmc/linux/DeviceKitDisksProvider.h b/xbmc/linux/DeviceKitDisksProvider.hindex e107a33..e5b3bd3 100644--- a/xbmc/linux/DeviceKitDisksProvider.h+++ b/xbmc/linux/DeviceKitDisksProvider.h@@ -41,7 +41,7 @@ public:   CMediaSource ToMediaShare();    CStdString m_UDI, m_DeviceKitUDI, m_MountPath, m_FileSystem, m_Label;-  bool m_isMounted, m_isMountedByUs, m_isRemovable, m_isPartition;+  bool m_isMounted, m_isMountedByUs, m_isRemovable, m_isPartition, m_isFileSystem, m_isSystemInternal;   float m_PartitionSizeGiB; };