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.
This commit is contained in:
Matthias Clasen 2004-12-28 04:31:40 +00:00 committed by Matthias Clasen
parent 34982b41d2
commit 676322ac06
6 changed files with 77 additions and 19 deletions

View File

@ -1,3 +1,17 @@
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):

View File

@ -1,3 +1,17 @@
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):

View File

@ -1,3 +1,17 @@
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):

View File

@ -1,3 +1,17 @@
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):

View File

@ -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);
}

View File

@ -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;
}