summaryrefslogtreecommitdiffstats
path: root/src/server/BlockFactory.cpp
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2019-03-08 06:50:14 +0100
committerDavid Robillard <d@drobilla.net>2019-03-09 00:43:43 +0100
commit6bb3c48972d172fec244afae08a905e2246d9cda (patch)
tree8b4e2b0f22896a4b15cbfba9dfc0497a0586d4c8 /src/server/BlockFactory.cpp
parente4edf13d6ed0a3bc8cb6103d48b082e850949e4c (diff)
downloadingen-6bb3c48972d172fec244afae08a905e2246d9cda.tar.gz
ingen-6bb3c48972d172fec244afae08a905e2246d9cda.tar.bz2
ingen-6bb3c48972d172fec244afae08a905e2246d9cda.zip
Use smart pointers over manual memory management
Diffstat (limited to 'src/server/BlockFactory.cpp')
-rw-r--r--src/server/BlockFactory.cpp15
1 files changed, 5 insertions, 10 deletions
diff --git a/src/server/BlockFactory.cpp b/src/server/BlockFactory.cpp
index 105d60cf..02be5159 100644
--- a/src/server/BlockFactory.cpp
+++ b/src/server/BlockFactory.cpp
@@ -46,11 +46,6 @@ BlockFactory::BlockFactory(ingen::World& world)
BlockFactory::~BlockFactory()
{
- for (auto& p : _plugins) {
- delete p.second;
- }
-
- _plugins.clear();
}
const BlockFactory::Plugins&
@@ -64,12 +59,12 @@ BlockFactory::plugins()
return _plugins;
}
-std::set<PluginImpl*>
+std::set<SPtr<PluginImpl>>
BlockFactory::refresh()
{
// Record current plugins, and those that are currently zombies
- const Plugins old_plugins(_plugins);
- std::set<PluginImpl*> zombies;
+ const Plugins old_plugins(_plugins);
+ std::set<SPtr<PluginImpl>> zombies;
for (const auto& p : _plugins) {
if (p.second->is_zombie()) {
zombies.insert(p.second);
@@ -80,7 +75,7 @@ BlockFactory::refresh()
load_lv2_plugins();
// Add any new plugins to response
- std::set<PluginImpl*> new_plugins;
+ std::set<SPtr<PluginImpl>> new_plugins;
for (const auto& p : _plugins) {
auto o = old_plugins.find(p.first);
if (o == old_plugins.end()) {
@@ -103,7 +98,7 @@ BlockFactory::plugin(const URI& uri)
{
load_plugin(uri);
const Plugins::const_iterator i = _plugins.find(uri);
- return ((i != _plugins.end()) ? i->second : nullptr);
+ return ((i != _plugins.end()) ? i->second.get() : nullptr);
}
void