[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#596090: unblock: brasero/2.30.3-1



Package: release.debian.org
Severity: normal
User: release.debian.org@packages.debian.org
Usertags: freeze-exception

brasero (2.30.3-1) unstable; urgency=low
 .
   * Recommend cdrdao 1.2.3 so that it can actually work.
     + This restores CD copying functionality. Closes: #587408.
     + And audio CD burning without brasero-cdrkit. Closes: #580874.
   * New upstream bugfix and translation release.
     + Drops CD text support. Closes: #578366.
   * 90_relibtoolize.patch: updated for the new version.

The upstream changes are only bug fixes and translation updates:

        30-08-2010 2.30.3
        
        Bug fix release:
        
        #627687 - Rhythmbox create audio CD does not work
        #627005 - Starting brasero with --device=/dev/sr0 floating point exception
        #606010 - crashes at audio CD insertion
        #622394  - make check fails: The following files contain translations and are currently not in use
        #622968  - Add File Selector mis-behaves: No Places pane. Ctrl/click action wrong
        #623484  - No estimated drive speed shown
        + miscellaneous other fixes.
        
        Translations:
        
        Updated Hungarian translation (Gabor Kelemen <kelemeng@gnome.hu>)
        Updated Indonesian translation (Andika Triwidada <andika@gmail.com>)
        Update Simplified Chinese translation (lainme <lainme993@gmail.com>)

The diff for non-{documentation,translation} files is attached. 

Cheers,
-- 
 .''`.
: :' :     “You would need to ask a lawyer if you don't know
`. `'       that a handshake of course makes a valid contract.”
  `-        --  J???rg Schilling
--- brasero-2.30.2/libbrasero-burn/brasero-blank-dialog.c	2010-06-18 00:10:26.000000000 +0000
+++ brasero-2.30.3/libbrasero-burn/brasero-blank-dialog.c	2010-08-30 13:53:49.000000000 +0000
@@ -44,6 +44,7 @@
 #include "burn-basics.h"
 
 #include "brasero-session.h"
+#include "brasero-session-helper.h"
 #include "brasero-burn.h"
 
 #include "burn-plugin-manager.h"
@@ -202,6 +203,7 @@
 	priv = BRASERO_BLANK_DIALOG_PRIVATE (self);
 
 	burn = brasero_tool_dialog_get_burn (dialog);
+	brasero_burn_session_start (priv->session);
 	result = brasero_burn_blank (burn,
 				     priv->session,
 				     &error);
--- brasero-2.30.2/libbrasero-burn/brasero-burn-lib.h	2010-06-22 00:14:35.000000000 +0000
+++ brasero-2.30.3/libbrasero-burn/brasero-burn-lib.h	2010-08-30 14:03:40.000000000 +0000
@@ -48,7 +48,7 @@
 #define LIBBRASERO_BURN_VERSION_MINOR						\
 	30
 #define LIBBRASERO_BURN_VERSION_MICRO						\
-	2
+	3
 #define LIBBRASERO_BURN_AGE							\
 	202
 
--- brasero-2.30.2/libbrasero-burn/brasero-session.c	2010-06-21 22:56:08.000000000 +0000
+++ brasero-2.30.3/libbrasero-burn/brasero-session.c	2010-08-30 13:53:49.000000000 +0000
@@ -2135,6 +2135,7 @@
 			   va_list arg_list)
 {
 	int len;
+	int wlen;
 	gchar *message;
 	gchar *offending;
 	BraseroBurnSessionPrivate *priv;
@@ -2156,8 +2157,14 @@
 		*offending = '\0';
 
 	len = strlen (message);
-	if (write (priv->session, message, len) != len)
-		g_warning ("Some log data couldn't be written: %s\n", message);
+	wlen = write (priv->session, message, len);
+	if (wlen != len) {
+		int errnum = errno;
+
+		g_warning ("Some log data couldn't be written: %s (%i out of %i) (%s)\n",
+		           message, wlen, len,
+		           strerror (errnum));
+	}
 
 	g_free (message);
 
--- brasero-2.30.2/libbrasero-burn/brasero-sum-dialog.c	2010-06-18 00:10:26.000000000 +0000
+++ brasero-2.30.3/libbrasero-burn/brasero-sum-dialog.c	2010-08-30 13:53:49.000000000 +0000
@@ -60,6 +60,8 @@
 
 #include "brasero-tags.h"
 #include "brasero-track-disc.h"
+
+#include "brasero-session-helper.h"
 #include "brasero-burn.h"
 
 G_DEFINE_TYPE (BraseroSumDialog, brasero_sum_dialog, BRASERO_TYPE_TOOL_DIALOG);
@@ -622,6 +624,7 @@
 	self = BRASERO_SUM_DIALOG (dialog);
 	priv = BRASERO_SUM_DIALOG_PRIVATE (dialog);
 
+	brasero_burn_session_start (priv->session);
 	if (!gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (priv->md5_check)))
 		result = brasero_sum_dialog_check_disc_sum (self, brasero_medium_get_drive (medium));
 	else
