brasero r1668 - in trunk: . src src/plugins/vcdimager
- From: philippr svn gnome org
- To: svn-commits-list gnome org
- Subject: brasero r1668 - in trunk: . src src/plugins/vcdimager
- Date: Mon, 29 Dec 2008 20:49:12 +0000 (UTC)
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]