diff --git a/source/glest_game/main/main.cpp b/source/glest_game/main/main.cpp index d18708a58..5a63bae45 100644 --- a/source/glest_game/main/main.cpp +++ b/source/glest_game/main/main.cpp @@ -4990,6 +4990,7 @@ __try { #endif initSpecialStrings(); + IRCThread::setGlobalCacheContainerName(GameConstants::ircClientCacheLookupKey); int result = glestMain(argc, argv); if(SystemFlags::VERBOSE_MODE_ENABLED) printf("In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__); diff --git a/source/shared_lib/include/platform/posix/ircclient.h b/source/shared_lib/include/platform/posix/ircclient.h index aae0aaaba..abc28064f 100644 --- a/source/shared_lib/include/platform/posix/ircclient.h +++ b/source/shared_lib/include/platform/posix/ircclient.h @@ -55,6 +55,7 @@ class IRCThread : public BaseThread public: static bool debugEnabled; protected: + static const char *globalCacheContainerName; std::vector argv; irc_session_t *ircSession; @@ -86,6 +87,8 @@ public: virtual void signalQuit(); virtual bool shutdownAndWait(); + static void setGlobalCacheContainerName(const char *name) { globalCacheContainerName = name; } + void setPlayerName(string value) { playerName = value; } string getPlayerName() const { return playerName; } diff --git a/source/shared_lib/sources/platform/posix/ircclient.cpp b/source/shared_lib/sources/platform/posix/ircclient.cpp index 51bf1bd47..559e1884f 100644 --- a/source/shared_lib/sources/platform/posix/ircclient.cpp +++ b/source/shared_lib/sources/platform/posix/ircclient.cpp @@ -13,6 +13,7 @@ #include "ircclient.h" #include "util.h" #include "platform_common.h" +#include "cache_manager.h" #if !defined(DISABLE_IRCCLIENT) @@ -35,6 +36,7 @@ using namespace Shared::PlatformCommon; namespace Shared { namespace PlatformCommon { +const char *IRCThread::globalCacheContainerName = NULL; const int IRC_SERVER_PORT = 6667; //bool IRCThread::debugEnabled = true; bool IRCThread::debugEnabled = false; @@ -697,6 +699,11 @@ void IRCThread::execute() { IRCThread::~IRCThread() { if(SystemFlags::VERBOSE_MODE_ENABLED) printf("In ~IRCThread() ...\n"); + + if(IRCThread::globalCacheContainerName != NULL) { + IRCThread * &ircClient = CacheManager::getCachedItem< IRCThread * >(IRCThread::globalCacheContainerName); + ircClient = NULL; + } } void normalizeNick(char *nick) {