--- brasero-2.30.2/libbrasero-burn/brasero-tool-dialog.c	2010-06-18 00:10:26.000000000 +0000
+++ brasero-2.30.3/libbrasero-burn/brasero-tool-dialog.c	2010-07-05 18:24:32.000000000 +0000
@@ -45,7 +45,6 @@
 
 #include "brasero-misc.h"
 
-#include "brasero-session.h"
 #include "brasero-burn.h"
 
 #include "brasero-medium.h"
--- brasero-2.30.2/libbrasero-burn/brasero-track-data.c	2010-06-18 00:10:26.000000000 +0000
+++ brasero-2.30.3/libbrasero-burn/brasero-track-data.c	2010-07-05 19:14:42.000000000 +0000
@@ -479,7 +479,7 @@
 		BraseroGraftPt *graft;
 		gchar newpath [MAXPATHLEN];
 
-		graft = grafts->data;
+		graft = iter->data;
 		mangle = brasero_track_data_mangle_joliet_name (mangle,
 								graft->path,
 								newpath);
--- brasero-2.30.2/libbrasero-burn/burn-dbus.c	2010-06-18 00:10:26.000000000 +0000
+++ brasero-2.30.3/libbrasero-burn/burn-dbus.c	2010-08-30 13:53:49.000000000 +0000
@@ -118,7 +118,7 @@
 
 	res = dbus_g_proxy_call (proxy,
 				 "Inhibit", &error,
-				 G_TYPE_STRING, "Brasero", /* app_id */
+				 G_TYPE_STRING, g_get_application_name (), /* This is the human readable name of the application */
 				 G_TYPE_UINT, 0,           /* toplevel_xid */
 				 G_TYPE_STRING, reason,    /* reason */
 				 G_TYPE_UINT, 1 | 4,       /* flags (prevent logout, suspend) */
--- brasero-2.30.2/libbrasero-burn/burn-task-ctx.c	2010-06-21 22:56:08.000000000 +0000
+++ brasero-2.30.3/libbrasero-burn/burn-task-ctx.c	2010-08-30 13:53:49.000000000 +0000
@@ -682,20 +682,19 @@
 		return BRASERO_BURN_OK;
 	}
 
-	if (priv->progress < progress)
-		priv->progress = progress;
-
-	if (!priv->timer)
-		return BRASERO_BURN_OK;
-
-	elapsed = g_timer_elapsed (priv->timer, NULL);
+	if (priv->timer) {
+		elapsed = g_timer_elapsed (priv->timer, NULL);
 
-	if ((elapsed - priv->last_elapsed) > 0.5) {
-		priv->last_progress = priv->progress;
-		priv->last_elapsed = priv->current_elapsed;
-		priv->current_elapsed = elapsed;
+		if ((elapsed - priv->last_elapsed) > 0.5) {
+			priv->last_progress = priv->progress;
+			priv->last_elapsed = priv->current_elapsed;
+			priv->current_elapsed = elapsed;
+		}
 	}
 
+	if (priv->progress < progress)
+		priv->progress = progress;
+
 	return BRASERO_BURN_OK;
 }
 
--- brasero-2.30.2/libbrasero-media/brasero-media.h	2010-06-22 00:14:35.000000000 +0000
+++ brasero-2.30.3/libbrasero-media/brasero-media.h	2010-08-30 14:03:40.000000000 +0000
@@ -44,7 +44,7 @@
 #define LIBBRASERO_MEDIA_VERSION_MINOR						\
 	30
 #define LIBBRASERO_MEDIA_VERSION_MICRO						\
-	2
+	3
 #define LIBBRASERO_MEDIA_AGE							\
 	202
 #define LIBBRASERO_MEDIA_INSTALL							\
