summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2004-12-28 04:31:40 +0000
committerMatthias Clasen <matthiasc@src.gnome.org>2004-12-28 04:31:40 +0000
commit676322ac06bd2dd67906e4839c6ef316a9f42151 (patch)
treeeeff12710d75d60a2b74d8913b6de4a313047e97
parent34982b41d200b79faca6f97317fa43853cc435d5 (diff)
downloadgtk+-676322ac06bd2dd67906e4839c6ef316a9f42151.tar.gz
Make the clipboard image API more robust (#162357, Torsten Schoenfeld):
2004-12-27 Matthias Clasen <mclasen@redhat.com> Make the clipboard image API more robust (#162357, Torsten Schoenfeld): * gtk/gtkclipboard.c (clipboard_image_received_func): Don't ref the pixbuf if it is NULL. * gtk/gtkselection.c (gtk_selection_data_set_pixbuf): NULL-terminate the varargs in the call to gdk_pixbuf_save_to_buffer(). (gtk_selection_data_get_pixbuf): Only use a pixbuf loader if there is data to load.
-rw-r--r--ChangeLog14
-rw-r--r--ChangeLog.pre-2-1014
-rw-r--r--ChangeLog.pre-2-614
-rw-r--r--ChangeLog.pre-2-814
-rw-r--r--gtk/gtkclipboard.c4
-rw-r--r--gtk/gtkselection.c36
6 files changed, 77 insertions, 19 deletions
diff --git a/ChangeLog b/ChangeLog
index 522a7a26f1..faf595caf2 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,19 @@
2004-12-27 Matthias Clasen <mclasen@redhat.com>
+ Make the clipboard image API more robust (#162357,
+ Torsten Schoenfeld):
+
+ * gtk/gtkclipboard.c (clipboard_image_received_func): Don't
+ ref the pixbuf if it is NULL.
+
+ * gtk/gtkselection.c (gtk_selection_data_set_pixbuf):
+ NULL-terminate the varargs in the call to
+ gdk_pixbuf_save_to_buffer().
+ (gtk_selection_data_get_pixbuf): Only use a pixbuf loader
+ if there is data to load.
+
+2004-12-27 Matthias Clasen <mclasen@redhat.com>
+
* gdk/x11/gdkinput-x11.c (_gdk_input_common_other_event):
Set x_root and y_root in button and motion events from
extended input devices. (#148715, Robert Ögren)
diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10
index 522a7a26f1..faf595caf2 100644
--- a/ChangeLog.pre-2-10
+++ b/ChangeLog.pre-2-10
@@ -1,5 +1,19 @@
2004-12-27 Matthias Clasen <mclasen@redhat.com>
+ Make the clipboard image API more robust (#162357,
+ Torsten Schoenfeld):
+
+ * gtk/gtkclipboard.c (clipboard_image_received_func): Don't
+ ref the pixbuf if it is NULL.
+
+ * gtk/gtkselection.c (gtk_selection_data_set_pixbuf):
+ NULL-terminate the varargs in the call to
+ gdk_pixbuf_save_to_buffer().
+ (gtk_selection_data_get_pixbuf): Only use a pixbuf loader
+ if there is data to load.
+
+2004-12-27 Matthias Clasen <mclasen@redhat.com>
+
* gdk/x11/gdkinput-x11.c (_gdk_input_common_other_event):
Set x_root and y_root in button and motion events from
extended input devices. (#148715, Robert Ögren)
diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6
index 522a7a26f1..faf595caf2 100644
--- a/ChangeLog.pre-2-6
+++ b/ChangeLog.pre-2-6
@@ -1,5 +1,19 @@
2004-12-27 Matthias Clasen <mclasen@redhat.com>
+ Make the clipboard image API more robust (#162357,
+ Torsten Schoenfeld):
+
+ * gtk/gtkclipboard.c (clipboard_image_received_func): Don't
+ ref the pixbuf if it is NULL.
+
+ * gtk/gtkselection.c (gtk_selection_data_set_pixbuf):
+ NULL-terminate the varargs in the call to
+ gdk_pixbuf_save_to_buffer().
+ (gtk_selection_data_get_pixbuf): Only use a pixbuf loader
+ if there is data to load.
+
+2004-12-27 Matthias Clasen <mclasen@redhat.com>
+
* gdk/x11/gdkinput-x11.c (_gdk_input_common_other_event):
Set x_root and y_root in button and motion events from
extended input devices. (#148715, Robert Ögren)
diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8
index 522a7a26f1..faf595caf2 100644
--- a/ChangeLog.pre-2-8
+++ b/ChangeLog.pre-2-8
@@ -1,5 +1,19 @@
2004-12-27 Matthias Clasen <mclasen@redhat.com>
+ Make the clipboard image API more robust (#162357,
+ Torsten Schoenfeld):
+
+ * gtk/gtkclipboard.c (clipboard_image_received_func): Don't
+ ref the pixbuf if it is NULL.
+
+ * gtk/gtkselection.c (gtk_selection_data_set_pixbuf):
+ NULL-terminate the varargs in the call to
+ gdk_pixbuf_save_to_buffer().
+ (gtk_selection_data_get_pixbuf): Only use a pixbuf loader
+ if there is data to load.
+
+2004-12-27 Matthias Clasen <mclasen@redhat.com>
+
* gdk/x11/gdkinput-x11.c (_gdk_input_common_other_event):
Set x_root and y_root in button and motion events from
extended input devices. (#148715, Robert Ögren)
diff --git a/gtk/gtkclipboard.c b/gtk/gtkclipboard.c
index 150e801a25..bf88e8de7a 100644
--- a/gtk/gtkclipboard.c
+++ b/gtk/gtkclipboard.c
@@ -1245,7 +1245,9 @@ clipboard_image_received_func (GtkClipboard *clipboard,
{
WaitResults *results = data;
- results->data = g_object_ref (pixbuf);
+ if (pixbuf)
+ results->data = g_object_ref (pixbuf);
+
g_main_loop_quit (results->loop);
}
diff --git a/gtk/gtkselection.c b/gtk/gtkselection.c
index d3f963dfe3..1d147b9976 100644
--- a/gtk/gtkselection.c
+++ b/gtk/gtkselection.c
@@ -1266,11 +1266,8 @@ gtk_selection_data_set_pixbuf (GtkSelectionData *selection_data,
{
str = NULL;
type = gdk_pixbuf_format_get_name (fmt),
- result = gdk_pixbuf_save_to_buffer (pixbuf,
- &str,
- &len,
- type,
- NULL);
+ result = gdk_pixbuf_save_to_buffer (pixbuf, &str, &len,
+ type, NULL, NULL);
if (result)
gtk_selection_data_set (selection_data,
atom, 8, (guchar *)str, len);
@@ -1310,20 +1307,23 @@ gtk_selection_data_get_pixbuf (GtkSelectionData *selection_data)
GdkPixbufLoader *loader;
GdkPixbuf *result = NULL;
- loader = gdk_pixbuf_loader_new ();
-
- if (gdk_pixbuf_loader_write (loader,
- selection_data->data,
- selection_data->length,
- NULL))
- result = gdk_pixbuf_loader_get_pixbuf (loader);
-
- if (result)
- g_object_ref (result);
+ if (selection_data->length > 0)
+ {
+ loader = gdk_pixbuf_loader_new ();
+
+ if (gdk_pixbuf_loader_write (loader,
+ selection_data->data,
+ selection_data->length,
+ NULL))
+ result = gdk_pixbuf_loader_get_pixbuf (loader);
+
+ if (result)
+ g_object_ref (result);
+
+ gdk_pixbuf_loader_close (loader, NULL);
+ g_object_unref (loader);
+ }
- gdk_pixbuf_loader_close (loader, NULL);
- g_object_unref (loader);
-
return result;
}