aboutsummaryrefslogtreecommitdiffstats
path: root/src/modules.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/modules.cpp')
-rw-r--r--src/modules.cpp9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/modules.cpp b/src/modules.cpp
index d0f4811e6..89022bd5f 100644
--- a/src/modules.cpp
+++ b/src/modules.cpp
@@ -36,13 +36,16 @@
static insp::intrusive_list<dynamic_reference_base>* dynrefs = nullptr;
-void dynamic_reference_base::reset_all()
+void dynamic_reference_base::reset_all(const std::string& stype)
{
if (!dynrefs)
return;
for (auto* dynref : *dynrefs)
- dynref->resolve();
+ {
+ if (stype.empty() || dynref->service_type == stype)
+ dynref->resolve();
+ }
}
Module::Module(int mprops, const std::string& mdesc)
@@ -766,7 +769,7 @@ void ModuleManager::AddReferent(const std::string& stype, const std::string& sna
(void*)service, stype, sname);
#endif
this->Services.emplace(std::make_pair(stype, sname), service);
- dynamic_reference_base::reset_all();
+ dynamic_reference_base::reset_all(stype);
}
void ModuleManager::DelReferent(ServiceProvider* service)