Matthias Clasen 07ed25
diff --git a/libbrasero-media/brasero-drive.c b/libbrasero-media/brasero-drive.c
Matthias Clasen 07ed25
index 08ab4e7..f3a7136 100644
Matthias Clasen 07ed25
--- a/libbrasero-media/brasero-drive.c
Matthias Clasen 07ed25
+++ b/libbrasero-media/brasero-drive.c
Matthias Clasen 07ed25
@@ -810,7 +810,7 @@ brasero_drive_probe_inside_thread (gpointer data)
Matthias Clasen 07ed25
 	const gchar *device;
Matthias Clasen 07ed25
 	BraseroScsiErrCode code;
Matthias Clasen 07ed25
 	BraseroDrivePrivate *priv;
Matthias Clasen 07ed25
-	BraseroDeviceHandle *handle;
Matthias Clasen 07ed25
+	BraseroDeviceHandle *handle = NULL;
Matthias Clasen 07ed25
 	BraseroDrive *drive = BRASERO_DRIVE (data);
Matthias Clasen 07ed25
 
Matthias Clasen 07ed25
 	priv = BRASERO_DRIVE_PRIVATE (drive);
Matthias Clasen 07ed25
@@ -833,13 +833,15 @@ brasero_drive_probe_inside_thread (gpointer data)
Matthias Clasen 07ed25
 		handle = brasero_device_handle_open (device, FALSE, &code);
Matthias Clasen 07ed25
 	}
Matthias Clasen 07ed25
 
Matthias Clasen 07ed25
-	if (priv->probe_cancelled) {
Matthias Clasen 07ed25
-		BRASERO_MEDIA_LOG ("Open () cancelled");
Matthias Clasen 07ed25
+	if (!handle) {
Matthias Clasen 07ed25
+		BRASERO_MEDIA_LOG ("Open () failed: medium busy");
Matthias Clasen 07ed25
 		goto end;
Matthias Clasen 07ed25
 	}
Matthias Clasen 07ed25
 
Matthias Clasen 07ed25
-	if (!handle) {
Matthias Clasen 07ed25
-		BRASERO_MEDIA_LOG ("Open () failed: medium busy");
Matthias Clasen 07ed25
+	if (priv->probe_cancelled) {
Matthias Clasen 07ed25
+		BRASERO_MEDIA_LOG ("Open () cancelled");
Matthias Clasen 07ed25
+
Matthias Clasen 07ed25
+		brasero_device_handle_close (handle);
Matthias Clasen 07ed25
 		goto end;
Matthias Clasen 07ed25
 	}
Matthias Clasen 07ed25
 
Matthias Clasen 07ed25
@@ -848,20 +850,24 @@ brasero_drive_probe_inside_thread (gpointer data)
Matthias Clasen 07ed25
 			BRASERO_MEDIA_LOG ("No medium inserted");
Matthias Clasen 07ed25
 
Matthias Clasen 07ed25
 			priv->has_medium = FALSE;
Matthias Clasen 07ed25
+
Matthias Clasen 07ed25
+			brasero_device_handle_close (handle);
Matthias Clasen 07ed25
 			goto end;
Matthias Clasen 07ed25
 		}
Matthias Clasen 07ed25
 
Matthias Clasen 07ed25
 		if (code != BRASERO_SCSI_NOT_READY) {
Matthias Clasen 07ed25
-			brasero_device_handle_close (handle);
Matthias Clasen 07ed25
 			BRASERO_MEDIA_LOG ("Device does not respond");
Matthias Clasen 07ed25
+
Matthias Clasen 07ed25
+			brasero_device_handle_close (handle);
Matthias Clasen 07ed25
 			goto end;
Matthias Clasen 07ed25
 		}
Matthias Clasen 07ed25
 
Matthias Clasen 07ed25
 		sleep (2);
Matthias Clasen 07ed25
 
Matthias Clasen 07ed25
 		if (priv->probe_cancelled) {
Matthias Clasen 07ed25
-			brasero_device_handle_close (handle);
Matthias Clasen 07ed25
 			BRASERO_MEDIA_LOG ("Device probing cancelled");
Matthias Clasen 07ed25
+
Matthias Clasen 07ed25
+			brasero_device_handle_close (handle);
Matthias Clasen 07ed25
 			goto end;
Matthias Clasen 07ed25
 		}
Matthias Clasen 07ed25
 	}
Matthias Clasen 07ed25
diff --git a/libbrasero-media/brasero-medium.c b/libbrasero-media/brasero-medium.c
Matthias Clasen 07ed25
index 46762d4..88a801d 100644
Matthias Clasen 07ed25
--- a/libbrasero-media/brasero-medium.c
Matthias Clasen 07ed25
+++ b/libbrasero-media/brasero-medium.c
Matthias Clasen 07ed25
@@ -2978,43 +2978,49 @@ brasero_medium_probe_thread (gpointer self)
Matthias Clasen 07ed25
 		handle = brasero_device_handle_open (device, FALSE, &code);
Matthias Clasen 07ed25
 	}
Matthias Clasen 07ed25
 
