[brasero/gnome-2-26] Backported a few bug fixes from master:
- From: Philippe Rouquier <philippr src gnome org>
- To: svn-commits-list gnome org
- Subject: [brasero/gnome-2-26] Backported a few bug fixes from master:
- Date: Sun, 17 May 2009 14:35:49 -0400 (EDT)
commit e4a515b3989406b4bea823de77994ae6ec5f845a
Author: Philippe Rouquier <bonfire-app wanadoo fr>
Date: Sun May 17 20:29:11 2009 +0200
Backported a few bug fixes from master:
#578970 â?? should allow all text targets, not just UTF8_STRING
#578977 â?? use g_uri_list_extract_uris
#578959 â?? brasero crashed with SIGSEGV in g_closure_invoke()
#579023 â?? No error message when attempting to burn on incorrect medium
and part of #573807 â?? Image selection filters are badly named
---
src/brasero-audio-disc.c | 30 +++++++-----------------
src/brasero-data-disc.c | 40 ++++++++++++---------------------
src/brasero-file-monitor.c | 4 +-
src/brasero-image-properties.c | 10 ++++++--
src/brasero-image-type-chooser.c | 11 ++++++++-
src/brasero-image-type-chooser.h | 2 +-
src/brasero-utils.c | 29 ++++++++++++++++++++++++
src/brasero-utils.h | 4 +++
src/brasero-video-disc.c | 30 +++++++-----------------
src/plugins/cdrkit/burn-wodim.c | 18 +++++++++++++-
src/plugins/cdrtools/burn-cdrecord.c | 17 +++++++++++++-
11 files changed, 118 insertions(+), 77 deletions(-)
diff --git a/src/brasero-audio-disc.c b/src/brasero-audio-disc.c
index f7f3099..d9ec791 100644
--- a/src/brasero-audio-disc.c
+++ b/src/brasero-audio-disc.c
@@ -3422,7 +3422,10 @@ brasero_audio_disc_clipboard_text_cb (GtkClipboard *clipboard,
gchar **array;
gchar **item;
- array = g_strsplit_set (text, "\n\r", 0);
+ if (!text)
+ return;
+
+ array = g_uri_list_extract_uris (text);
item = array;
while (*item) {
if (**item != '\0') {
@@ -3446,6 +3449,7 @@ brasero_audio_disc_clipboard_text_cb (GtkClipboard *clipboard,
item++;
}
+ g_strfreev (array);
}
static void
@@ -3454,26 +3458,10 @@ brasero_audio_disc_clipboard_targets_cb (GtkClipboard *clipboard,
gint n_atoms,
BraseroAudioDisc *disc)
{
- GdkAtom *iter;
- gchar *target;
-
- iter = atoms;
- while (n_atoms > 0) {
- target = gdk_atom_name (*iter);
-
- if (!strcmp (target, "x-special/gnome-copied-files")
- || !strcmp (target, "UTF8_STRING")) {
- gtk_clipboard_request_text (clipboard,
- (GtkClipboardTextReceivedFunc) brasero_audio_disc_clipboard_text_cb,
- disc);
- g_free (target);
- return;
- }
-
- g_free (target);
- iter++;
- n_atoms--;
- }
+ if (brasero_clipboard_selection_may_have_uri (atoms, n_atoms))
+ gtk_clipboard_request_text (clipboard,
+ (GtkClipboardTextReceivedFunc) brasero_audio_disc_clipboard_text_cb,
+ disc);
}
static void
diff --git a/src/brasero-data-disc.c b/src/brasero-data-disc.c
index 66c8f52..e40e572 100644
--- a/src/brasero-data-disc.c
+++ b/src/brasero-data-disc.c
@@ -58,7 +58,7 @@
#include "burn-track.h"
#include "burn-session.h"
#include "brasero-volume.h"
-
+#include "brasero-utils.h"
typedef struct _BraseroDataDiscPrivate BraseroDataDiscPrivate;
struct _BraseroDataDiscPrivate
@@ -367,12 +367,15 @@ brasero_data_disc_clipboard_text_cb (GtkClipboard *clipboard,
gchar **array;
gchar **item;
- priv = BRASERO_DATA_DISC_PRIVATE (data->disc);
-
+ if (!text)
+ goto end;
+
+ priv = BRASERO_DATA_DISC_PRIVATE (data->disc);
+
if (data->reference)
parent = brasero_data_project_reference_get (priv->project, data->reference);
-
- array = g_strsplit_set (text, "\n\r", 0);
+
+ array = g_uri_list_extract_uris (text);
item = array;
while (*item) {
if (**item != '\0') {
@@ -396,6 +399,7 @@ brasero_data_disc_clipboard_text_cb (GtkClipboard *clipboard,
}
g_strfreev (array);
+end:
if (data->reference)
brasero_data_project_reference_free (priv->project, data->reference);
@@ -409,28 +413,14 @@ brasero_data_disc_clipboard_targets_cb (GtkClipboard *clipboard,
BraseroClipData *data)
{
BraseroDataDiscPrivate *priv;
- GdkAtom *iter;
- gchar *target;
priv = BRASERO_DATA_DISC_PRIVATE (data->disc);
-
- iter = atoms;
- while (n_atoms) {
- target = gdk_atom_name (*iter);
-
- if (!strcmp (target, "x-special/gnome-copied-files")
- || !strcmp (target, "UTF8_STRING")) {
- gtk_clipboard_request_text (clipboard,
- (GtkClipboardTextReceivedFunc)
- brasero_data_disc_clipboard_text_cb,
- data);
- g_free (target);
- return;
- }
-
- g_free (target);
- iter++;
- n_atoms--;
+ if (brasero_clipboard_selection_may_have_uri (atoms, n_atoms)) {
+ gtk_clipboard_request_text (clipboard,
+ (GtkClipboardTextReceivedFunc)
+ brasero_data_disc_clipboard_text_cb,
+ data);
+ return;
}
if (data->reference)
diff --git a/src/brasero-file-monitor.c b/src/brasero-file-monitor.c
index 074d45a..eeeadbc 100644
--- a/src/brasero-file-monitor.c
+++ b/src/brasero-file-monitor.c
@@ -544,12 +544,12 @@ brasero_file_monitor_inotify_monitor_cb (GIOChannel *channel,
&event);
}
else
- g_warning ("Unknown (or already deleted) monitored directory = > ignored \n");
+ g_warning ("Unknown (or already deleted) monitored directory = > ignored");
}
else {
GSList *list;
- /* This is an even happening on the top directory there*/
+ /* This is an event happening on the top directory there*/
list = callback_data;
brasero_file_monitor_inotify_file_event (self,
list,
diff --git a/src/brasero-image-properties.c b/src/brasero-image-properties.c
index e8b5af2..6360c9a 100644
--- a/src/brasero-image-properties.c
+++ b/src/brasero-image-properties.c
@@ -172,6 +172,7 @@ brasero_image_properties_set_formats (BraseroImageProperties *self,
BraseroImageFormat format)
{
BraseroImagePropertiesPrivate *priv;
+ guint num;
priv = BRASERO_IMAGE_PROPERTIES_PRIVATE (self);
@@ -214,12 +215,15 @@ brasero_image_properties_set_formats (BraseroImageProperties *self,
self);
}
- brasero_image_type_chooser_set_formats (BRASERO_IMAGE_TYPE_CHOOSER (priv->format),
- formats);
+ num = brasero_image_type_chooser_set_formats (BRASERO_IMAGE_TYPE_CHOOSER (priv->format),
+ formats);
brasero_image_type_chooser_set_format (BRASERO_IMAGE_TYPE_CHOOSER (priv->format),
format);
- gtk_widget_show (priv->format);
+ if (num > 1)
+ gtk_widget_show (priv->format);
+ else
+ gtk_widget_hide (priv->format);
}
static void
diff --git a/src/brasero-image-type-chooser.c b/src/brasero-image-type-chooser.c
index f21d83e..89f4e2c 100644
--- a/src/brasero-image-type-chooser.c
+++ b/src/brasero-image-type-chooser.c
@@ -65,10 +65,11 @@ struct _BraseroImageTypeChooserPrivate {
static GtkHBoxClass *parent_class = NULL;
-void
+guint
brasero_image_type_chooser_set_formats (BraseroImageTypeChooser *self,
BraseroImageFormat formats)
{
+ guint format_num;
GtkTreeIter iter;
GtkTreeModel *store;
BraseroImageTypeChooserPrivate *priv;
@@ -77,6 +78,8 @@ brasero_image_type_chooser_set_formats (BraseroImageTypeChooser *self,
priv->updating = TRUE;
+ format_num = 0;
+
/* clean */
store = gtk_combo_box_get_model (GTK_COMBO_BOX (priv->combo));
gtk_list_store_clear (GTK_LIST_STORE (store));
@@ -89,6 +92,7 @@ brasero_image_type_chooser_set_formats (BraseroImageTypeChooser *self,
-1);
if (formats & BRASERO_IMAGE_FORMAT_BIN) {
+ format_num ++;
gtk_list_store_append (GTK_LIST_STORE (store), &iter);
gtk_list_store_set (GTK_LIST_STORE (store), &iter,
FORMAT_TEXT, _("*.iso image"),
@@ -97,6 +101,7 @@ brasero_image_type_chooser_set_formats (BraseroImageTypeChooser *self,
}
if (formats & BRASERO_IMAGE_FORMAT_CLONE) {
+ format_num ++;
gtk_list_store_append (GTK_LIST_STORE (store), &iter);
gtk_list_store_set (GTK_LIST_STORE (store), &iter,
FORMAT_TEXT, _("*.raw image"),
@@ -105,6 +110,7 @@ brasero_image_type_chooser_set_formats (BraseroImageTypeChooser *self,
}
if (formats & BRASERO_IMAGE_FORMAT_CUE) {
+ format_num ++;
gtk_list_store_append (GTK_LIST_STORE (store), &iter);
gtk_list_store_set (GTK_LIST_STORE (store), &iter,
FORMAT_TEXT, _("*.cue image"),
@@ -113,6 +119,7 @@ brasero_image_type_chooser_set_formats (BraseroImageTypeChooser *self,
}
if (formats & BRASERO_IMAGE_FORMAT_CDRDAO) {
+ format_num ++;
gtk_list_store_append (GTK_LIST_STORE (store), &iter);
gtk_list_store_set (GTK_LIST_STORE (store), &iter,
FORMAT_TEXT, _("*.toc image (cdrdao)"),
@@ -127,6 +134,8 @@ brasero_image_type_chooser_set_formats (BraseroImageTypeChooser *self,
brasero_image_type_chooser_set_format (self, priv->format);
else
brasero_image_type_chooser_set_format (self, BRASERO_IMAGE_FORMAT_NONE);
+
+ return format_num;
}
void
diff --git a/src/brasero-image-type-chooser.h b/src/brasero-image-type-chooser.h
index ded3113..7935092 100644
--- a/src/brasero-image-type-chooser.h
+++ b/src/brasero-image-type-chooser.h
@@ -56,7 +56,7 @@ struct _BraseroImageTypeChooserClass {
GType brasero_image_type_chooser_get_type ();
GtkWidget *brasero_image_type_chooser_new ();
-void
+guint
brasero_image_type_chooser_set_formats (BraseroImageTypeChooser *self,
BraseroImageFormat formats);
void
diff --git a/src/brasero-utils.c b/src/brasero-utils.c
index 6f5863c..a3b7ad2 100644
--- a/src/brasero-utils.c
+++ b/src/brasero-utils.c
@@ -380,3 +380,32 @@ brasero_utils_message_dialog (GtkWidget *parent,
gtk_dialog_run (GTK_DIALOG (message));
gtk_widget_destroy (message);
}
+
+gboolean
+brasero_clipboard_selection_may_have_uri (GdkAtom *atoms,
+ gint n_atoms)
+{
+ GdkAtom *iter;
+
+ /* Check for a text target */
+ if (gtk_targets_include_text (atoms, n_atoms))
+ return TRUE;
+
+ /* Check for special targets like nautilus' and its file copied */
+ iter = atoms;
+ while (n_atoms > 0) {
+ gchar *target;
+
+ target = gdk_atom_name (*iter);
+ if (!strcmp (target, "x-special/gnome-copied-files")) {
+ g_free (target);
+ return TRUE;
+ }
+ g_free (target);
+
+ iter++;
+ n_atoms--;
+ }
+
+ return FALSE;
+}
diff --git a/src/brasero-utils.h b/src/brasero-utils.h
index 38e6a23..c6f8bfd 100644
--- a/src/brasero-utils.h
+++ b/src/brasero-utils.h
@@ -90,6 +90,10 @@ brasero_utils_message_dialog (GtkWidget *parent,
const gchar *secondary_message,
GtkMessageType type);
+gboolean
+brasero_clipboard_selection_may_have_uri (GdkAtom *atoms,
+ gint n_atoms);
+
G_END_DECLS
#endif /* _UTILS_H */
diff --git a/src/brasero-video-disc.c b/src/brasero-video-disc.c
index ae2269d..13e0628 100644
--- a/src/brasero-video-disc.c
+++ b/src/brasero-video-disc.c
@@ -739,7 +739,10 @@ brasero_video_disc_clipboard_text_cb (GtkClipboard *clipboard,
gchar **array;
gchar **item;
- array = g_strsplit_set (text, "\n\r", 0);
+ if (!text)
+ return;
+
+ array = g_uri_list_extract_uris (text);
item = array;
while (*item) {
if (**item != '\0') {
@@ -761,6 +764,7 @@ brasero_video_disc_clipboard_text_cb (GtkClipboard *clipboard,
item++;
}
+ g_strfreev (array);
}
static void
@@ -769,26 +773,10 @@ brasero_video_disc_clipboard_targets_cb (GtkClipboard *clipboard,
gint n_atoms,
BraseroVideoDisc *self)
{
- GdkAtom *iter;
- gchar *target;
-
- iter = atoms;
- while (n_atoms) {
- target = gdk_atom_name (*iter);
-
- if (!strcmp (target, "x-special/gnome-copied-files")
- || !strcmp (target, "UTF8_STRING")) {
- gtk_clipboard_request_text (clipboard,
- (GtkClipboardTextReceivedFunc) brasero_video_disc_clipboard_text_cb,
- self);
- g_free (target);
- return;
- }
-
- g_free (target);
- iter++;
- n_atoms--;
- }
+ if (brasero_clipboard_selection_may_have_uri (atoms, n_atoms))
+ gtk_clipboard_request_text (clipboard,
+ (GtkClipboardTextReceivedFunc) brasero_video_disc_clipboard_text_cb,
+ self);
}
static void
diff --git a/src/plugins/cdrkit/burn-wodim.c b/src/plugins/cdrkit/burn-wodim.c
index 5921f8b..0253984 100644
--- a/src/plugins/cdrkit/burn-wodim.c
+++ b/src/plugins/cdrkit/burn-wodim.c
@@ -128,7 +128,13 @@ brasero_wodim_stderr_read (BraseroProcess *process, const gchar *line)
BRASERO_BURN_ERROR_DRIVE_BUSY,
_("The drive is busy")));
}
-
+ else if (strstr (line, "Probably trying to use ultra high speed+ medium on improper writer")) {
+ /* Set a deferred error as this message tends to indicate a failure */
+ brasero_process_deferred_error (process,
+ g_error_new (BRASERO_BURN_ERROR,
+ BRASERO_BURN_ERROR_MEDIUM_INVALID,
+ _("The disc is not supported")));
+ }
/* REMINDER: these should not be necessary as we checked that already */
/**
else if (strstr (line, "cannot write medium - incompatible format") != NULL) {
@@ -354,10 +360,18 @@ brasero_wodim_stdout_read (BraseroProcess *process, const gchar *line)
else if (g_str_has_prefix (line, "Last chance to quit, ")) {
brasero_job_set_dangerous (BRASERO_JOB (process), TRUE);
}
- else if (g_str_has_prefix (line, "Blanking PMA, TOC, pregap")
+/* else if (g_str_has_prefix (line, "Blanking PMA, TOC, pregap")
|| strstr (line, "Blanking entire disk")) {
}
+ */
+ else if (strstr (line, "Disk sub type: Ultra High speed+")) {
+ /* Set a deferred error as this message tends to indicate a failure */
+ brasero_process_deferred_error (process,
+ g_error_new (BRASERO_BURN_ERROR,
+ BRASERO_BURN_ERROR_MEDIUM_INVALID,
+ _("The disc is not supported")));
+ }
/* This should not happen */
/* else if (strstr (line, "Use tsize= option in SAO mode to specify track size")) */
diff --git a/src/plugins/cdrtools/burn-cdrecord.c b/src/plugins/cdrtools/burn-cdrecord.c
index 32b2448..b19caf6 100644
--- a/src/plugins/cdrtools/burn-cdrecord.c
+++ b/src/plugins/cdrtools/burn-cdrecord.c
@@ -128,6 +128,13 @@ brasero_cdrecord_stderr_read (BraseroProcess *process, const gchar *line)
BRASERO_BURN_ERROR_DRIVE_BUSY,
_("The drive is busy")));
}
+ else if (strstr (line, "Probably trying to use ultra high speed+ medium on improper writer")) {
+ /* Set a deferred error as this message tends to indicate a failure */
+ brasero_process_deferred_error (process,
+ g_error_new (BRASERO_BURN_ERROR,
+ BRASERO_BURN_ERROR_MEDIUM_INVALID,
+ _("The disc is not supported")));
+ }
/* REMINDER: these should not be necessary as we checked that already */
/**
@@ -338,10 +345,18 @@ brasero_cdrecord_stdout_read (BraseroProcess *process, const gchar *line)
else if (g_str_has_prefix (line, "Last chance to quit, ")) {
brasero_job_set_dangerous (BRASERO_JOB (process), TRUE);
}
- else if (g_str_has_prefix (line, "Blanking PMA, TOC, pregap")
+/* else if (g_str_has_prefix (line, "Blanking PMA, TOC, pregap")
|| strstr (line, "Blanking entire disk")) {
}
+*/
+ else if (strstr (line, "Disk sub type: Ultra High speed+")) {
+ /* Set a deferred error as this message tends to indicate a failure */
+ brasero_process_deferred_error (process,
+ g_error_new (BRASERO_BURN_ERROR,
+ BRASERO_BURN_ERROR_MEDIUM_INVALID,
+ _("The disc is not supported")));
+ }
/* This should not happen */
/* else if (strstr (line, "Use tsize= option in SAO mode to specify track size")) */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]