brasero r1001 - in trunk: . src
- From: philippr svn gnome org
- To: svn-commits-list gnome org
- Subject: brasero r1001 - in trunk: . src
- Date: Wed, 16 Jul 2008 13:40:58 +0000 (UTC)
Author: philippr
Date: Wed Jul 16 13:40:58 2008
New Revision: 1001
URL: http://svn.gnome.org/viewvc/brasero?rev=1001&view=rev
Log:
Silence a warning when ejecting and no gdrive is available
* src/burn-volume-obj.c (brasero_volume_eject_gvolume),
(brasero_volume_eject):
Modified:
trunk/ChangeLog
trunk/src/burn-volume-obj.c
Modified: trunk/src/burn-volume-obj.c
==============================================================================
--- trunk/src/burn-volume-obj.c (original)
+++ trunk/src/burn-volume-obj.c Wed Jul 16 13:40:58 2008
@@ -482,6 +482,56 @@
}
gboolean
+brasero_volume_eject_gvolume (BraseroVolume *self,
+ gboolean wait,
+ GVolume *volume,
+ GError **error)
+{
+ BraseroVolumePrivate *priv;
+ gboolean result;
+
+ priv = BRASERO_VOLUME_PRIVATE (self);
+
+ if (!g_volume_can_eject (volume))
+ return FALSE;
+
+ if (wait) {
+ gulong eject_sig;
+ BraseroDrive *drive;
+
+ drive = brasero_medium_get_drive (BRASERO_MEDIUM (self));
+ eject_sig = g_signal_connect (drive,
+ "medium-removed",
+ G_CALLBACK (brasero_volume_ejected_cb),
+ self);
+
+ g_volume_eject (volume,
+ G_MOUNT_UNMOUNT_NONE,
+ priv->cancel,
+ brasero_volume_eject_finish,
+ self);
+
+ g_object_ref (self);
+ result = brasero_volume_wait_for_operation_end (self, error);
+ g_object_unref (self);
+
+ /* NOTE: from this point on self is no longer valid */
+
+ g_signal_handler_disconnect (drive, eject_sig);
+ }
+ else {
+ g_volume_eject (volume,
+ G_MOUNT_UNMOUNT_NONE,
+ priv->cancel,
+ NULL,
+ self);
+ result = TRUE;
+ }
+
+ return result;
+}
+
+gboolean
brasero_volume_eject (BraseroVolume *self,
gboolean wait,
GError **error)
@@ -501,12 +551,17 @@
return FALSE;
gdrive = g_volume_get_drive (volume);
- g_object_unref (volume);
+ if (!gdrive) {
+ result = brasero_volume_eject_gvolume (self, wait, volume, error);
+ g_object_unref (volume);
+ return result;
+ }
- if ((!gdrive || !g_drive_can_eject (gdrive))
- && !g_volume_can_eject (volume)) {
+ if (!g_drive_can_eject (gdrive)) {
+ result = brasero_volume_eject_gvolume (self, wait, volume, error);
+ g_object_unref (volume);
g_object_unref (gdrive);
- return FALSE;
+ return result;
}
if (wait) {
@@ -519,18 +574,11 @@
G_CALLBACK (brasero_volume_ejected_cb),
self);
- if (g_drive_can_eject (gdrive))
- g_drive_eject (gdrive,
- G_MOUNT_UNMOUNT_NONE,
- priv->cancel,
- brasero_volume_eject_finish,
- self);
- else
- g_volume_eject (volume,
- G_MOUNT_UNMOUNT_NONE,
- priv->cancel,
- brasero_volume_eject_finish,
- self);
+ g_drive_eject (gdrive,
+ G_MOUNT_UNMOUNT_NONE,
+ priv->cancel,
+ brasero_volume_eject_finish,
+ self);
g_object_ref (self);
result = brasero_volume_wait_for_operation_end (self, error);
@@ -541,24 +589,15 @@
g_signal_handler_disconnect (drive, eject_sig);
}
else {
- if (g_drive_can_eject (gdrive))
- g_drive_eject (gdrive,
- G_MOUNT_UNMOUNT_NONE,
- priv->cancel,
- NULL,
- self);
- else
- g_volume_eject (volume,
- G_MOUNT_UNMOUNT_NONE,
- priv->cancel,
- NULL,
- self);
+ g_drive_eject (gdrive,
+ G_MOUNT_UNMOUNT_NONE,
+ priv->cancel,
+ NULL,
+ self);
result = TRUE;
}
- if (gdrive)
- g_object_unref (gdrive);
-
+ g_object_unref (gdrive);
return result;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]