From 98b3a8fbf1d78f22ad565f3d71dd68519a6fffda Mon Sep 17 00:00:00 2001 From: ConfiG Date: Sat, 13 Jan 2024 00:49:42 +0300 Subject: [PATCH] remove some funcs from Loader --- loader/include/Geode/loader/Loader.hpp | 27 ++-------------- loader/src/hooks/LoadingLayer.cpp | 4 +-- loader/src/load.cpp | 2 +- loader/src/loader/Loader.cpp | 44 +++----------------------- loader/src/loader/LoaderImpl.cpp | 28 +++++----------- loader/src/loader/LoaderImpl.hpp | 11 +++---- 6 files changed, 22 insertions(+), 94 deletions(-) diff --git a/loader/include/Geode/loader/Loader.hpp b/loader/include/Geode/loader/Loader.hpp index 575edbea..8d1b09b1 100644 --- a/loader/include/Geode/loader/Loader.hpp +++ b/loader/include/Geode/loader/Loader.hpp @@ -49,16 +49,9 @@ namespace geode { ~Loader(); protected: - void createDirectories(); - - void updateModResources(Mod* mod); - void addSearchPaths(); - Mod* takeNextMod(); public: - // TODO: do we want to expose all of these functions? - static Loader* get(); enum class LoadingState : uint8_t { @@ -74,9 +67,8 @@ namespace geode { bool isForwardCompatMode(); - // TODO: return void - Result<> saveData(); - Result<> loadData(); + void saveData(); + void loadData(); VersionInfo getVersion(); VersionInfo minModVersion(); @@ -91,25 +83,10 @@ namespace geode { std::vector getAllMods(); std::vector getProblems() const; - void updateResources(); - void updateResources(bool forceReload); - void queueInMainThread(ScheduledFunction func); - void waitForModsToBeLoaded(); - - /** - * Open the platform-specific external console (if one exists) - */ - void openPlatformConsole(); - /** - * Close the platform-specific external console (if one exists) - */ - void closePlatformConsole(); bool didLastLaunchCrash() const; - bool userTriedToLoadDLLs() const; - friend class LoaderImpl; friend Mod* takeNextLoaderMod(); diff --git a/loader/src/hooks/LoadingLayer.cpp b/loader/src/hooks/LoadingLayer.cpp index 161f1bc3..34a88ab1 100644 --- a/loader/src/hooks/LoadingLayer.cpp +++ b/loader/src/hooks/LoadingLayer.cpp @@ -132,7 +132,7 @@ struct CustomLoadingLayer : Modify { void setupModResources() { log::debug("Loading mod resources"); this->setSmallText("Loading mod resources"); - Loader::get()->updateResources(true); + LoaderImpl::get()->updateResources(true); this->continueLoadAssets(); } @@ -220,7 +220,7 @@ struct FallbackCustomLoadingLayer : Modify // TODO: verify loader resources on fallback? - Loader::get()->updateResources(true); + LoaderImpl::get()->updateResources(true); return true; } diff --git a/loader/src/load.cpp b/loader/src/load.cpp index 5d15cda4..1bb1ca93 100644 --- a/loader/src/load.cpp +++ b/loader/src/load.cpp @@ -106,7 +106,7 @@ int geodeEntry(void* platformData) { if (LoaderImpl::get()->isForwardCompatMode() || Mod::get()->getSettingValue("show-platform-console")) { log::debug("Opening console"); - Loader::get()->openPlatformConsole(); + LoaderImpl::get()->openPlatformConsole(); } // set up loader, load mods, etc. diff --git a/loader/src/loader/Loader.cpp b/loader/src/loader/Loader.cpp index 72d5d849..3f95e839 100644 --- a/loader/src/loader/Loader.cpp +++ b/loader/src/loader/Loader.cpp @@ -1,3 +1,5 @@ +#include + #include "LoaderImpl.hpp" using namespace geode::prelude; @@ -15,23 +17,11 @@ bool Loader::isForwardCompatMode() { return m_impl->isForwardCompatMode(); } -void Loader::createDirectories() { - return m_impl->createDirectories(); -} - -void Loader::updateModResources(Mod* mod) { - return m_impl->updateModResources(mod); -} - -void Loader::addSearchPaths() { - return m_impl->addSearchPaths(); -} - -Result<> Loader::saveData() { +void Loader::saveData() { return m_impl->saveData(); } -Result<> Loader::loadData() { +void Loader::loadData() { return m_impl->loadData(); } @@ -79,28 +69,8 @@ std::vector Loader::getProblems() const { return m_impl->getProblems(); } -void Loader::updateResources() { - return m_impl->updateResources(); -} - -void Loader::updateResources(bool forceReload) { - return m_impl->updateResources(forceReload); -} - void Loader::queueInMainThread(ScheduledFunction func) { - return m_impl->queueInMainThread(func); -} - -void Loader::waitForModsToBeLoaded() { - return m_impl->waitForModsToBeLoaded(); -} - -void Loader::openPlatformConsole() { - return m_impl->openPlatformConsole(); -} - -void Loader::closePlatformConsole() { - return m_impl->closePlatformConsole(); + return m_impl->queueInMainThread(std::move(func)); } bool Loader::didLastLaunchCrash() const { @@ -110,7 +80,3 @@ bool Loader::didLastLaunchCrash() const { Mod* Loader::takeNextMod() { return m_impl->takeNextMod(); } - -bool Loader::userTriedToLoadDLLs() const { - return m_impl->userTriedToLoadDLLs(); -} diff --git a/loader/src/loader/LoaderImpl.cpp b/loader/src/loader/LoaderImpl.cpp index a24eebd0..cbba3531 100644 --- a/loader/src/loader/LoaderImpl.cpp +++ b/loader/src/loader/LoaderImpl.cpp @@ -105,10 +105,6 @@ void Loader::Impl::addSearchPaths() { CCFileUtils::get()->addPriorityPath(dirs::getModRuntimeDir().string().c_str()); } -void Loader::Impl::updateResources() { - this->updateResources(true); -} - void Loader::Impl::updateResources(bool forceReload) { log::debug("Adding resources"); log::pushNest(); @@ -154,7 +150,7 @@ bool Loader::Impl::isModVersionSupported(VersionInfo const& version) { // Data saving -Result<> Loader::Impl::saveData() { +void Loader::Impl::saveData() { for (auto& [id, mod] : m_mods) { log::debug("{}", mod->getID()); log::pushNest(); @@ -164,10 +160,9 @@ Result<> Loader::Impl::saveData() { } log::popNest(); } - return Ok(); } -Result<> Loader::Impl::loadData() { +void Loader::Impl::loadData() { for (auto& [_, mod] : m_mods) { log::debug("{}", mod->getID()); log::pushNest(); @@ -177,7 +172,6 @@ Result<> Loader::Impl::loadData() { } log::popNest(); } - return Ok(); } // Mod loading @@ -669,12 +663,6 @@ std::vector Loader::Impl::getProblems() const { return m_problems; } -void Loader::Impl::waitForModsToBeLoaded() { - log::debug("Waiting for mods to be loaded..."); - // genius - log::warn("waitForModsToBeLoaded() does not wait for mods to be loaded!"); -} - bool Loader::Impl::didLastLaunchCrash() const { return crashlog::didLastLaunchCrash(); } @@ -713,17 +701,17 @@ bool Loader::Impl::loadHooks() { } void Loader::Impl::queueInMainThread(ScheduledFunction func) { - std::lock_guard lock(m_gdThreadMutex); - m_gdThreadQueue.push_back(func); + std::lock_guard lock(m_mainThreadMutex); + m_mainThreadQueue.push_back(func); } void Loader::Impl::executeGDThreadQueue() { // copy queue to avoid locking mutex if someone is // running addToGDThread inside their function - m_gdThreadMutex.lock(); - auto queue = m_gdThreadQueue; - m_gdThreadQueue.clear(); - m_gdThreadMutex.unlock(); + m_mainThreadMutex.lock(); + auto queue = m_mainThreadQueue; + m_mainThreadQueue.clear(); + m_mainThreadMutex.unlock(); // call queue for (auto const& func : queue) { diff --git a/loader/src/loader/LoaderImpl.hpp b/loader/src/loader/LoaderImpl.hpp index e9627f66..624d13cc 100644 --- a/loader/src/loader/LoaderImpl.hpp +++ b/loader/src/loader/LoaderImpl.hpp @@ -73,8 +73,8 @@ namespace geode { LoadingState m_loadingState; - std::vector> m_gdThreadQueue; - mutable std::mutex m_gdThreadMutex; + std::vector> m_mainThreadQueue; + mutable std::mutex m_mainThreadMutex; std::vector> m_uninitializedHooks; bool m_readyToHook = false; @@ -132,8 +132,8 @@ namespace geode { Result<> setup(); void forceReset(); - Result<> saveData(); - Result<> loadData(); + void saveData(); + void loadData(); VersionInfo getVersion(); VersionInfo minModVersion(); @@ -155,11 +155,8 @@ namespace geode { std::vector getAllMods(); std::vector getProblems() const; - void updateResources(); void updateResources(bool forceReload); - void waitForModsToBeLoaded(); - bool didLastLaunchCrash() const; matjson::Value processRawIPC(void* rawHandle, std::string const& buffer);