From cd8506527f516a14226747547a5a19a7aae85201 Mon Sep 17 00:00:00 2001 From: Tristan GREMONT Date: Wed, 23 Mar 2022 14:42:21 +0100 Subject: [PATCH 1/2] [add] handlerPath getter --- include/GraphicalAPI/GraphicalAPI.hpp | 1 + src/GraphicalAPI/GraphicalAPI.cpp | 11 +++++++++++ 2 files changed, 12 insertions(+) diff --git a/include/GraphicalAPI/GraphicalAPI.hpp b/include/GraphicalAPI/GraphicalAPI.hpp index 0736d217..22889679 100644 --- a/include/GraphicalAPI/GraphicalAPI.hpp +++ b/include/GraphicalAPI/GraphicalAPI.hpp @@ -86,6 +86,7 @@ namespace Polymorph static void reloadAPI(std::string newHandler); static void *getHandler(); + static std::string getHandlerPath() const; private: static void _unloadModules(); diff --git a/src/GraphicalAPI/GraphicalAPI.cpp b/src/GraphicalAPI/GraphicalAPI.cpp index 9ceffb82..28aa4ddc 100644 --- a/src/GraphicalAPI/GraphicalAPI.cpp +++ b/src/GraphicalAPI/GraphicalAPI.cpp @@ -87,10 +87,21 @@ void Polymorph::GraphicalAPI::reloadAPI(std::string newHandler) _instance->_d_display = loadSymbol("deleteDisplay"); _instance->_d_sprite = loadSymbol("destroySprite"); _instance->_d_text = loadSymbol("destroyText"); + _instance->_handlerPath = newHandler; _reloadModules(); } +std::string Polymorph::GraphicalAPI::getHandlerPath() +{ + if (!_instance) + { + Logger::log("No Graphic API handler available to reload.", Logger::MAJOR); + return ""; + } + return _instance->_handlerPath; +} + Polymorph::Text Polymorph::GraphicalAPI::createText(std::shared_ptr &data) { From 1ff220f01b77b418fc7a65a40de567cdf9bcd63b Mon Sep 17 00:00:00 2001 From: Tristan GREMONT Date: Wed, 23 Mar 2022 14:46:32 +0100 Subject: [PATCH 2/2] [add] throw when creating several GraphicalAPI objects --- src/GraphicalAPI/GraphicalAPI.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/GraphicalAPI/GraphicalAPI.cpp b/src/GraphicalAPI/GraphicalAPI.cpp index 28aa4ddc..cd6cf917 100644 --- a/src/GraphicalAPI/GraphicalAPI.cpp +++ b/src/GraphicalAPI/GraphicalAPI.cpp @@ -12,6 +12,8 @@ Polymorph::GraphicalAPI::GraphicalAPI(std::string handlerPath) { _handlerPath = handlerPath; + if (_instance != nullptr) + throw GraphicalException("Cannot create several Graphical API instance at once.", Logger::MAJOR); _instance = this; }