Bug 138864 - Verification of a burn is difficult with a manual load writer (eg laptop)
Summary: Verification of a burn is difficult with a manual load writer (eg laptop)
Status: RESOLVED FIXED
Alias: None
Product: k3b
Classification: Applications
Component: general (show other bugs)
Version: unspecified
Platform: FreeBSD Ports FreeBSD
: NOR wishlist
Target Milestone: ---
Assignee: Sebastian Trueg
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2006-12-16 00:51 UTC by Daniel O'Connor
Modified: 2006-12-19 23:12 UTC (History)
1 user (show)

See Also:
Latest Commit:
Version Fixed In:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Daniel O'Connor 2006-12-16 00:51:57 UTC
Version:           1.0beta1 (using KDE KDE 3.5.4)
Installed from:    FreeBSD Ports
OS:                FreeBSD

I have a laptop burner which can only eject the media - it can't load it.

This means that I get a dialog saying "Please reload the media" after it is ejected, before verification starts. Unfortunately I need to wait around 20 seconds to be sure that it will work, if I press OK too soon the verify will fail.

It would be nice if there was a dialog similar to the one used at the start of the burn so you can select Force, Load, etc, etc.. while it checks to see if the disk has been reinserted (or at least be able to retry the verification process manually).

Thanks.
Comment 1 Sebastian Trueg 2006-12-18 22:12:13 UTC
SVN commit 614759 by trueg:

Show the standard "waiting for medium" dialog with a "failed to load" message if the tray could not be closed.

BUG: 138864


 M  +4 -2      k3bverificationjob.cpp  


--- trunk/extragear/multimedia/k3b/libk3b/jobs/k3bverificationjob.cpp #614758:614759
@@ -158,8 +158,10 @@
 void K3bVerificationJob::slotMediaReloaded( bool success )
 {
   if( !success )
-    blockingInformation( i18n("Please reload the medium and press 'ok'"),
-			 i18n("Unable to Close the Tray") );
+    waitForMedia( d->device,
+		  K3bDevice::STATE_COMPLETE|K3bDevice::STATE_INCOMPLETE,
+		  K3bDevice::MEDIA_WRITABLE,
+		  i18n("Unable to Close the Tray") );
 
   emit newTask( i18n("Checking medium") );
 
Comment 2 Daniel O'Connor 2006-12-19 04:15:15 UTC
This change appears to cause a problem with rewritable media - if I put in a non-blank disk and then say start I will be prompted to format it. I select yes and then wait, unfortunately when the format is done it asks me again if I wish to format it. The third time it formatted it I was not prompted to reformat it.

Perhaps it is reading stale information?
Comment 3 Daniel O'Connor 2006-12-19 04:49:22 UTC
I just tried it with a fresh blank disk and it failed to verify after detecting the disk was inserted with "Unable to open /dev/cd0".

I tried it a second time and I was only prompted to format it once but the verify failed with "Internal error: verification job improperly initialized" and this was in the console..
k3b: (K3bDevice::ScsiCommand) transport command 28, length: 10
k3b: (K3bDevice::ScsiCommand) transport command 28, length: 10
k3b: (K3bDevice::ScsiCommand) transport command 28, length: 10
k3b: (K3bDevice::ScsiCommand) transport command 28, length: 10
k3b: (K3bDevice::ScsiCommand) transport command 28, length: 10
k3b: (K3bMedium) found volume id from start sector 0: 'FreeBSD_bootonly'
k3b: (K3bDevice::openDevice) open device /dev/pass0 succeeded.
k3b: (K3bDevice::ScsiCommand) transport command 46, length: 10
k3b: (K3bDevice::Device) /dev/cd0: GET CONFIGURATION length det failed.
k3b: (K3bDevice::openDevice) open device /dev/pass0 succeeded.
k3b: (K3bDevice::ScsiCommand) transport command 46, length: 9
k3b: (K3bDevice::openDevice) open device /dev/pass0 succeeded.
Comment 4 Sebastian Trueg 2006-12-19 23:12:19 UTC
SVN commit 615028 by trueg:

dvd+rw-format even exits with a 0 exit code when format fails.
K3b now at least checks for a failed unmount.

BUG: 138864


 M  +9 -1      k3bdvdformattingjob.cpp  


--- trunk/extragear/multimedia/k3b/libk3b/jobs/k3bdvdformattingjob.cpp #615027:615028
@@ -66,6 +66,8 @@
   bool running;
 
   bool forceNoEject;
+
+  bool error;
 };
 
 
@@ -114,6 +116,7 @@
 {
   d->canceled = false;
   d->running = true;
+  d->error = false;
 
   jobStarted();
 
@@ -219,6 +222,11 @@
   else if( !line.startsWith("*") ) {
     pos = line.find( QRegExp( "\\d" ) );
   }
+  else if( line.startsWith( ":-(" ) ) {
+    if( line.startsWith( ":-( unable to proceed with format" ) ) {
+      d->error = true;
+    }
+  }
 
   if( pos >= 0 ) {
     int endPos = line.find( QRegExp("[^\\d\\.]"), pos ) - 1;
@@ -242,7 +250,7 @@
     d->success = false;
   }
   else if( p->normalExit() ) {
-    if( p->exitStatus() == 0 ) {
+    if( !d->error && p->exitStatus() == 0 ) {
       emit infoMessage( i18n("Formatting successfully completed"), K3bJob::SUCCESS );
 
       if( d->lastProgressValue < 100 ) {