From d8114e841c5b5933a655a3ec728cedd37b86d27d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Bert=20M=C3=BCnnich?= <ber.t@posteo.de>
Date: Wed, 22 Jul 2015 21:08:00 +0200
Subject: [PATCH] Thumbnail cache file format depending on existance of alpha
 layer

Use PNG if image has alpha layer, JPG if not. Fixes issue #209
---
 Makefile |  2 +-
 thumbs.c | 12 ++++++++----
 2 files changed, 9 insertions(+), 5 deletions(-)

diff --git a/Makefile b/Makefile
index 003758b..8957a46 100644
--- a/Makefile
+++ b/Makefile
@@ -1,4 +1,4 @@
-VERSION   := git-20150518
+VERSION   := git-20150722
 
 PREFIX    := /usr/local
 MANPREFIX := $(PREFIX)/share/man
diff --git a/thumbs.c b/thumbs.c
index 209c94b..3c18c27 100644
--- a/thumbs.c
+++ b/thumbs.c
@@ -48,9 +48,9 @@ char* tns_cache_filepath(const char *filepath)
 	
 	if (strncmp(filepath, cache_dir, strlen(cache_dir)) != 0) {
 		/* don't cache images inside the cache directory! */
-		len = strlen(cache_dir) + strlen(filepath) + 6;
+		len = strlen(cache_dir) + strlen(filepath) + 2;
 		cfile = (char*) s_malloc(len);
-		snprintf(cfile, len, "%s/%s.jpg", cache_dir, filepath + 1);
+		snprintf(cfile, len, "%s/%s", cache_dir, filepath + 1);
 	}
 	return cfile;
 }
@@ -101,8 +101,12 @@ void tns_cache_write(Imlib_Image im, const char *filepath, bool force)
 			}
 			if (err == 0) {
 				imlib_context_set_image(im);
-				imlib_image_set_format("jpg");
-				imlib_image_attach_data_value("quality", NULL, 90, NULL);
+				if (imlib_image_has_alpha()) {
+					imlib_image_set_format("png");
+				} else {
+					imlib_image_set_format("jpg");
+					imlib_image_attach_data_value("quality", NULL, 90, NULL);
+				}
 				imlib_save_image_with_error_return(cfile, &err);
 			}
 			if (err == 0) {