diff options
author | Andrei Karas <akaras@inbox.ru> | 2013-05-13 00:57:07 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2013-05-13 00:57:07 +0300 |
commit | 84a3ff2804a2df97a9b95d033b2c35de73271972 (patch) | |
tree | d880b4ebe54674c8f3280c3d698fd4b3b0955563 | |
parent | 68a06297d94c0a2780b0bbb4070813f931cdfc24 (diff) | |
download | mv-84a3ff2804a2df97a9b95d033b2c35de73271972.tar.gz mv-84a3ff2804a2df97a9b95d033b2c35de73271972.tar.bz2 mv-84a3ff2804a2df97a9b95d033b2c35de73271972.tar.xz mv-84a3ff2804a2df97a9b95d033b2c35de73271972.zip |
also clear resource cache if switching servers.
-rw-r--r-- | src/client.cpp | 4 | ||||
-rw-r--r-- | src/commands.cpp | 5 | ||||
-rw-r--r-- | src/resources/resourcemanager.cpp | 7 | ||||
-rw-r--r-- | src/resources/resourcemanager.h | 2 |
4 files changed, 13 insertions, 5 deletions
diff --git a/src/client.cpp b/src/client.cpp index 705670277..168dd3df9 100644 --- a/src/client.cpp +++ b/src/client.cpp @@ -1209,7 +1209,7 @@ int Client::gameExec() { BLOCK_START("Client::gameExec STATE_CHOOSE_SERVER") logger->log1("State: CHOOSE SERVER"); - const ResourceManager *const resman + ResourceManager *const resman = ResourceManager::getInstance(); if (mOptions.dataPath.empty()) { @@ -1235,6 +1235,8 @@ int Client::gameExec() + mUpdatesDir + "/local/"); } + resman->clearCache(); + loginData.clearUpdateHost(); serverVersion = 0; diff --git a/src/commands.cpp b/src/commands.cpp index 2421e63f4..ab2558e2c 100644 --- a/src/commands.cpp +++ b/src/commands.cpp @@ -359,10 +359,7 @@ impHandler0(clear) impHandler0(cleanGraphics) { - ResourceManager *const resman = ResourceManager::getInstance(); - resman->cleanProtected(); - while (resman->cleanOrphans(true)) - continue; + ResourceManager::getInstance()->clearCache(); if (debugChatTab) { diff --git a/src/resources/resourcemanager.cpp b/src/resources/resourcemanager.cpp index c8230550a..83beb8e9c 100644 --- a/src/resources/resourcemanager.cpp +++ b/src/resources/resourcemanager.cpp @@ -1151,3 +1151,10 @@ void ResourceManager::deleteFilesInDirectory(std::string path) if (dir) closedir(dir); } + +void ResourceManager::clearCache() +{ + cleanProtected(); + while (cleanOrphans(true)) + continue; +} diff --git a/src/resources/resourcemanager.h b/src/resources/resourcemanager.h index d45a4ba11..d56406bec 100644 --- a/src/resources/resourcemanager.h +++ b/src/resources/resourcemanager.h @@ -322,6 +322,8 @@ class ResourceManager final Resource *getTempResource(const std::string &idPath) A_WARN_UNUSED; + void clearCache(); + static void addDelayedAnimation(AnimationDelayLoad *const animation) { mDelayedAnimations.push_back(animation); } |