--- brasero-2.30.2/libbrasero-media/brasero-medium.c	2010-06-21 22:49:09.000000000 +0000
+++ brasero-2.30.3/libbrasero-media/brasero-medium.c	2010-07-23 08:30:38.000000000 +0000
@@ -2791,10 +2791,19 @@
 		return;
 	}
 
-	/* Get the number of CD-Text Data Packs */
-	num = (BRASERO_GET_16 (cd_text->hdr->len) -
-	      (sizeof (BraseroScsiTocPmaAtipHdr) - sizeof (cd_text->hdr->len)))  /
-	       sizeof (BraseroScsiCDTextPackData);
+	/* Get the number of CD-Text Data Packs.
+	 * Some drives seem to report an idiotic cd_text->hdr->len. So use size
+	 * to be on a safer side. */
+	if (size < sizeof (BraseroScsiTocPmaAtipHdr)) {
+		g_free (cd_text);
+		return;
+	}
+
+	num = (size - sizeof (BraseroScsiTocPmaAtipHdr)) / sizeof (BraseroScsiCDTextPackData);
+	if (num <= 0) {
+		g_free (cd_text);
+		return;
+	}
 
 	priv = BRASERO_MEDIUM_PRIVATE (self);
 
--- brasero-2.30.2/libbrasero-utils/brasero-misc.c	2010-06-21 22:56:08.000000000 +0000
+++ brasero-2.30.3/libbrasero-utils/brasero-misc.c	2010-08-30 13:53:49.000000000 +0000
@@ -409,15 +409,14 @@
 	GtkWidget *message;
 
 	message = gtk_message_dialog_new (GTK_WINDOW (parent),
-					  GTK_DIALOG_MODAL |
-					  GTK_DIALOG_DESTROY_WITH_PARENT,
+					  0,
 					  type,
 					  GTK_BUTTONS_CLOSE,
 					  "%s",
 					  primary_message);
 
 	gtk_window_set_icon_name (GTK_WINDOW (message),
-	                          gtk_window_get_icon_name (GTK_WINDOW (parent)));
+	                          parent? gtk_window_get_icon_name (GTK_WINDOW (parent)):"brasero");
 
 	gtk_window_set_title (GTK_WINDOW (message), "");
 
--- brasero-2.30.2/plugins/cdrkit/burn-wodim.c	2010-06-21 22:56:08.000000000 +0000
+++ brasero-2.30.3/plugins/cdrkit/burn-wodim.c	2010-08-30 13:53:49.000000000 +0000
@@ -276,7 +276,7 @@
                         int speed_1,
                         int speed_2)
 {
-	gdouble current_rate;
+	gdouble current_rate = -1.0;
 	BraseroMedia media;
 
 	if (brasero_job_get_media (BRASERO_JOB (process), &media) != BRASERO_BURN_OK)
--- brasero-2.30.2/plugins/cdrtools/burn-cdrecord.c	2010-06-21 22:56:08.000000000 +0000
+++ brasero-2.30.3/plugins/cdrtools/burn-cdrecord.c	2010-08-30 13:53:49.000000000 +0000
@@ -265,7 +265,7 @@
                            int speed_1,
                            int speed_2)
 {
-	gdouble current_rate;
+	gdouble current_rate = -1.0;
 	BraseroMedia media;
 
 	if (brasero_job_get_media (BRASERO_JOB (process), &media) != BRASERO_BURN_OK)
--- brasero-2.30.2/plugins/growisofs/burn-growisofs.c	2010-06-21 22:56:08.000000000 +0000
+++ brasero-2.30.3/plugins/growisofs/burn-growisofs.c	2010-08-30 13:53:49.000000000 +0000
@@ -138,10 +138,9 @@
 			   (gdouble) 100.0;
 
 		brasero_job_set_progress (BRASERO_JOB (process), fraction);
-
 		brasero_job_get_current_action (BRASERO_JOB (process), &action);
-		if (action == BRASERO_BURN_ACTION_BLANKING
-		&&  fraction >= 0.01) {
+
+		if (action == BRASERO_BURN_ACTION_BLANKING && fraction >= 0.01) {
 			/* we nullified 1% of the medium (more than 65536)
 			 * that's enough to make the filesystem unusable and
 			 * looking blank. A signal SIGTERM will be sent to stop
--- brasero-2.30.2/src/brasero-app.c	2010-06-21 22:56:11.000000000 +0000
+++ brasero-2.30.3/src/brasero-app.c	2010-08-30 13:53:49.000000000 +0000
@@ -1879,7 +1879,7 @@
 	/* Connect to session */
 	brasero_session_connect (object);
 
-	g_set_application_name (_("Brasero Disc Burner"));
+	g_set_application_name (_("Disc Burner"));
 	gtk_window_set_default_icon_name ("brasero");
 
 	brasero_io_set_parent_window_callback (brasero_app_get_io_parent_window, object);
--- brasero-2.30.2/src/brasero-audio-disc.c	2010-06-18 00:10:26.000000000 +0000
+++ brasero-2.30.3/src/brasero-audio-disc.c	2010-08-30 13:53:49.000000000 +0000
@@ -239,7 +239,7 @@
 
 	model = gtk_tree_view_get_model (GTK_TREE_VIEW (BRASERO_AUDIO_DISC (disc)->priv->tree));
 	if (!model)
-		return TRUE;
+		return FALSE;
 
 	return gtk_tree_model_iter_n_children (model, NULL) != 0;
 }
--- brasero-2.30.2/src/brasero-project.c	2010-06-21 22:56:12.000000000 +0000
+++ brasero-2.30.3/src/brasero-project.c	2010-08-30 13:53:49.000000000 +0000
@@ -1163,7 +1163,6 @@
 			    0);
 
 	g_object_unref (size_group);
-	
 }
 
 static void
