]> git.street.me.uk Git - andy/viking.git/commitdiff
XDG_CACHE_HOME compliant thumbnail usage
authorRob Norris <rw_norris@hotmail.com>
Tue, 24 Jan 2017 23:51:51 +0000 (23:51 +0000)
committerRob Norris <rw_norris@hotmail.com>
Tue, 4 Apr 2017 22:19:52 +0000 (23:19 +0100)
src/main.c
src/thumbnails.c
src/thumbnails.h

index 98a501ce279db1e71923ea9b105d087d9d9f83b7..48c8c1d0fa59a144b42fbe3a4ededd04d41258a1 100644 (file)
@@ -38,6 +38,7 @@
 #include "vikrouting.h"
 #include "util.h"
 #include "toolbar.h"
+#include "thumbnails.h"
 
 #ifdef HAVE_STDLIB_H
 #include <stdlib.h>
@@ -179,6 +180,7 @@ int main( int argc, char *argv[] )
 
   a_settings_init ();
   a_preferences_init ();
+  a_thumbnails_init ();
 
  /*
   * First stage initialization
@@ -278,6 +280,7 @@ int main( int argc, char *argv[] )
   a_mapcache_uninit ();
   a_dems_uninit ();
   a_layer_defaults_uninit ();
+  a_thumbnails_uninit ();
   a_preferences_uninit ();
   a_settings_uninit ();
 
index 58e028dcc737e83e957ed08a35c0f9a8cbdba04a..856b5f9202812b0afeff47bd87ef30a8f2c5e83b 100644 (file)
 #define MAX(a,b) (((a)>(b))?(a):(b))
 #endif
 
-#define HOME_DIR g_get_home_dir()
+static gchar* thumb_dir = NULL;
 
 #ifdef WINDOWS
-#define THUMB_DIR "\\THUMBNAILS\\" /* viking maps default viking\maps */
-#define THUMB_SUB_DIR "normal\\"
+static void set_thumb_dir ()
+{
+  thumb_dir = g_strconcat ( g_get_home_dir(), "\\THUMBNAILS\\normal\\", NULL ) ;
+}
 #else
-#define THUMB_DIR "/.thumbnails/"
-#define THUMB_SUB_DIR "normal/"
+static void set_thumb_dir ()
+{
+  const gchar *xdg_cache_home = g_getenv("XDG_CACHE_HOME");
+  if ( xdg_cache_home && g_strcmp0 (xdg_cache_home, "") != 0 )
+    thumb_dir = g_strconcat ( xdg_cache_home, "/thumbnails/normal/", NULL );
+  else
+    thumb_dir = g_strconcat ( g_get_home_dir(), "/.cache/thumbnails/normal/", NULL );
+}
 #endif
 
 #define PIXMAP_THUMB_SIZE  128
@@ -187,9 +195,7 @@ static GdkPixbuf *save_thumbnail(const char *pathname, GdkPixbuf *full)
        md5 = md5_hash(uri);
        g_free(path);
 
-       to = g_string_new(HOME_DIR);
-       g_string_append(to, THUMB_DIR);
-       g_string_append(to, THUMB_SUB_DIR);
+       to = g_string_new ( thumb_dir );
        if ( g_mkdir_with_parents(to->str, 0700) != 0 )
                g_warning ("%s: Failed to mkdir %s", __FUNCTION__, to->str );
        g_string_append(to, md5);
@@ -275,7 +281,7 @@ GdkPixbuf *a_thumbnails_get(const gchar *pathname)
        md5 = md5_hash(uri);
        g_free(uri);
 
-       thumb_path = g_strdup_printf("%s%s%s%s.png", HOME_DIR, THUMB_DIR, THUMB_SUB_DIR, md5);
+       thumb_path = g_strdup_printf("%s%s.png", thumb_dir, md5);
 
        g_free(md5);
 
@@ -308,3 +314,17 @@ out:
        g_free(thumb_path);
        return thumb;
 }
+
+/*
+ * Startup and finish routines
+ */
+
+void a_thumbnails_init ()
+{
+  set_thumb_dir ();
+}
+
+void a_thumbnails_uninit ()
+{
+  g_free ( thumb_dir );
+}
index 3b66b90ead3a9cb3cd50889572608700bec5acb1..b5f44120c9d9dd3ee5036323cfc9475a41305319 100644 (file)
@@ -27,6 +27,9 @@
 
 G_BEGIN_DECLS
 
+void a_thumbnails_init ();
+void a_thumbnails_uninit ();
+
 gboolean a_thumbnails_exists ( const gchar *filename );
 void a_thumbnails_create ( const gchar *filename );
 GdkPixbuf *a_thumbnails_get(const gchar *filename);