Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions framework/audioplugins/iknownaudiopluginsregister.h
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ class IKnownAudioPluginsRegister : MODULE_GLOBAL_INTERFACE
virtual ~IKnownAudioPluginsRegister() = default;

virtual Ret load() = 0;
virtual Ret clear() = 0;

using PluginInfoAccepted = std::function<bool (const AudioPluginInfo& info)>;

Expand Down
11 changes: 11 additions & 0 deletions framework/audioplugins/internal/knownaudiopluginsregister.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -204,6 +204,17 @@ Ret KnownAudioPluginsRegister::load()
return muse::make_ok();
}

Ret KnownAudioPluginsRegister::clear()
{
m_pluginInfoMap.clear();
m_pluginPaths.clear();

Ret ret = writePluginsInfo();
m_pluginInfoListChanged.notify();

return ret;
}
Comment thread
RomanPudashkin marked this conversation as resolved.

AudioPluginInfoList KnownAudioPluginsRegister::pluginInfoList(PluginInfoAccepted accepted) const
{
if (!accepted) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ class KnownAudioPluginsRegister : public IKnownAudioPluginsRegister
KnownAudioPluginsRegister() = default;

Ret load() override;
Ret clear() override;

AudioPluginInfoList pluginInfoList(PluginInfoAccepted accepted = PluginInfoAccepted()) const override;
muse::async::Notification pluginInfoListChanged() const override;
Expand Down
13 changes: 13 additions & 0 deletions framework/audioplugins/internal/registeraudiopluginsscenario.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -152,6 +152,19 @@ PluginScanResult RegisterAudioPluginsScenario::scanPlugins(Progress* progress) c
return result;
}

Ret RegisterAudioPluginsScenario::rescanAllPlugins()
{
TRACEFUNC;

Ret ret = knownPluginsRegister()->clear();
if (!ret) {
LOGE() << "Failed to clear plugins registry: " << ret.toString();
return ret;
}

return updatePluginsRegistry();
}

Ret RegisterAudioPluginsScenario::updatePluginsRegistry()
{
TRACEFUNC;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,8 @@ class RegisterAudioPluginsScenario : public IRegisterAudioPluginsScenario, publi
PluginScanResult scanPlugins(Progress* progress = nullptr) const override;

Ret updatePluginsRegistry() override;
Ret rescanAllPlugins() override;

Ret registerNewPlugins(const io::paths_t& pluginPaths, bool validate) override;
Ret unregisterRemovedPlugins(const PluginResourceIdList& pluginIds) override;

Expand Down
2 changes: 2 additions & 0 deletions framework/audioplugins/iregisteraudiopluginsscenario.h
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,8 @@ class IRegisterAudioPluginsScenario : MODULE_CONTEXT_INTERFACE
virtual PluginScanResult scanPlugins(Progress* progress = nullptr) const = 0;

virtual Ret updatePluginsRegistry() = 0;
virtual Ret rescanAllPlugins() = 0;

// validate=false only persists Discovered placeholders, to be validated on the next scan
virtual Ret registerNewPlugins(const io::paths_t& pluginPaths, bool validate = true) = 0;
virtual Ret unregisterRemovedPlugins(const PluginResourceIdList& pluginIds) = 0;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ class KnownAudioPluginsRegisterMock : public IKnownAudioPluginsRegister
{
public:
MOCK_METHOD(Ret, load, (), (override));
MOCK_METHOD(Ret, clear, (), (override));

MOCK_METHOD(AudioPluginInfoList, pluginInfoList, (PluginInfoAccepted), (const, override));
MOCK_METHOD(async::Notification, pluginInfoListChanged, (), (const, override));
Expand Down
4 changes: 4 additions & 0 deletions framework/dockwindow/qml/Muse/Dock/dockpanelview.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,10 @@ class DockPanelView::DockPanelMenuModel : public muse::uicomponents::AbstractMen
connect(model, &AbstractMenuModel::itemChanged, this, [this](MenuItem* item) {
updateItem(item);
});

connect(model, &AbstractMenuModel::destroyed, this, [this]() {
m_customMenuModel = nullptr;
});
}

private:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -116,6 +116,10 @@ void LayoutWidget::restorePlaceholder(DockWidgetBase *dw, Layouting::Item *item,
auto frame = qobject_cast<Frame *>(item->guestAsQObject());
Q_ASSERT(frame);

if (frame->beingDeletedLater()) {
return;
}

if (tabIndex != -1 && frame->dockWidgetCount() >= tabIndex) {
frame->insertWidget(dw, tabIndex);
} else {
Expand Down
4 changes: 4 additions & 0 deletions framework/dockwindow_v2/qml/Muse/Dock/dockpanelview.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,10 @@ class DockPanelView::DockPanelMenuModel : public muse::uicomponents::AbstractMen
connect(model, &AbstractMenuModel::itemChanged, this, [this](MenuItem* item) {
updateItem(item);
});

connect(model, &AbstractMenuModel::destroyed, this, [this]() {
m_customMenuModel = nullptr;
});
}

private:
Expand Down