@@ -2012,6 +2011,9 @@
 brasero_project_set_source (BraseroProject *project,
 			    BraseroURIContainer *source)
 {
+	if (project->priv->chooser)
+		gtk_dialog_response (GTK_DIALOG (project->priv->chooser), GTK_RESPONSE_CANCEL);
+
 	if (project->priv->activated_id) {
 		g_signal_handler_disconnect (project->priv->current_source,
 					     project->priv->activated_id);
--- brasero-2.30.2/src/eggtreemultidnd.c	2010-06-18 00:10:26.000000000 +0000
+++ brasero-2.30.3/src/eggtreemultidnd.c	2010-07-06 14:21:50.000000000 +0000
@@ -196,7 +196,7 @@
     priv_data->button_release_handler = 0;
   }
 
-  for (l = priv_data->event_list; l != NULL; l = l->next) 
+  for (l = priv_data->event_list; l != NULL && gtk_widget_get_realized (widget); l = l->next)
     gtk_propagate_event (widget, l->data);
 
   stop_drag_check (widget);
@@ -234,6 +234,15 @@
                           (GDestroyNotify) path_list_free);
 }
 
+static void
+egg_tree_multi_drag_begin (GtkWidget *tree,
+                           GdkDragContext *context,
+                           gpointer user_data)
+{
+  gtk_drag_set_icon_default (context);
+  g_signal_stop_emission_by_name (tree, "drag-begin");
+}
+
 static GList *
 get_context_data (GdkDragContext *context)
 {
@@ -332,14 +341,22 @@
       model = gtk_tree_view_get_model (GTK_TREE_VIEW (widget));
       if (egg_tree_multi_drag_source_row_draggable (EGG_TREE_MULTI_DRAG_SOURCE (model), path_list))
 	{
+	  gulong sig;
+
+	  /* This is to disconnect the default signal handler for treeviews as
+  	   * it sometimes gives a warning. The default handler just sets the
+	   * icon which we do as well in our callback so it is fine. */
+	  sig = g_signal_connect (widget,
+	                          "drag-begin",
+	                          G_CALLBACK (egg_tree_multi_drag_begin),
+	                          NULL);
 	  context = gtk_drag_begin (widget,
 				    gtk_drag_source_get_target_list (widget),
 				    di->source_actions,
-				    priv_data->pressed_button,
+	                            priv_data->pressed_button,
 				    (GdkEvent*)event);
+	  g_signal_handler_disconnect (widget, sig);
 	  set_context_data (context, path_list);
-	  gtk_drag_set_icon_default (context);
-
 	}
       else
 	{
@@ -349,15 +366,6 @@
   return TRUE;
 }
 
-static void
-_treeview_destroyed (GtkWidget *widget,
-                     gpointer user_data)
-{
-	gboolean *called = user_data;
-	*called = TRUE;
-	g_object_ref (widget);
-}
-
 static gboolean
 egg_tree_multi_drag_button_press_event (GtkWidget      *widget,
 					GdkEventButton *event,
@@ -369,7 +377,7 @@
   gint cell_x, cell_y;
   GtkTreeSelection *selection;
   EggTreeMultiDndData *priv_data;
-
+  
   tree_view = GTK_TREE_VIEW (widget);
   priv_data = g_object_get_data (G_OBJECT (tree_view), EGG_TREE_MULTI_DND_STRING);
   if (priv_data == NULL)
@@ -378,18 +386,18 @@
       g_object_set_data (G_OBJECT (tree_view), EGG_TREE_MULTI_DND_STRING, priv_data);
     }
 
-  if (g_slist_find (priv_data->event_list, event)) 
+  if (g_slist_find (priv_data->event_list, event))
     return FALSE;
 
-  if (priv_data->event_list) 
+  if (priv_data->event_list)
     {
       /* save the event to be propagated in order */
       priv_data->event_list = g_slist_append (priv_data->event_list, gdk_event_copy ((GdkEvent*)event));
       return TRUE;
     }
-  
+
   if (event->type == GDK_2BUTTON_PRESS)
-   	return FALSE;
+    return FALSE;
   
   if (event->button == 3)
     return FALSE;
@@ -400,45 +408,8 @@
 				 &cell_x, &cell_y);
 
   selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (tree_view));
