Author: akv
Date: 2013-05-06 13:29:24 +0200 (Mon, 06 May 2013)
New Revision: 4391

Modified:
   branches/4175-enfuse/librawstudio/conf_interface.h
   branches/4175-enfuse/src/gtk-interface.c
   branches/4175-enfuse/src/rs-actions.c
   branches/4175-enfuse/src/rs-enfuse.c
Log:
Added checkbox to preferences for wether or not to use cache when running 
enfuse.

Modified: branches/4175-enfuse/librawstudio/conf_interface.h
===================================================================
--- branches/4175-enfuse/librawstudio/conf_interface.h  2013-05-06 08:41:18 UTC 
(rev 4390)
+++ branches/4175-enfuse/librawstudio/conf_interface.h  2013-05-06 11:29:24 UTC 
(rev 4391)
@@ -84,6 +84,7 @@
 #define CONF_ENFUSE_EXTEND_NEGATIVE_MULTI "conf_enfuse_extend_negative_multi"
 #define CONF_ENFUSE_EXTEND_POSITIVE_MULTI "conf_enfuse_extend_positive_multi"
 #define CONF_ENFUSE_EXTEND_STEP_MULTI "conf_enfuse_extend_step_multi"
+#define CONF_ENFUSE_CACHE "conf_enfuse_cache"
 
 #define DEFAULT_CONF_EXPORT_FILENAME "%f_%2c"
 #define DEFAULT_CONF_BATCH_DIRECTORY "batch_exports/"
@@ -125,6 +126,7 @@
 #define DEFAULT_CONF_ENFUSE_EXTEND_NEGATIVE_MULTI 1.0
 #define DEFAULT_CONF_ENFUSE_EXTEND_POSITIVE_MULTI 1.0
 #define DEFAULT_CONF_ENFUSE_EXTEND_STEP_MULTI 2.0
+#define DEFAULT_CONF_ENFUSE_CACHE TRUE
 
 /* get the last working directory from gconf */
 void rs_set_last_working_directory(const char *lwd);

Modified: branches/4175-enfuse/src/gtk-interface.c
===================================================================
--- branches/4175-enfuse/src/gtk-interface.c    2013-05-06 08:41:18 UTC (rev 
4390)
+++ branches/4175-enfuse/src/gtk-interface.c    2013-05-06 11:29:24 UTC (rev 
4391)
@@ -938,6 +938,7 @@
        GtkWidget *cs_label;
        GtkWidget* cs_widget;
        GtkWidget *local_cache_check;
+       GtkWidget *enfuse_cache_check;
        GtkWidget *system_theme_check;
        gchar *str;
 
@@ -1000,6 +1001,9 @@
 
        local_cache_check = checkbox_from_conf(CONF_CACHEDIR_IS_LOCAL, _("Place 
Cache in Home Directory"), FALSE);
        gtk_box_pack_start (GTK_BOX (preview_page), local_cache_check, FALSE, 
TRUE, 0);
+
+       enfuse_cache_check = checkbox_from_conf(CONF_ENFUSE_CACHE, _("Cache 
images when enfusing (speed for memory)"), DEFAULT_CONF_ENFUSE_CACHE);
+       gtk_box_pack_start (GTK_BOX (preview_page), enfuse_cache_check, FALSE, 
TRUE, 0);
        
        cs_hbox = gtk_hbox_new(FALSE, 0);
        cs_label = gtk_label_new(_("Display Colorspace:"));

Modified: branches/4175-enfuse/src/rs-actions.c
===================================================================
--- branches/4175-enfuse/src/rs-actions.c       2013-05-06 08:41:18 UTC (rev 
4390)
+++ branches/4175-enfuse/src/rs-actions.c       2013-05-06 11:29:24 UTC (rev 
4391)
@@ -1585,8 +1585,12 @@
   GUI_CATCHUP();
 
   /* initialize cache system */
-  if (!rs->enfuse_cache)
+  gboolean enfuse_cache = DEFAULT_CONF_ENFUSE_CACHE;
+  rs_conf_get_boolean_with_default(CONF_ENFUSE_CACHE, &enfuse_cache, 
DEFAULT_CONF_ENFUSE_CACHE);
+  if (!rs->enfuse_cache && enfuse_cache)
     rs->enfuse_cache = g_hash_table_new(enfuse_cache_hash, 
enfuse_cache_hash_equal);
+  else
+    printf("Enfuse cache disabled\n");
 
   gui_set_busy(TRUE);
   GList *thumbs = get_thumbnails_from_list(selected_names);

Modified: branches/4175-enfuse/src/rs-enfuse.c
===================================================================
--- branches/4175-enfuse/src/rs-enfuse.c        2013-05-06 08:41:18 UTC (rev 
4390)
+++ branches/4175-enfuse/src/rs-enfuse.c        2013-05-06 11:29:24 UTC (rev 
4391)
@@ -89,13 +89,20 @@
 }
 
 gint export_image(gchar *filename, GHashTable *cache, RSOutput *output, 
RSFilter *filter, gint snapshot, double exposure, gchar *outputname, gint 
boundingbox, RSFilter *resample) {
-  RS_PHOTO *photo = (RS_PHOTO *) g_hash_table_lookup(cache, filename);
-  if (!photo)
+  RS_PHOTO *photo = NULL;
+
+  if (cache) 
     {
-      photo = rs_photo_load_from_file(filename);
-      g_hash_table_insert(cache, filename, photo);
-      printf("Adding %s to cache\n", filename);
+      photo = (RS_PHOTO *) g_hash_table_lookup(cache, filename);
+      if (!photo)
+       {
+         photo = rs_photo_load_from_file(filename);
+         g_hash_table_insert(cache, filename, photo);
+         printf("Adding %s to cache\n", filename);
+       }
     }
+  else
+    photo = rs_photo_load_from_file(filename);
 
   if (photo)
     {


_______________________________________________
Rawstudio-commit mailing list
[email protected]
http://rawstudio.org/cgi-bin/mailman/listinfo/rawstudio-commit

Reply via email to