[Goodies-commits] r6048 - xfburn/trunk/xfburn

David Mohr squisher at xfce.org
Mon Nov 10 06:36:10 CET 2008


Author: squisher
Date: 2008-11-10 05:36:10 +0000 (Mon, 10 Nov 2008)
New Revision: 6048

Modified:
   xfburn/trunk/xfburn/xfburn-blank-dialog.c
   xfburn/trunk/xfburn/xfburn-burn-audio-cd-composition-dialog.c
   xfburn/trunk/xfburn/xfburn-burn-data-composition-base-dialog.c
   xfburn/trunk/xfburn/xfburn-burn-image-dialog.c
   xfburn/trunk/xfburn/xfburn-device-list.c
   xfburn/trunk/xfburn/xfburn-device-list.h
   xfburn/trunk/xfburn/xfburn-perform-burn.c
Log:
* Forget the drive info when releasing the drive
* Get debug messages from the beginning on when DEBUG_LIBBURN is set



Modified: xfburn/trunk/xfburn/xfburn-blank-dialog.c
===================================================================
--- xfburn/trunk/xfburn/xfburn-blank-dialog.c	2008-11-10 04:01:56 UTC (rev 6047)
+++ xfburn/trunk/xfburn/xfburn-blank-dialog.c	2008-11-10 05:36:10 UTC (rev 6048)
@@ -29,6 +29,7 @@
 #include "xfburn-utils.h"
 #include "xfburn-progress-dialog.h"
 #include "xfburn-device-box.h"
+#include "xfburn-device-list.h"
 #include "xfburn-stock.h"
 #include "xfburn-hal-manager.h"
 #include "xfburn-main.h"
@@ -455,7 +456,7 @@
     xfburn_progress_dialog_burning_failed (XFBURN_PROGRESS_DIALOG (params->dialog_progress), _("Unable to grab the drive."));
   } else {
     thread_blank_perform_blank (params, drive_info);
-    burn_drive_release (drive_info->drive, params->eject ? 1 : 0);
+    xfburn_device_release (drive_info, params->eject);
   }
  
   g_free (params);

Modified: xfburn/trunk/xfburn/xfburn-burn-audio-cd-composition-dialog.c
===================================================================
--- xfburn/trunk/xfburn/xfburn-burn-audio-cd-composition-dialog.c	2008-11-10 04:01:56 UTC (rev 6047)
+++ xfburn/trunk/xfburn/xfburn-burn-audio-cd-composition-dialog.c	2008-11-10 05:36:10 UTC (rev 6048)
@@ -557,7 +557,7 @@
       xfburn_progress_dialog_burning_failed (XFBURN_PROGRESS_DIALOG (dialog_progress), _("Unable to grab the drive."));
     } else {
       thread_burn_prep_and_burn (params, drive_info->drive, disc, session, n_tracks, track_sectors, tracks, srcs);
-      burn_drive_release (drive_info->drive, params->eject ? 1 : 0);
+      xfburn_device_release (drive_info, params->eject);
     }
   }
 

Modified: xfburn/trunk/xfburn/xfburn-burn-data-composition-base-dialog.c
===================================================================
--- xfburn/trunk/xfburn/xfburn-burn-data-composition-base-dialog.c	2008-11-10 04:01:56 UTC (rev 6047)
+++ xfburn/trunk/xfburn/xfburn-burn-data-composition-base-dialog.c	2008-11-10 05:36:10 UTC (rev 6048)
@@ -612,7 +612,7 @@
     xfburn_progress_dialog_burning_failed (XFBURN_PROGRESS_DIALOG (dialog_progress), _("Unable to grab the drive."));
   } else {
     thread_burn_prep_and_burn (params, drive_info->drive, disc, session, track);
-    burn_drive_release (drive_info->drive, params->eject ? 1 : 0);
+    xfburn_device_release (drive_info, params->eject);
   }
 
   burn_track_free (track);

