Author: post
Date: 2011-02-19 14:51:39 +0100 (Sat, 19 Feb 2011)
New Revision: 3818

Modified:
   trunk/librawstudio/rs-filetypes.c
   trunk/librawstudio/rs-filetypes.h
   trunk/librawstudio/rs-metadata.c
   trunk/plugins/load-gdk/load-gdk.c
   trunk/plugins/meta-ciff/ciff-meta.c
   trunk/plugins/meta-mrw/mrw-meta.c
   trunk/plugins/meta-raf/raf-meta.c
   trunk/plugins/meta-tiff/tiff-meta.c
   trunk/plugins/meta-x3f/x3f-meta.c
Log:
Fixed the damned return value from meta-loaders!

Modified: trunk/librawstudio/rs-filetypes.c
===================================================================
--- trunk/librawstudio/rs-filetypes.c   2011-02-19 12:09:40 UTC (rev 3817)
+++ trunk/librawstudio/rs-filetypes.c   2011-02-19 13:51:39 UTC (rev 3818)
@@ -234,7 +234,7 @@
  * @param rawfile An open RAWFILE
  * @param offset An offset in the open RAWFILE
  */
-void
+gboolean
 rs_filetype_meta_load(const gchar *service, RSMetadata *meta, RAWFILE 
*rawfile, guint offset)
 {
        gint priority = 0;
@@ -244,6 +244,9 @@
        g_assert(service != NULL);
        g_assert(RS_IS_METADATA(meta));
 
-       if((loader = filetype_search(meta_loaders, service, &priority, 
RS_LOADER_FLAGS_ALL)))
-               loader(service, rawfile, offset, meta);
+       while ((loader = filetype_search(meta_loaders, service, &priority, 
RS_LOADER_FLAGS_ALL)))
+               if (loader(service, rawfile, offset, meta))
+                       return TRUE;
+
+       return FALSE;
 }

Modified: trunk/librawstudio/rs-filetypes.h
===================================================================
--- trunk/librawstudio/rs-filetypes.h   2011-02-19 12:09:40 UTC (rev 3817)
+++ trunk/librawstudio/rs-filetypes.h   2011-02-19 13:51:39 UTC (rev 3818)
@@ -29,7 +29,7 @@
 } RSLoaderFlags;
 
 typedef RSFilterResponse *(*RSFileLoaderFunc)(const gchar *filename);
-typedef void (*RSFileMetaLoaderFunc)(const gchar *service, RAWFILE *rawfile, 
guint offset, RSMetadata *meta);
+typedef gboolean (*RSFileMetaLoaderFunc)(const gchar *service, RAWFILE 
*rawfile, guint offset, RSMetadata *meta);
 
 /**
  * Initialize the RSFiletype subsystem, this MUST be called before any other
@@ -77,6 +77,6 @@
  * @param rawfile An open RAWFILE
  * @param offset An offset in the open RAWFILE
  */
-extern void rs_filetype_meta_load(const gchar *service, RSMetadata *meta, 
RAWFILE *rawfile, guint offset);
+extern gboolean rs_filetype_meta_load(const gchar *service, RSMetadata *meta, 
RAWFILE *rawfile, guint offset);
 
 #endif /* RS_FILETYPES_H */

Modified: trunk/librawstudio/rs-metadata.c
===================================================================
--- trunk/librawstudio/rs-metadata.c    2011-02-19 12:09:40 UTC (rev 3817)
+++ trunk/librawstudio/rs-metadata.c    2011-02-19 13:51:39 UTC (rev 3818)
@@ -496,10 +496,7 @@
        rawfile = raw_open_file(filename);
        if (rawfile)
        {
-               /* FIXME: Fix the damned return value from meta-loaders! */
-               ret = TRUE;
-               rs_filetype_meta_load(filename, metadata, rawfile, 0);
-
+               ret = rs_filetype_meta_load(filename, metadata, rawfile, 0);
                raw_close_file(rawfile);
        }
        return ret;

Modified: trunk/plugins/load-gdk/load-gdk.c
===================================================================
--- trunk/plugins/load-gdk/load-gdk.c   2011-02-19 12:09:40 UTC (rev 3817)
+++ trunk/plugins/load-gdk/load-gdk.c   2011-02-19 13:51:39 UTC (rev 3818)
@@ -75,10 +75,12 @@
        return response;
 }
 
-static void
+/* We don't load actual metadata, but we will keep this as a low priority 
fallback */
+static gboolean
 rs_gdk_load_meta(const gchar *service, RAWFILE *rawfile, guint offset, 
RSMetadata *meta)
 {
        meta->thumbnail = gdk_pixbuf_new_from_file_at_size(service, 128, 128, 
NULL);
+       return TRUE;
 }
 
 G_MODULE_EXPORT void

Modified: trunk/plugins/meta-ciff/ciff-meta.c
===================================================================
--- trunk/plugins/meta-ciff/ciff-meta.c 2011-02-19 12:09:40 UTC (rev 3817)
+++ trunk/plugins/meta-ciff/ciff-meta.c 2011-02-19 13:51:39 UTC (rev 3818)
@@ -214,7 +214,7 @@
        return(TRUE);
 }
 
-static void
+static gboolean
 ciff_load_meta(const gchar *service, RAWFILE *rawfile, guint offset, 
RSMetadata *meta)
 {
        guint root=0;
@@ -224,7 +224,7 @@
 
        raw_init_file_tiff(rawfile, offset);
        if (!raw_strcmp(rawfile, 6, "HEAPCCDR", 8))
-               return;
+               return FALSE;
        raw_get_uint(rawfile, 2, &root);
        raw_crw_walker(rawfile, root, raw_get_filesize(rawfile)-root, meta);
 
@@ -266,7 +266,9 @@
                                break;
                }
                meta->thumbnail = pixbuf;
+               return TRUE;
        }
+       return FALSE;
 }
 
 G_MODULE_EXPORT void

Modified: trunk/plugins/meta-mrw/mrw-meta.c
===================================================================
--- trunk/plugins/meta-mrw/mrw-meta.c   2011-02-19 12:09:40 UTC (rev 3817)
+++ trunk/plugins/meta-mrw/mrw-meta.c   2011-02-19 13:51:39 UTC (rev 3818)
@@ -64,7 +64,7 @@
        return;
 }
 
-static void
+static gboolean
 mrw_load_meta(const gchar *service, RAWFILE *rawfile, guint offset, RSMetadata 
*meta)
 {
        GdkPixbuf *pixbuf=NULL, *pixbuf2=NULL;
@@ -101,7 +101,7 @@
                gdk_pixbuf_loader_close(pl, NULL);
                g_free(thumbbuffer);
                
-               if (pixbuf==NULL) return;
+               if (pixbuf==NULL) return TRUE;
                ratio = ((gdouble) gdk_pixbuf_get_width(pixbuf))/((gdouble) 
gdk_pixbuf_get_height(pixbuf));
                if (ratio>1.0)
                        pixbuf2 = gdk_pixbuf_scale_simple(pixbuf, 128, (gint) 
(128.0/ratio), GDK_INTERP_BILINEAR);
@@ -125,8 +125,7 @@
                }
                meta->thumbnail = pixbuf;
        }
-
-       return;
+       return TRUE;
 }
 
 G_MODULE_EXPORT void

Modified: trunk/plugins/meta-raf/raf-meta.c
===================================================================
--- trunk/plugins/meta-raf/raf-meta.c   2011-02-19 12:09:40 UTC (rev 3817)
+++ trunk/plugins/meta-raf/raf-meta.c   2011-02-19 13:51:39 UTC (rev 3818)
@@ -21,10 +21,10 @@
 #include <gtk/gtk.h>
 #include <math.h>
 
-void rs_raf_load_meta(const gchar *service, RAWFILE *rawfile, guint offset, 
RSMetadata *meta);
+gboolean rs_raf_load_meta(const gchar *service, RAWFILE *rawfile, guint 
offset, RSMetadata *meta);
 GdkPixbuf *rs_raf_load_thumb(RAWFILE *rawfile);
 