-
   if (path && gtk_tree_selection_path_is_selected (selection, path))
     {
-      GList *iter;
-      gulong sig_id;
-      GList *selected;
-      gboolean called = FALSE;
-      GtkWidgetClass *widget_klass;
-
-      /* The call to ::button_press_event will unselect all selected rows so
-       * we must save the selection and select all previously selected rows
-       * again. */
-      selected = gtk_tree_selection_get_selected_rows (selection, NULL);
-
-      /* In some rare cases (like for a GtkFileChooserDialog when the user
-       * double-clicks a row) "destroy" is called during ::button_press_event
-       * calls which makes widget and selection invalid afterwards.
-       * Note: it seems that a call to "destroy" makes all signals invalid as
-       * well so do not disconnect */
-      sig_id = g_signal_connect (widget,
-                                 "destroy",
-                                 G_CALLBACK (_treeview_destroyed),
-                                 &called);
-
-      widget_klass = GTK_WIDGET_GET_CLASS (tree_view);
-      widget_klass->button_press_event (widget, event);
-
-      if (!called)
-	g_signal_handler_disconnect (widget, sig_id);
-
-      selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (tree_view));
-      if (selection) {
-	      for (iter = selected; iter; iter = iter->next) {
-		gtk_tree_selection_select_path (selection, iter->data);
-		gtk_tree_path_free (iter->data);
-	      }
-	      g_list_free (selected);
-      }
-
       priv_data->pressed_button = event->button;
       priv_data->x = event->x;
       priv_data->y = event->y;
--- brasero-2.30.2/src/main.c	2010-06-21 22:56:12.000000000 +0000
+++ brasero-2.30.3/src/main.c	2010-08-30 13:53:49.000000000 +0000
@@ -236,7 +236,7 @@
 		if (!brasero_drive_can_write (burner)) {
 			gchar *string;
 
-			/* Translators: %s is the path of drive */
+			/* Translators: %s is the path of a drive */
 			string = g_strdup_printf (_("\"%s\" cannot write."), value);
 			brasero_utils_message_dialog (NULL,
 						      _("Wrong command line option."),
@@ -348,12 +348,17 @@
 			return;
 	}
 	else if (burn_project_uri) {
-		brasero_app_open_project (app,
-					  burner,
-					  burn_project_uri,
-					  FALSE,
-					  TRUE,
-					  burn_immediately != 0 /* This is to keep the current behavior which is open main window */);
+		gboolean res;
+
+		res = brasero_app_open_project (app,
+		                                burner,
+		                                burn_project_uri,
+		                                FALSE,
+		                                TRUE,
+		                                FALSE /* This is to keep the current behavior which is open main window */);
+		if (res)
+			brasero_app_run_mainwin (app);
+
 		if (g_remove (burn_project_uri) != 0) {
 			gchar *path;
 
@@ -463,6 +468,11 @@
 	g_thread_init (NULL);
 	g_type_init ();
 
+	/* Though we use gtk_get_option_group we nevertheless want gtk+ to be
+	 * in a usable state to display our error messages while brasero
+	 * specific options are parsed. Otherwise on error that crashes. */
+	gtk_init (&argc, &argv);
+
 	context = g_option_context_new (_("[URI] [URI] …"));
 	g_option_context_add_main_entries (context,
 					   options,

Reply to: