X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=driver%2Fxscreensaver-getimage.c;h=598a913569fc47bc6ebfc9b56492f9199b65d0ca;hb=ffcd2e7e3da122dbba5c4188e05d3a63d0ede26e;hp=22aefc34d7904249182bd80cd99865443dc9bfa6;hpb=b81f521c5ad7022ac12db18ca8fcdd9fb063831e;p=xscreensaver diff --git a/driver/xscreensaver-getimage.c b/driver/xscreensaver-getimage.c index 22aefc34..598a9135 100644 --- a/driver/xscreensaver-getimage.c +++ b/driver/xscreensaver-getimage.c @@ -1,4 +1,4 @@ -/* xscreensaver, Copyright (c) 2001-2012 by Jamie Zawinski +/* xscreensaver, Copyright (c) 2001-2013 by Jamie Zawinski * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that @@ -413,7 +413,7 @@ read_file_gdk (Screen *screen, Window window, Drawable drawable, int ow = w, oh = h; GdkPixbuf *opb = pb; pb = gdk_pixbuf_apply_embedded_orientation (opb); - gdk_pixbuf_unref (opb); + g_object_unref (opb); w = gdk_pixbuf_get_width (pb); h = gdk_pixbuf_get_height (pb); if (verbose_p && (w != ow || h != oh)) @@ -430,7 +430,7 @@ read_file_gdk (Screen *screen, Window window, Drawable drawable, GDK_INTERP_BILINEAR); if (pb2) { - gdk_pixbuf_unref (pb); + g_object_unref (pb); pb = pb2; w = w2; h = h2; @@ -1666,6 +1666,8 @@ get_image (Screen *screen, draw_colorbars (screen, xgwa.visual, drawable, xgwa.colormap, 0, 0, 0, 0); XSync (dpy, False); + if (! file_prop) file_prop = ""; + } break; @@ -1706,8 +1708,23 @@ get_image (Screen *screen, { Atom a = XInternAtom (dpy, XA_XSCREENSAVER_IMAGE_FILENAME, False); if (file_prop && *file_prop) - XChangeProperty (dpy, window, a, XA_STRING, 8, PropModeReplace, - (unsigned char *) file_prop, strlen(file_prop)); + { + char *f2 = strdup (file_prop); + + /* Take the extension off of the file name. */ + /* Duplicated in utils/grabclient.c. */ + char *slash = strrchr (f2, '/'); + char *dot = strrchr ((slash ? slash : f2), '.'); + if (dot) *dot = 0; + /* Replace slashes with newlines */ + /* while ((dot = strchr(f2, '/'))) *dot = '\n'; */ + /* Replace slashes with spaces */ + /* while ((dot = strchr(f2, '/'))) *dot = ' '; */ + + XChangeProperty (dpy, window, a, XA_STRING, 8, PropModeReplace, + (unsigned char *) f2, strlen(f2)); + free (f2); + } else XDeleteProperty (dpy, window, a);