Fixes #6401: Reload Lv2 plugin on SR change

This also includes banning blop's wavedata plugins, because they crash
on reloading. Reference: https://gitlab.com/drobilla/blop-lv2/-/issues/3
This commit is contained in:
Johannes Lorenz
2022-06-04 23:11:04 +02:00
committed by Johannes Lorenz
parent 7649f5ed24
commit f48dd0fb1f
13 changed files with 168 additions and 41 deletions

View File

@@ -77,6 +77,9 @@ public:
static Plugin::PluginTypes check(const LilvPlugin* m_plugin,
std::vector<PluginIssue> &issues);
void shutdown();
void init(Model* meAsModel);
const LilvPlugin* getPlugin() const { return m_plugin; }
Lv2Proc *control(std::size_t idx) { return m_procs[idx].get(); }
@@ -95,6 +98,7 @@ protected:
Lv2ControlBase(class Model *that, const QString& uri);
Lv2ControlBase(const Lv2ControlBase&) = delete;
~Lv2ControlBase() override;
void reload();
Lv2ControlBase& operator=(const Lv2ControlBase&) = delete;
@@ -129,8 +133,6 @@ protected:
void saveSettings(QDomDocument &doc, QDomElement &that);
void loadSettings(const QDomElement &that);
void loadFile(const QString &file);
//! TODO: not implemented
void reloadPlugin();
/*
more functions that must be called from virtuals

View File

@@ -69,6 +69,8 @@ public:
{
return m_featurePointers.data();
}
//! Clear everything
void clear();
private:
//! feature storage

View File

@@ -68,10 +68,12 @@ public:
std::vector<PluginIssue> &issues);
/*
ctor/dtor
ctor/dtor/reload
*/
Lv2Proc(const LilvPlugin* plugin, Model *parent);
~Lv2Proc() override;
void reload();
void onSampleRateChanged();
//! Must be checked after ctor or reload
bool isValid() const { return m_valid; }