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: