[rhythmbox] metadata: map errors from GstDiscoverer to RBMetaDataError codes



commit 2447525c51bbb5d95d15f27ea019009e525bdc4f
Author: Jonathan Matthew <jonathan d14n org>
Date:   Mon Jun 29 21:34:16 2015 +1000

    metadata: map errors from GstDiscoverer to RBMetaDataError codes
    
    Without this, the check in rhythmdb for ignoring small unidentifiable files
    doesn't work.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=751265

 metadata/rb-metadata-gst.c |   12 +++++++++++-
 1 files changed, 11 insertions(+), 1 deletions(-)
---
diff --git a/metadata/rb-metadata-gst.c b/metadata/rb-metadata-gst.c
index 4ae5d94..123f0a8 100644
--- a/metadata/rb-metadata-gst.c
+++ b/metadata/rb-metadata-gst.c
@@ -168,6 +168,7 @@ rb_metadata_load (RBMetaData *md, const char *uri, GError **error)
        GList *l;
        GstDiscoverer *discoverer;
        GstCaps *caps;
+       GError *gsterror = NULL;
 
        rb_metadata_reset (md);
 
@@ -175,7 +176,7 @@ rb_metadata_load (RBMetaData *md, const char *uri, GError **error)
        if (*error != NULL)
                return;
 
-       md->priv->info = gst_discoverer_discover_uri (discoverer, g_strdup (uri), error);
+       md->priv->info = gst_discoverer_discover_uri (discoverer, g_strdup (uri), &gsterror);
        g_object_unref (discoverer);
 
        /* figure out if we've got audio, non-audio, or video streams */
@@ -253,6 +254,15 @@ rb_metadata_load (RBMetaData *md, const char *uri, GError **error)
        default:
                g_assert_not_reached ();
        }
+
+       if (gsterror != NULL) {
+               int code = RB_METADATA_ERROR_GENERAL;
+               if (g_error_matches (gsterror, GST_STREAM_ERROR, GST_STREAM_ERROR_TYPE_NOT_FOUND)) {
+                       code = RB_METADATA_ERROR_UNRECOGNIZED;
+               }
+               *error = g_error_new_literal (RB_METADATA_ERROR, code, gsterror->message);
+               g_clear_error (&gsterror);
+       }
 }
 
 gboolean


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]