diff plugin/PluginScan.cpp @ 1178:bf05d9259dbc pluginscan

First cut running (but not yet using output of, or recovering from errors in) the plugin checker at startup
author Chris Cannam
date Thu, 14 Apr 2016 12:12:04 +0100
parents
children 6b1af0f05f06
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/plugin/PluginScan.cpp	Thu Apr 14 12:12:04 2016 +0100
@@ -0,0 +1,89 @@
+/* -*- c-basic-offset: 4 indent-tabs-mode: nil -*-  vi:set ts=8 sts=4 sw=4: */
+
+/*
+    Sonic Visualiser
+    An audio file viewer and annotation editor.
+    Centre for Digital Music, Queen Mary, University of London.
+    
+    This program is free software; you can redistribute it and/or
+    modify it under the terms of the GNU General Public License as
+    published by the Free Software Foundation; either version 2 of the
+    License, or (at your option) any later version.  See the file
+    COPYING included with this distribution for more information.
+*/
+
+#include "PluginScan.h"
+
+#include "base/Debug.h"
+
+#include <QMutex>
+
+using std::string;
+
+PluginScan *PluginScan::getInstance() {
+    static QMutex mutex;
+    static PluginScan *m_instance = 0;
+    mutex.lock();
+    if (!m_instance) m_instance = new PluginScan();
+    mutex.unlock();
+    return m_instance;
+}
+
+PluginScan::PluginScan() : m_kp(0) {
+}
+
+PluginScan::~PluginScan() {
+    delete m_kp;
+}
+
+void
+PluginScan::log(string message)
+{
+    SVDEBUG << "PluginScan: " << message;
+}
+
+void
+PluginScan::scan()
+{
+    delete m_kp;
+    m_kp = new KnownPlugins("./helper", this); //!!!
+}
+
+QStringList
+PluginScan::getCandidateVampLibraries() const
+{
+    QStringList candidates;
+    if (!m_kp) return candidates;
+    auto c = m_kp->getCandidateLibrariesFor(KnownPlugins::VampPlugin);
+    for (auto s: c) candidates.push_back(s.c_str());
+    return candidates;
+}
+
+QStringList
+PluginScan::getCandidateLADSPALibraries() const
+{
+    QStringList candidates;
+    if (!m_kp) return candidates;
+    auto c = m_kp->getCandidateLibrariesFor(KnownPlugins::LADSPAPlugin);
+    for (auto s: c) candidates.push_back(s.c_str());
+    return candidates;
+}
+
+QStringList
+PluginScan::getCandidateDSSILibraries() const
+{
+    QStringList candidates;
+    if (!m_kp) return candidates;
+    auto c = m_kp->getCandidateLibrariesFor(KnownPlugins::DSSIPlugin);
+    for (auto s: c) candidates.push_back(s.c_str());
+    return candidates;
+}
+
+QString
+PluginScan::getStartupFailureReport() const
+{
+    if (!m_kp) return ""; //!!!???
+    string report = m_kp->getFailureReport();
+    return report.c_str(); //!!! wrap?
+}
+