Matthias Clasen 07ed25
-	if (priv->probe_cancelled)
Matthias Clasen 07ed25
+	if (!handle) {
Matthias Clasen 07ed25
+		BRASERO_MEDIA_LOG ("Open () failed: medium busy");
Matthias Clasen 07ed25
 		goto end;
Matthias Clasen 07ed25
+	}
Matthias Clasen 07ed25
 
Matthias Clasen 07ed25
-	if (handle) {
Matthias Clasen 07ed25
-		BRASERO_MEDIA_LOG ("Open () succeeded");
Matthias Clasen 07ed25
-
Matthias Clasen 07ed25
-		/* NOTE: if we wanted to know the status we'd need to read the 
Matthias Clasen 07ed25
-		 * error code variable which is currently NULL */
Matthias Clasen 07ed25
-		while (brasero_spc1_test_unit_ready (handle, &code) != BRASERO_SCSI_OK) {
Matthias Clasen 07ed25
-			if (code == BRASERO_SCSI_NO_MEDIUM) {
Matthias Clasen 07ed25
-				brasero_device_handle_close (handle);
Matthias Clasen 07ed25
-				BRASERO_MEDIA_LOG ("No medium inserted");
Matthias Clasen 07ed25
-				priv->info = BRASERO_MEDIUM_NONE;
Matthias Clasen 07ed25
-				goto end;
Matthias Clasen 07ed25
-			}
Matthias Clasen 07ed25
-			else if (code != BRASERO_SCSI_NOT_READY) {
Matthias Clasen 07ed25
-				brasero_device_handle_close (handle);
Matthias Clasen 07ed25
-				BRASERO_MEDIA_LOG ("Device does not respond");
Matthias Clasen 07ed25
-				goto end;
Matthias Clasen 07ed25
-			}
Matthias Clasen 07ed25
+	if (priv->probe_cancelled) {
Matthias Clasen 07ed25
+		brasero_device_handle_close (handle);
Matthias Clasen 07ed25
+		goto end;
Matthias Clasen 07ed25
+	}
Matthias Clasen 07ed25
 
Matthias Clasen 07ed25
-			sleep (2);
Matthias Clasen 07ed25
+	BRASERO_MEDIA_LOG ("Open () succeeded");
Matthias Clasen 07ed25
 
Matthias Clasen 07ed25
-			if (priv->probe_cancelled) {
Matthias Clasen 07ed25
-				brasero_device_handle_close (handle);
Matthias Clasen 07ed25
-				BRASERO_MEDIA_LOG ("Device probing cancelled");
Matthias Clasen 07ed25
-				goto end;
Matthias Clasen 07ed25
-			}
Matthias Clasen 07ed25
+	/* NOTE: if we wanted to know the status we'd need to read the 
Matthias Clasen 07ed25
+	 * error code variable which is currently NULL */
Matthias Clasen 07ed25
+	while (brasero_spc1_test_unit_ready (handle, &code) != BRASERO_SCSI_OK) {
Matthias Clasen 07ed25
+		if (code == BRASERO_SCSI_NO_MEDIUM) {
Matthias Clasen 07ed25
+			BRASERO_MEDIA_LOG ("No medium inserted");
Matthias Clasen 07ed25
+			priv->info = BRASERO_MEDIUM_NONE;
Matthias Clasen 07ed25
+
Matthias Clasen 07ed25
+			brasero_device_handle_close (handle);
Matthias Clasen 07ed25
+			goto end;
Matthias Clasen 07ed25
 		}
Matthias Clasen 07ed25
+		else if (code != BRASERO_SCSI_NOT_READY) {
Matthias Clasen 07ed25
+			BRASERO_MEDIA_LOG ("Device does not respond");
Matthias Clasen 07ed25
 
Matthias Clasen 07ed25
-		BRASERO_MEDIA_LOG ("Device ready");
Matthias Clasen 07ed25
+			brasero_device_handle_close (handle);
Matthias Clasen 07ed25
+			goto end;
Matthias Clasen 07ed25
+		}
Matthias Clasen 07ed25
 
Matthias Clasen 07ed25
-		brasero_medium_init_real (BRASERO_MEDIUM (self), handle);
Matthias Clasen 07ed25
-		brasero_device_handle_close (handle);
Matthias Clasen 07ed25
+		sleep (2);
Matthias Clasen 07ed25
+
Matthias Clasen 07ed25
+		if (priv->probe_cancelled) {
Matthias Clasen 07ed25
+			BRASERO_MEDIA_LOG ("Device probing cancelled");
Matthias Clasen 07ed25
+
Matthias Clasen 07ed25
+			brasero_device_handle_close (handle);
Matthias Clasen 07ed25
+			goto end;
Matthias Clasen 07ed25
+		}
Matthias Clasen 07ed25
 	}
Matthias Clasen 07ed25
-	else
Matthias Clasen 07ed25
-		BRASERO_MEDIA_LOG ("Open () failed: medium busy");
Matthias Clasen 07ed25
+
Matthias Clasen 07ed25
+	BRASERO_MEDIA_LOG ("Device ready");
Matthias Clasen 07ed25
+
Matthias Clasen 07ed25
+	brasero_medium_init_real (BRASERO_MEDIUM (self), handle);
Matthias Clasen 07ed25
+	brasero_device_handle_close (handle);
Matthias Clasen 07ed25
 
Matthias Clasen 07ed25
 end:
Matthias Clasen 07ed25