-void
+gboolean
 rs_raf_load_meta(const gchar *service, RAWFILE *rawfile, guint offset, 
RSMetadata *meta)
 {
        guint directory;
@@ -69,7 +69,9 @@
                }
                meta->thumbnail = rs_raf_load_thumb(rawfile);
                rs_filetype_meta_load(".tiff", meta, rawfile, 
meta->preview_start+12);
+               return TRUE;
        }
+       return FALSE;
 }
 
 GdkPixbuf *

Modified: trunk/plugins/meta-tiff/tiff-meta.c
===================================================================
--- trunk/plugins/meta-tiff/tiff-meta.c 2011-02-19 12:09:40 UTC (rev 3817)
+++ trunk/plugins/meta-tiff/tiff-meta.c 2011-02-19 13:51:39 UTC (rev 3818)
@@ -1651,7 +1651,7 @@
 /**
  * Generic TIFF reader
  */
-static void
+static gboolean
 tiff_load_meta(const gchar *service, RAWFILE *rawfile, guint offset, 
RSMetadata *meta)
 {
        guint next = 0;
@@ -1694,16 +1694,18 @@
        } while (next>0);
 
        rs_metadata_normalize_wb(meta);
+       return !!meta->make;
 }
 
 /**
  * .TIF reader
  */
-static void
+static gboolean
 tif_load_meta(const gchar *service, RAWFILE *rawfile, guint offset, RSMetadata 
*meta)
 {
 
-       tiff_load_meta(service, rawfile, offset, meta);
+       if (!tiff_load_meta(service, rawfile, offset, meta))
+               return FALSE;
 
        /* Phase One and Samsung doesn't set this */
        if ((meta->make == MAKE_PHASEONE) || (meta->make == MAKE_SAMSUNG))
@@ -1713,6 +1715,8 @@
        if (!thumbnail_reader(service, rawfile, meta->thumbnail_start, 
meta->thumbnail_length, meta))
                if (!thumbnail_reader(service, rawfile, meta->preview_start, 
meta->preview_length, meta))
                        thumbnail_store(raw_thumbnail_reader(service, meta), 
meta);
+
+       return TRUE;
 }
 
 static gboolean
@@ -1851,7 +1855,7 @@
        return pixbuf;
 }
 
-static void
+static gboolean
 sony_load_meta(const gchar *service, RAWFILE *rawfile, guint offset, 
RSMetadata *meta)
 {
        SonyMeta sony;
@@ -1861,8 +1865,9 @@
        meta->make = MAKE_SONY;
 
        memcpy(&sony, meta, sizeof(RSMetadata));
-       tif_load_meta(service, rawfile, offset, RS_METADATA(&sony));
+       gboolean ret = tif_load_meta(service, rawfile, offset, 
RS_METADATA(&sony));
        memcpy(meta, &sony, sizeof(RSMetadata));
+       return ret;
 }
 
 G_MODULE_EXPORT void

Modified: trunk/plugins/meta-x3f/x3f-meta.c
===================================================================
--- trunk/plugins/meta-x3f/x3f-meta.c   2011-02-19 12:09:40 UTC (rev 3817)
+++ trunk/plugins/meta-x3f/x3f-meta.c   2011-02-19 13:51:39 UTC (rev 3818)
@@ -108,7 +108,7 @@
        guint value_offset; /* offset from start of CHARACTER data */
 } __attribute__ ((packed)) X3F_PROPERTY_ENTRY;
 
-static void
+static gboolean
 x3f_load_meta(const gchar *service, RAWFILE *rawfile, guint offset, RSMetadata 
*meta)
 {
        gint i;
@@ -123,8 +123,7 @@
        /* Check if this is infact a Sigma-file */
        if (!raw_strcmp(rawfile, G_STRUCT_OFFSET(X3F_FILE, identifier), "FOVb", 
4))
        {
-               raw_close_file(rawfile);
-               return;
+               return FALSE;
        }
 
        raw_set_byteorder(rawfile, 0x4949); /* x3f is always little endian */
@@ -291,6 +290,7 @@
                g_object_unref(pixbuf);
                meta->thumbnail = pixbuf2;
        }
+       return TRUE;
 }
 
 G_MODULE_EXPORT void


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

Reply via email to