Author: abrander
Date: 2009-07-05 16:43:22 +0200 (Sun, 05 Jul 2009)
New Revision: 2549

Modified:
   trunk/src/rs-preload.c
Log:
Modified preloader to cache complete RS_PHOTO instead of only image data.

Modified: trunk/src/rs-preload.c
===================================================================
--- trunk/src/rs-preload.c      2009-07-05 08:29:48 UTC (rev 2548)
+++ trunk/src/rs-preload.c      2009-07-05 14:43:22 UTC (rev 2549)
@@ -26,7 +26,7 @@
 
 typedef struct _rs_preloaded {
        gchar *filename;
-       RS_IMAGE16 *image;
+       RS_PHOTO *photo;
 } RS_PRELOADED;
 
 static void rs_preload(const gchar *filename);
@@ -124,9 +124,9 @@
                p = remove->data;
                PRELOAD_DEBUG("Removed %s\033[0m\n", p->filename);
 
-               preloaded_memory_in_use -= rs_image16_get_footprint(p->image);
+               preloaded_memory_in_use -= 
rs_image16_get_footprint(p->photo->input);
 
-               rs_image16_free(p->image);
+               g_object_unref(p->photo);
                g_free(p->filename);
                g_free(p);
 
@@ -148,10 +148,8 @@
                size_t footprint = rs_image16_get_footprint(photo->input);
                RS_PRELOADED *p = g_new0(RS_PRELOADED, 1);
                p->filename = filename;
-               p->image = photo->input;
+               p->photo = photo;
                PRELOAD_DEBUG("\033[34mPreloading %s\033[0m\n", filename);
-               photo->input = NULL; /* EVIL hack to avoid freeing in 
rs_photo_free() */
-               g_object_unref(photo);
 
                g_static_mutex_lock(&queue_lock);
                g_static_mutex_lock(&preloaded_lock);
@@ -251,10 +249,8 @@
                if ((l = g_list_find_custom(preloaded, filename, 
g_list_find_filename)))
                {
                        PRELOAD_DEBUG("\033[32m%s preloaded\033[0m\n", 
filename);
-                       photo = rs_photo_new();
                        p = l->data;
-                       photo->input = g_object_ref(p->image);
-                       photo->filename = g_strdup(p->filename);
+                       photo = g_object_ref(p->photo);
                }
                else
                        PRELOAD_DEBUG("\033[31m%s NOT preloaded\033[0m\n", 
filename);


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

Reply via email to