diff options
author | Matthias Clasen <mclasen@redhat.com> | 2004-12-28 04:31:40 +0000 |
---|---|---|
committer | Matthias Clasen <matthiasc@src.gnome.org> | 2004-12-28 04:31:40 +0000 |
commit | 676322ac06bd2dd67906e4839c6ef316a9f42151 (patch) | |
tree | eeff12710d75d60a2b74d8913b6de4a313047e97 | |
parent | 34982b41d200b79faca6f97317fa43853cc435d5 (diff) | |
download | gtk+-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-- | ChangeLog | 14 | ||||
-rw-r--r-- | ChangeLog.pre-2-10 | 14 | ||||
-rw-r--r-- | ChangeLog.pre-2-6 | 14 | ||||
-rw-r--r-- | ChangeLog.pre-2-8 | 14 | ||||
-rw-r--r-- | gtk/gtkclipboard.c | 4 | ||||
-rw-r--r-- | gtk/gtkselection.c | 36 |
6 files changed, 77 insertions, 19 deletions
@@ -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; } |