summaryrefslogtreecommitdiff
path: root/gtk/gtkcssimageurl.c
diff options
context:
space:
mode:
authorBenjamin Otte <otte@redhat.com>2013-01-02 15:27:00 +0100
committerBenjamin Otte <otte@redhat.com>2013-02-02 01:42:48 +0100
commit6348ded15d44a7781b6eab7bbc6dfe972b9f87f5 (patch)
tree528cc126b3236d470682ed3a84aa28b895c64ab8 /gtk/gtkcssimageurl.c
parent5607a2125fa712f99abf21901d704f1831d7cea4 (diff)
downloadgtk+-6348ded15d44a7781b6eab7bbc6dfe972b9f87f5.tar.gz
cssimage: Store the URI we're loaded from
I'd like to use it when printing the value, but I haven't found a way to do that sanely yet, as I'd need to be able to print relative paths for make check to work (otherwise the srcdir would blow things up). And we use a GString to output to, so there's no way to attach a base dir to that. If anyone has an idea how to achieve that, poke me. Having the real filename in debug prints sounds like a very good idea to me. https://bugzilla.gnome.org/show_bug.cgi?id=692934
Diffstat (limited to 'gtk/gtkcssimageurl.c')
-rw-r--r--gtk/gtkcssimageurl.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/gtk/gtkcssimageurl.c b/gtk/gtkcssimageurl.c
index 92126d3859..2c6dc898e6 100644
--- a/gtk/gtkcssimageurl.c
+++ b/gtk/gtkcssimageurl.c
@@ -66,21 +66,20 @@ gtk_css_image_url_parse (GtkCssImage *image,
{
GtkCssImageUrl *url = GTK_CSS_IMAGE_URL (image);
GdkPixbuf *pixbuf;
- GFile *file;
cairo_t *cr;
GError *error = NULL;
GFileInputStream *input;
- file = _gtk_css_parser_read_url (parser);
- if (file == NULL)
+ url->file = _gtk_css_parser_read_url (parser);
+ if (url->file == NULL)
return FALSE;
/* We special case resources here so we can use
gdk_pixbuf_new_from_resource, which in turn has some special casing
for GdkPixdata files to avoid duplicating the memory for the pixbufs */
- if (g_file_has_uri_scheme (file, "resource"))
+ if (g_file_has_uri_scheme (url->file, "resource"))
{
- char *uri = g_file_get_uri (file);
+ char *uri = g_file_get_uri (url->file);
char *resource_path = g_uri_unescape_string (uri + strlen ("resource://"), NULL);
pixbuf = gdk_pixbuf_new_from_resource (resource_path, &error);
@@ -89,7 +88,7 @@ gtk_css_image_url_parse (GtkCssImage *image,
}
else
{
- input = g_file_read (file, NULL, &error);
+ input = g_file_read (url->file, NULL, &error);
if (input == NULL)
{
_gtk_css_parser_take_error (parser, error);
@@ -99,7 +98,6 @@ gtk_css_image_url_parse (GtkCssImage *image,
pixbuf = gdk_pixbuf_new_from_stream (G_INPUT_STREAM (input), NULL, &error);
g_object_unref (input);
}
- g_object_unref (file);
if (pixbuf == NULL)
{
@@ -158,6 +156,8 @@ gtk_css_image_url_dispose (GObject *object)
{
GtkCssImageUrl *url = GTK_CSS_IMAGE_URL (object);
+ g_clear_object (&url->file);
+
if (url->surface)
{
cairo_surface_destroy (url->surface);