Package: release.debian.org Severity: normal User: release.debian....@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 <kelem...@gnome.hu>) Updated Indonesian translation (Andika Triwidada <and...@gmail.com>) Update Simplified Chinese translation (lainme <lainme...@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,