brasero r1668 - in trunk: . src src/plugins/vcdimager



Author: philippr
Date: Mon Dec 29 20:49:12 2008
New Revision: 1668
URL: http://svn.gnome.org/viewvc/brasero?rev=1668&view=rev

Log:
2008-12-29  Philippe Rouquier  <ykw localhost localdomain>

	Small cleanup and (failed) attempt to rescan a drive after a change occured

	* src/burn-drive.c (brasero_drive_get_gdrive),
	(brasero_drive_hal_reprobe):
	* src/burn-drive.h:
	* src/burn-volume-obj.c (brasero_volume_eject):
	* src/burn.c (brasero_burn_unlock_dest_media):
	* src/plugins/vcdimager/burn-vcdimager.c
	(brasero_vcd_imager_generate_xml_file):


Modified:
   trunk/ChangeLog
   trunk/src/burn-drive.c
   trunk/src/burn-drive.h
   trunk/src/burn-volume-obj.c
   trunk/src/burn.c
   trunk/src/plugins/vcdimager/burn-vcdimager.c

Modified: trunk/src/burn-drive.c
==============================================================================
--- trunk/src/burn-drive.c	(original)
+++ trunk/src/burn-drive.c	Mon Dec 29 20:49:12 2008
@@ -86,6 +86,54 @@
 
 G_DEFINE_TYPE (BraseroDrive, brasero_drive, G_TYPE_OBJECT);
 
+GDrive *
+brasero_drive_get_gdrive (BraseroDrive *drive)
+{
+	const gchar *volume_path = NULL;
+	GVolumeMonitor *monitor;
+	GDrive *gdrive = NULL;
+	GList *drives;
+	GList *iter;
+
+#if defined(HAVE_STRUCT_USCSI_CMD)
+	volume_path = brasero_drive_get_block_device (drive);
+#else
+	volume_path = brasero_drive_get_device (drive);
+#endif
+
+	/* NOTE: medium-monitor already holds a reference for GVolumeMonitor */
+	monitor = g_volume_monitor_get ();
+	drives = g_volume_monitor_get_connected_drives (monitor);
+	g_object_unref (monitor);
+
+	for (iter = drives; iter; iter = iter->next) {
+		gchar *device_path;
+		GDrive *tmp;
+
+		tmp = iter->data;
+		device_path = g_drive_get_identifier (tmp, G_VOLUME_IDENTIFIER_KIND_UNIX_DEVICE);
+		if (!device_path)
+			continue;
+
+		BRASERO_BURN_LOG ("Found drive %s", device_path);
+		if (!strcmp (device_path, volume_path)) {
+			gdrive = tmp;
+			g_free (device_path);
+			g_object_ref (gdrive);
+			break;
+		}
+
+		g_free (device_path);
+	}
+	g_list_foreach (drives, (GFunc) g_object_unref, NULL);
+	g_list_free (drives);
+
+	if (!drive)
+		BRASERO_BURN_LOG ("No drive found for medium");
+
+	return gdrive;
+}
+
 gboolean
 brasero_drive_get_bus_target_lun (BraseroDrive *self,
 				  guint *bus,
@@ -457,6 +505,31 @@
 			  self);
 }
 
+#if 0
+
+void
+brasero_drive_hal_reprobe (BraseroDrive *self)
+{
+	BraseroDrivePrivate *priv;
+	BraseroHALWatch *watch;
+	LibHalContext *ctx;
+	DBusError error;
+
+	priv = BRASERO_DRIVE_PRIVATE (self);
+
+	watch = brasero_hal_watch_get_default ();
+	ctx = brasero_hal_watch_get_ctx (watch);
+
+	dbus_error_init (&error);
+	if (!libhal_device_reprobe (ctx, priv->udi, &error)) {
+		BRASERO_BURN_LOG ("libhal_device_reprobe () failed %s",
+				  error.message);
+		dbus_error_free (&error);
+	}			      
+}
+
+#endif
+
 static void
 brasero_drive_check_medium_inside (BraseroDrive *self)
 {

Modified: trunk/src/burn-drive.h
==============================================================================
--- trunk/src/burn-drive.h	(original)
+++ trunk/src/burn-drive.h	Mon Dec 29 20:49:12 2008
@@ -21,6 +21,7 @@
  */
 
 #include <glib-object.h>
+#include <gio/gio.h>
 
 #ifndef _BURN_DRIVE_H_
 #define _BURN_DRIVE_H_
@@ -77,6 +78,9 @@
 BraseroMedium *
 brasero_drive_get_medium (BraseroDrive *drive);
 
+GDrive *
+brasero_drive_get_gdrive (BraseroDrive *drive);
+
 const gchar *
 brasero_drive_get_udi (BraseroDrive *drive);
 

Modified: trunk/src/burn-volume-obj.c
==============================================================================
--- trunk/src/burn-volume-obj.c	(original)
+++ trunk/src/burn-volume-obj.c	Mon Dec 29 20:49:12 2008
@@ -102,60 +102,6 @@
 	return volume;
 }
 
-static GDrive *
-brasero_volume_get_gdrive (BraseroVolume *self)
-{
-	const gchar *volume_path = NULL;
-	BraseroVolumePrivate *priv;
-	GVolumeMonitor *monitor;
-	GDrive *gdrive = NULL;
-	BraseroDrive *drive;
-	GList *drives;
-	GList *iter;
-
-	priv = BRASERO_VOLUME_PRIVATE (self);
-
-	drive = brasero_medium_get_drive (BRASERO_MEDIUM (self));
-
-#if defined(HAVE_STRUCT_USCSI_CMD)
-	volume_path = brasero_drive_get_block_device (drive);
-#else
-	volume_path = brasero_drive_get_device (drive);
-#endif
-
-	/* NOTE: medium-monitor already holds a reference for GVolumeMonitor */
-	monitor = g_volume_monitor_get ();
-	drives = g_volume_monitor_get_connected_drives (monitor);
-	g_object_unref (monitor);
-
-	for (iter = drives; iter; iter = iter->next) {
-		gchar *device_path;
-		GDrive *tmp;
-
-		tmp = iter->data;
-		device_path = g_drive_get_identifier (tmp, G_VOLUME_IDENTIFIER_KIND_UNIX_DEVICE);
-		if (!device_path)
-			continue;
-
-		BRASERO_BURN_LOG ("Found drive %s", device_path);
-		if (!strcmp (device_path, volume_path)) {
-			gdrive = tmp;
-			g_free (device_path);
-			g_object_ref (gdrive);
-			break;
-		}
-
-		g_free (device_path);
-	}
-	g_list_foreach (drives, (GFunc) g_object_unref, NULL);
-	g_list_free (drives);
-
-	if (!drive)
-		BRASERO_BURN_LOG ("No drive found for medium");
-
-	return gdrive;
-}
-
 gboolean
 brasero_volume_is_mounted (BraseroVolume *self)
 {
@@ -640,6 +586,7 @@
 	GDrive *gdrive;
 	GVolume *volume;
 	gboolean result;
+	BraseroDrive *drive;
 	BraseroVolumePrivate *priv;
 
 	BRASERO_BURN_LOG ("Ejecting");
@@ -649,7 +596,8 @@
 
 	priv = BRASERO_VOLUME_PRIVATE (self);
 
-	gdrive = brasero_volume_get_gdrive (self);
+	drive = brasero_medium_get_drive (BRASERO_MEDIUM (self));
+	gdrive = brasero_drive_get_gdrive (drive);
 	if (!gdrive) {
 		BRASERO_BURN_LOG ("No GDrive");
 		goto last_resort;

Modified: trunk/src/burn.c
==============================================================================
--- trunk/src/burn.c	(original)
+++ trunk/src/burn.c	Mon Dec 29 20:49:12 2008
@@ -1149,7 +1149,21 @@
 	brasero_drive_unlock (priv->dest);
 	medium = brasero_drive_get_medium (priv->dest);
 
-	if (BRASERO_BURN_SESSION_EJECT (priv->session))
+	if (!BRASERO_BURN_SESSION_EJECT (priv->session)) {
+		if (priv->dest) {
+			GDrive *gdrive;
+
+			gdrive = brasero_drive_get_gdrive (priv->dest);
+
+			/* reprobe the contents of the drive system wide */
+			BRASERO_BURN_LOG ("Reprobring drive %s", brasero_drive_get_display_name (priv->dest));
+			g_drive_poll_for_media (gdrive, NULL, NULL, NULL);
+			g_object_unref (gdrive);
+
+			brasero_drive_reprobe (priv->dest);
+		}
+	}
+	else
 		brasero_volume_eject (BRASERO_VOLUME (medium), FALSE, error);
 
 	priv->dest = NULL;

Modified: trunk/src/plugins/vcdimager/burn-vcdimager.c
==============================================================================
--- trunk/src/plugins/vcdimager/burn-vcdimager.c	(original)
+++ trunk/src/plugins/vcdimager/burn-vcdimager.c	Mon Dec 29 20:49:12 2008
@@ -214,6 +214,8 @@
 	if (success < 0)
 		goto error;
 
+	/* NOTE: no need to convert a possible non compliant name as this will 
+	 * be done by vcdimager. */
 	name = NULL;
 	brasero_job_get_audio_title (BRASERO_JOB (process), &name);
 	success = xmlTextWriterWriteElement (xml,



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]