[Goodies-commits] r6740 - xfburn/trunk/xfburn

David Mohr squisher at xfce.org
Sun Feb 22 07:11:57 CET 2009


Author: squisher
Date: 2009-02-22 06:11:57 +0000 (Sun, 22 Feb 2009)
New Revision: 6740

Modified:
   xfburn/trunk/xfburn/xfburn-device-list.c
   xfburn/trunk/xfburn/xfburn-device-list.h
   xfburn/trunk/xfburn/xfburn-hal-manager.c
Log:
Check devices from hal for being a burner in the same way as libburn devices. Fixes bug 4957

Modified: xfburn/trunk/xfburn/xfburn-device-list.c
===================================================================
--- xfburn/trunk/xfburn/xfburn-device-list.c	2009-02-22 05:53:45 UTC (rev 6739)
+++ xfburn/trunk/xfburn/xfburn-device-list.c	2009-02-22 06:11:57 UTC (rev 6740)
@@ -45,8 +45,7 @@
 static int is_erasable = 0;
 static char * libburn_msg_prefix = "libburn-";
 
-#define CAN_BURN_CONDITION device->cdr || device->cdrw || device->dvdr || device->dvdram
-#define DEVICE_INFO_PRINTF "%s can burn: %d [cdr: %d, cdrw: %d, dvdr: %d, dvdram: %d]", device->name, CAN_BURN_CONDITION, device->cdr, device->cdrw, device->dvdr, device->dvdram
+#define DEVICE_INFO_PRINTF "%s can burn: %d [cdr: %d, cdrw: %d, dvdr: %d, dvdram: %d]", device->name, XFBURN_DEVICE_LIST_CAN_BURN_CONDITION(device), device->cdr, device->cdrw, device->dvdr, device->dvdram
 
 /*************/
 /* internals */
@@ -189,7 +188,7 @@
 
     fillin_libburn_device_info (device, &drives[i]);
 
-    can_burn = CAN_BURN_CONDITION;
+    can_burn = XFBURN_DEVICE_LIST_CAN_BURN_CONDITION(device);
     
     ret = burn_drive_get_adr (&(drives[i]), device->addr);
     if (ret <= 0)

Modified: xfburn/trunk/xfburn/xfburn-device-list.h
===================================================================
--- xfburn/trunk/xfburn/xfburn-device-list.h	2009-02-22 05:53:45 UTC (rev 6739)
+++ xfburn/trunk/xfburn/xfburn-device-list.h	2009-02-22 06:11:57 UTC (rev 6740)
@@ -77,6 +77,8 @@
 
 } XfburnDevice;
 
+#define XFBURN_DEVICE_LIST_CAN_BURN_CONDITION(dev) ((dev)->cdr || (dev)->cdrw || (dev)->dvdr || (dev)->dvdram)
+
 gint xfburn_device_list_init ();
 XfburnDevice * xfburn_device_lookup_by_name (const gchar * name);
 GList * xfburn_device_list_get_list ();

Modified: xfburn/trunk/xfburn/xfburn-hal-manager.c
===================================================================
--- xfburn/trunk/xfburn/xfburn-hal-manager.c	2009-02-22 05:53:45 UTC (rev 6739)
+++ xfburn/trunk/xfburn/xfburn-hal-manager.c	2009-02-22 06:11:57 UTC (rev 6740)
@@ -330,7 +330,7 @@
   for (devices = all_devices; *devices != NULL; devices++) {
     dbus_bool_t exists;
     char **cap_list, **caps;
-    gboolean writer = FALSE;
+    gboolean optical_drive = FALSE;
     int write_speed;
 
     exists = libhal_device_property_exists (priv->hal_context, *devices, "info.capabilities", &error);
@@ -369,19 +369,16 @@
           return -1;
         }
 
-        /* disable this check for the moment, assuming that the presence of the storage.cdrom.write_speed
-         * property is enough to detect a writer. This fixes bug 4957 for now.
-        if (write_speed > 0)
-         */
-        writer = TRUE;
+        optical_drive = TRUE;
       }
     }
     libhal_free_string_array (cap_list);
 
-    if (writer) {
+    if (optical_drive) {
       XfburnDevice *device = g_new0 (XfburnDevice, 1);
       char *str, *str_vendor;
       gboolean dvdr = FALSE;
+
       /*
       libhal_device_print (priv->hal_context, *devices, &error);
       printf ("\n");
@@ -394,6 +391,7 @@
       */
 
       device->accessible = FALSE;
+
       str_vendor = libhal_device_get_property_string (priv->hal_context, *devices, "storage.vendor", &error);
       if (dbus_error_is_set (&error)) {
         g_warning ("Error getting HAL property for %s: %s", *devices, error.message);
@@ -437,14 +435,6 @@
         continue;
       }
 
-      device->cdr = libhal_device_get_property_bool (priv->hal_context, *devices, "storage.cdrom.cdr", &error);
-      if (dbus_error_is_set (&error)) {
-        g_warning ("Error getting HAL property for %s: %s", *devices, error.message);
-        dbus_error_free (&error);
-        g_free (device);
-        continue;
-      }
-
       device->cdrw = libhal_device_get_property_bool (priv->hal_context, *devices, "storage.cdrom.cdrw", &error);
       if (dbus_error_is_set (&error)) {
         g_warning ("Error getting HAL property for %s: %s", *devices, error.message);
@@ -478,7 +468,13 @@
         continue;
       }
 
-      DBG ("Found drive '%s' at '%s'", device->name, device->addr);
+      if (!XFBURN_DEVICE_LIST_CAN_BURN_CONDITION (device)) {
+        DBG ("Ignoring reader '%s' at '%s'", device->name, device->addr);
+        g_free (device);
+        continue;
+      }
+
+      DBG ("Found writer '%s' at '%s'", device->name, device->addr);
       *device_list = g_list_append (*device_list, device);
       n_devices++;
     }




More information about the Goodies-commits mailing list