From 8f528c7f95246b7839757c1e9862ad8067b62dc1 Mon Sep 17 00:00:00 2001 From: Nathan Date: Mon, 21 Apr 2025 11:53:08 -0500 Subject: [PATCH] reload lingering modules by name --- include/utils/App/App.h | 22 +++++++++++++++++----- include/utils/Module/Module.h | 7 +++---- modules/Ollama/src/Ollama.cpp | 5 ++++- 3 files changed, 24 insertions(+), 10 deletions(-) diff --git a/include/utils/App/App.h b/include/utils/App/App.h index 0bc6e23..e839766 100644 --- a/include/utils/App/App.h +++ b/include/utils/App/App.h @@ -138,9 +138,20 @@ namespace Archimedes { return create(Get(), h); } - virtual Module* load(std::string modulePath) { - Module* m = dynamicLoad(modulePath); - return load(m); + virtual Module* reload(std::string lib) { + + for(std::string s : runOrder) { + if(s == lib) { + return modules[lib]; + } + } + + return modules.find(lib) != modules.end() ? load(modules[lib]) : nullptr; + } + + virtual Module* load(std::string moduleNameOrPath) { + Module* m = reload(moduleNameOrPath); + return m != nullptr ? m : dynamicLoad(moduleNameOrPath); } virtual Module* load(Module* m) { @@ -157,11 +168,12 @@ namespace Archimedes { if(h) { dlclose(h); } - return nullptr; + return modules[*it]; } } - modules[*m] = m; + if(modules.find(*m) == modules.end()) + modules[*m] = m; for(auto it = runOrder.begin(); it != runOrder.end(); it++) { diff --git a/include/utils/Module/Module.h b/include/utils/Module/Module.h index 600c63e..cce4ad7 100644 --- a/include/utils/Module/Module.h +++ b/include/utils/Module/Module.h @@ -25,13 +25,13 @@ namespace Archimedes { virtual void run() {} virtual bool onEvent(const Event& e) { return false; } - virtual void onLoad() {}; + + virtual void onLoad() {} + virtual void onUnload() {} operator std::string() const { return name; } void* getHandle() { return handle; } - //std::any getData(std::string s) { return data[s.c_str()]; }; - protected: std::string name; @@ -42,7 +42,6 @@ namespace Archimedes { std::unordered_map> exts; std::unordered_map moduleInstances; - //std::unordered_map data; }; } diff --git a/modules/Ollama/src/Ollama.cpp b/modules/Ollama/src/Ollama.cpp index 1c04871..df6f35a 100644 --- a/modules/Ollama/src/Ollama.cpp +++ b/modules/Ollama/src/Ollama.cpp @@ -18,6 +18,9 @@ Ollama::~Ollama() { curl = nullptr; } curl_global_cleanup(); + + ImguiModule* im; { im = (ImguiModule*) moduleInstances[ImguiModule()]; } + im->releaseContext(ImGui::GetCurrentContext()); } } @@ -36,7 +39,7 @@ void Ollama::onLoad() { std::abort(); } - ImGui::SetCurrentContext(im->getContext()); + ImGui::SetCurrentContext(im->aquireContext()); curl_global_init(CURL_GLOBAL_ALL); curl = curl_easy_init();