~ps-jenkins/mediascanner2/trusty-proposed

« back to all changes in this revision

Viewing changes to src/daemon/MetadataExtractor.cc

  • Committer: CI bot
  • Author(s): James Henstridge
  • Date: 2014-03-07 17:40:02 UTC
  • mfrom: (211.1.7 megamerge)
  • Revision ID: ps-jenkins@lists.canonical.com-20140307174002-udfe610ez85ixbik
Merge  lp:~jamesh/mediascanner2/qml-plugin,  lp:~jamesh/mediascanner2/short-searches,  lp:~jpakkane/mediascanner2/errmsg, lp:~jpakkane/mediascanner2/cleanshutdown,  lp:~jpakkane/mediascanner2/threadness and lp:~jamesh/mediascanner2/glib-main-loop 

Show diffs side-by-side

added added

removed removed

Lines of Context:
37
37
namespace mediascanner {
38
38
 
39
39
struct MetadataExtractorPrivate {
40
 
    std::unique_ptr<GstDiscoverer,void(*)(void *)> discoverer;
 
40
    std::unique_ptr<GstDiscoverer, decltype(&g_object_unref)> discoverer;
41
41
    MetadataExtractorPrivate() : discoverer(nullptr, g_object_unref) {};
42
42
};
43
43
 
44
44
MetadataExtractor::MetadataExtractor(int seconds) {
45
45
    p = new MetadataExtractorPrivate();
46
 
    GError *error = NULL;
 
46
    GError *error = nullptr;
47
47
 
48
48
    p->discoverer.reset(gst_discoverer_new(GST_SECOND * seconds, &error));
49
49
    if (not p->discoverer) {
50
50
        string errortxt(error->message);
51
51
        g_error_free(error);
 
52
        delete(p);
52
53
 
53
54
        string msg = "Failed to create discoverer: ";
54
55
        msg += errortxt;
55
56
        throw runtime_error(msg);
56
57
    }
 
58
    if (error) {
 
59
        // Sometimes this is filled in even though no error happens.
 
60
        g_error_free(error);
 
61
    }
57
62
}
58
63
 
59
64
MetadataExtractor::~MetadataExtractor() {
161
166
        msg += errortxt;
162
167
        throw runtime_error(msg);
163
168
    }
 
169
    if (error) {
 
170
        // Sometimes this gets filled in even if no error actually occurs.
 
171
        g_error_free(error);
 
172
        error = nullptr;
 
173
    }
164
174
 
165
175
    if (gst_discoverer_info_get_result(info.get()) != GST_DISCOVERER_OK) {
166
176
        throw runtime_error("Unable to discover file " + d.filename);