Modified: xfburn/trunk/xfburn/xfburn-burn-image-dialog.c
===================================================================
--- xfburn/trunk/xfburn/xfburn-burn-image-dialog.c	2008-11-10 04:01:56 UTC (rev 6047)
+++ xfburn/trunk/xfburn/xfburn-burn-image-dialog.c	2008-11-10 05:36:10 UTC (rev 6048)
@@ -357,7 +357,7 @@
   burn_write_opts_free (burn_options);
 
  cleanup:
-  burn_drive_release (drive, params->eject ? 1 : 0);
+  xfburn_device_release (drive_info, params->eject);
  end:
   burn_track_free (track);
   burn_session_free (session);
@@ -546,7 +546,7 @@
     burn_write_opts_free (burn_options);
   }
 
-  burn_drive_release (drive_info->drive, 0);
+  xfburn_device_release (drive_info, 0);
 
   priv->params = params;
 

Modified: xfburn/trunk/xfburn/xfburn-device-list.c
===================================================================
--- xfburn/trunk/xfburn/xfburn-device-list.c	2008-11-10 04:01:56 UTC (rev 6047)
+++ xfburn/trunk/xfburn/xfburn-device-list.c	2008-11-10 05:36:10 UTC (rev 6048)
@@ -43,6 +43,7 @@
 static int profile_no = 0;
 static char profile_name[80];
 static int is_erasable = 0;
+static char * libburn_msg_prefix = "libburn-";
 
 #define CAN_BURN_CONDITION device->cdr || device->cdrw || device->dvdr || device->dvdram
 #define DEVICE_INFO_PRINTF "%s can burn: %d [cdr: %d, cdrw: %d, dvdr: %d, dvdram: %d]", device->name, CAN_BURN_CONDITION, device->cdr, device->cdrw, device->dvdr, device->dvdram
@@ -193,7 +194,7 @@
     ret = burn_drive_get_adr (&(drives[i]), device->addr);
     if (ret <= 0)
       g_error ("Unable to get drive %s address (ret=%d). Please report this problem to libburn-hackers at pykix.org", device->name, ret);
-    DBG ("device->addr = %s", device->addr);
+    //DBG ("device->addr = %s", device->addr);
 
     if (can_burn) {
       devices = g_list_append (devices, device);
@@ -252,7 +253,7 @@
 #endif
 
   if (G_UNLIKELY (device == NULL)) {
-    DBG ("Hmm, why can we refresh when there is no drive?");
+    g_warning ("Hmm, why can we refresh when there is no drive?");
     return FALSE;
   }
 
@@ -286,7 +287,7 @@
     if (get_speed_info)
       refresh_speed_list (device, drive_info);
 
-    burn_drive_release (drive_info->drive, 0);
+    xfburn_device_release (drive_info, 0);
   }
 
   return ret;
@@ -300,6 +301,8 @@
 #endif
   int n_drives;
 
