Skip to content

Commit

Permalink
#5977: Add reloadDecarations() to IDeclarationManager interface
Browse files Browse the repository at this point in the history
  • Loading branch information
codereader committed Jun 19, 2022
1 parent c4f2bbb commit 38ed7f2
Show file tree
Hide file tree
Showing 4 changed files with 14 additions and 2 deletions.
3 changes: 3 additions & 0 deletions include/ideclmanager.h
Expand Up @@ -103,6 +103,9 @@ class IDeclarationManager :
// Iterate over all known declarations, using the given visitor
virtual void foreachDeclaration(Type type, const std::function<void(const IDeclaration&)>& functor) = 0;

// Re-load all declarations from any changed files
virtual void reloadDecarations() = 0;

// Signal emitted when the decls of the given type have been (re-)loaded
virtual sigc::signal<void>& signal_DeclsReloaded(Type type) = 0;
};
Expand Down
3 changes: 1 addition & 2 deletions plugins/sound/SoundManager.cpp
Expand Up @@ -194,8 +194,7 @@ float SoundManager::getSoundFileDuration(const std::string& vfsPath)

void SoundManager::reloadSounds()
{
// TODO _defLoader.reset();
// TODO _defLoader.start();
GlobalDeclarationManager().reloadDecarations();
}

void SoundManager::reloadSoundsCmd(const cmd::ArgumentList& args)
Expand Down
9 changes: 9 additions & 0 deletions radiantcore/decl/DeclarationManager.cpp
Expand Up @@ -103,6 +103,11 @@ void DeclarationManager::doWithDeclarations(Type type, const std::function<void(
action(decls->second.decls);
}

void DeclarationManager::reloadDecarations()
{
// TODO
}

sigc::signal<void>& DeclarationManager::signal_DeclsReloaded(Type type)
{
return _declsReloadedSignals.try_emplace(type).first->second;
Expand Down Expand Up @@ -217,7 +222,11 @@ void DeclarationManager::shutdownModule()
parsersToFinish.clear(); // might block if parsers are running

// All parsers have finished, clear the structure, no need to lock anything
_registeredFolders.clear();
_unrecognisedBlocks.clear();
_declarationsByType.clear();
_parsersByTypename.clear();
_declsReloadedSignals.clear();
}

module::StaticModuleRegistration<DeclarationManager> _declManagerModule;
Expand Down
1 change: 1 addition & 0 deletions radiantcore/decl/DeclarationManager.h
Expand Up @@ -50,6 +50,7 @@ class DeclarationManager :
IDeclaration::Ptr findDeclaration(Type type, const std::string& name) override;
void foreachDeclaration(Type type, const std::function<void(const IDeclaration&)>& functor) override;
sigc::signal<void>& signal_DeclsReloaded(Type type) override;
void reloadDecarations() override;

const std::string& getName() const override;
const StringSet& getDependencies() const override;
Expand Down

0 comments on commit 38ed7f2

Please sign in to comment.