diff --git a/loader/include/Geode/loader/Event.hpp b/loader/include/Geode/loader/Event.hpp index 8054640b..601817b5 100644 --- a/loader/include/Geode/loader/Event.hpp +++ b/loader/include/Geode/loader/Event.hpp @@ -17,6 +17,8 @@ namespace geode { struct GEODE_DLL BasicEventHandler { virtual PassThrough passThrough(Event*) = 0; + virtual ~BasicEventHandler(); + void listen(); void unlisten(); }; diff --git a/loader/src/load/Event.cpp b/loader/src/load/Event.cpp index 73a78f3c..3baa2ec9 100644 --- a/loader/src/load/Event.cpp +++ b/loader/src/load/Event.cpp @@ -13,6 +13,10 @@ void BasicEventHandler::unlisten() { Event::s_handlers.erase(this); } +BasicEventHandler::~BasicEventHandler() { + this->unlisten(); +} + Event::~Event() {} void Event::postFrom(Mod* m) { diff --git a/loader/src/utils/cocos.cpp b/loader/src/utils/cocos.cpp index cd614159..539b6c16 100644 --- a/loader/src/utils/cocos.cpp +++ b/loader/src/utils/cocos.cpp @@ -118,7 +118,13 @@ void geode::cocos::reloadTextures(CreateLayerFunc returnTo) { } class $modify(LoadingLayer) { - void loadingFinished() { + void loadAssets() { + // loadFinished is inlined on Macchew OS :sob: + + if (m_loadStep < 14) { + return LoadingLayer::loadAssets(); + } + // Default behaviour if (!LOADING_FINISHED_SCENE) { return LoadingLayer::loadingFinished();