+  xfburn_device_list_console_messages ();
+
   if (devices) {
     g_list_foreach (devices, (GFunc) device_content_free, NULL);
     g_list_free (devices);
@@ -337,6 +340,7 @@
    * the drive might be busy detecting the disc */
   for (i=0; i<max_checks; i++) {
     ret = burn_drive_scan_and_grab (drive_info, drive_addr, 0);
+    //DBG ("grab (%s)-> %d", drive_addr, ret);
     if (ret > 0)
       break;
     else if  (i < (max_checks-1))
@@ -351,6 +355,32 @@
   return TRUE;
 }
 
+gboolean 
+xfburn_device_release (struct burn_drive_info *drive_info, gboolean eject)
+{
+  int ret;
+
+  burn_drive_release (drive_info->drive, eject);
+
+  ret = burn_drive_info_forget (drive_info, 0);
+
+  if (G_LIKELY (ret == 1))
+    return TRUE;
+  else if (ret == 2) {
+    DBG ("drive_info already forgotten");
+    return TRUE;
+  } else if (ret == 0) {
+    DBG ("could not forget drive_info");
+    return FALSE;
+  } else if (ret < 0) {
+    DBG ("some other failure while forgetting drive_info");
+    return FALSE;
+  }
+
+  /* we should never reach this */
+  return FALSE;
+}
+
 void
 xfburn_device_free (XfburnDevice * device)
 {
@@ -387,3 +417,36 @@
   devices = NULL;
 }
 
+void
+xfburn_device_list_capture_messages ()
+{
+  int ret;
+
+#ifdef DEBUG_LIBBURN 
+  ret = burn_msgs_set_severities ("NEVER", "DEBUG", libburn_msg_prefix);
+#else
+  ret = burn_msgs_set_severities ("ALL", "NEVER", libburn_msg_prefix);
+#endif
+
+  if (ret <= 0)
+    g_warning ("Failed to set libburn message severities, burn errors might not get detected");
+}
+
+void
+xfburn_device_list_console_messages ()
+{
+  int ret;
+
+#ifdef DEBUG_LIBBURN 
+  ret = burn_msgs_set_severities ("NEVER", "DEBUG", libburn_msg_prefix);
+#else
+  ret = burn_msgs_set_severities ("NEVER", "FATAL", libburn_msg_prefix);
+#endif
+
+  if (ret <= 0)
+    g_warning ("Failed to set libburn message severities");
+ 
+}
+
+
+

Modified: xfburn/trunk/xfburn/xfburn-device-list.h
===================================================================
--- xfburn/trunk/xfburn/xfburn-device-list.h	2008-11-10 04:01:56 UTC (rev 6047)
+++ xfburn/trunk/xfburn/xfburn-device-list.h	2008-11-10 05:36:10 UTC (rev 6048)
@@ -88,6 +88,10 @@
 
 gboolean xfburn_device_refresh_info (XfburnDevice * device, gboolean get_speed_info);
 gboolean xfburn_device_grab (XfburnDevice * device, struct burn_drive_info **drive_info);
+gboolean xfburn_device_release (struct burn_drive_info *drive_info, gboolean eject);
 void xfburn_device_free (XfburnDevice * device);
 
+void xfburn_device_list_capture_messages ();
+void xfburn_device_list_console_messages ();
+
 #endif /* __XFBURN_DEVICE_LIST_H__ */

Modified: xfburn/trunk/xfburn/xfburn-perform-burn.c
===================================================================
--- xfburn/trunk/xfburn/xfburn-perform-burn.c	2008-11-10 04:01:56 UTC (rev 6047)
+++ xfburn/trunk/xfburn/xfburn-perform-burn.c	2008-11-10 05:36:10 UTC (rev 6048)
@@ -64,7 +64,7 @@
   char severity[80];
   const char *final_status_text;
   XfburnProgressDialogStatus final_status;
-  const char *final_message;
+  char *final_message;
   gdouble percent = 0.0;
   int dbg_no;
   int total_sectors, burned_sectors;
@@ -112,16 +112,9 @@
     return;
   }
 
-  /* set us up to receive fatal errors */
-#ifdef DEBUG_LIBBURN
-  ret = burn_msgs_set_severities ("NEVER", "DEBUG", "libburn");
-#else
-  ret = burn_msgs_set_severities ("ALL", "NEVER", "libburn");
-#endif
+  /* set us up to receive libburn errors */
+  xfburn_device_list_capture_messages ();
 
-  if (ret <= 0)
-    g_warning ("Failed to set libburn message severities, burn errors might not get detected!");
- 
   /* Install the default libburn abort signal handler.
    * Hopefully this means the drive won't be left in a burning state if we catch a signal */
   burn_set_signal_handling ("xfburn", NULL, 0);
@@ -279,6 +272,8 @@
   if (ret < 0)
     g_warning ("Fatal error while trying to retrieve libburn message!");
 
+  xfburn_device_list_console_messages ();
+
   percent = (gdouble) progress.buffer_min_fill / (gdouble) progress.buffer_capacity;
   xfburn_progress_dialog_set_buffer_bar_min_fill (XFBURN_PROGRESS_DIALOG (dialog_progress), percent);
 




More information about the Goodies-commits mailing list