diff --git a/src/client/mesh_generator_thread.cpp b/src/client/mesh_generator_thread.cpp index 9f4d98aac..c1bd7388e 100644 --- a/src/client/mesh_generator_thread.cpp +++ b/src/client/mesh_generator_thread.cpp @@ -158,8 +158,7 @@ CachedMapBlockData* MeshUpdateQueue::cacheBlock(Map *map, v3s16 p, UpdateMode mo size_t *cache_hit_counter) { CachedMapBlockData *cached_block = nullptr; - std::map::iterator it = - m_cache.find(p); + auto it = m_cache.find(p); if (it != m_cache.end()) { cached_block = it->second; @@ -193,7 +192,7 @@ CachedMapBlockData* MeshUpdateQueue::cacheBlock(Map *map, v3s16 p, UpdateMode mo CachedMapBlockData* MeshUpdateQueue::getCachedBlock(const v3s16 &p) { - std::map::iterator it = m_cache.find(p); + auto it = m_cache.find(p); if (it != m_cache.end()) { return it->second; } @@ -250,12 +249,11 @@ void MeshUpdateQueue::cleanupCache() int t_now = time(0); - for (std::map::iterator it = m_cache.begin(); - it != m_cache.end(); ) { + for (auto it = m_cache.begin(); it != m_cache.end(); ) { CachedMapBlockData *cached_block = it->second; if (cached_block->refcount_from_queue == 0 && cached_block->last_used_timestamp < t_now - cache_seconds) { - m_cache.erase(it++); + it = m_cache.erase(it); delete cached_block; } else { ++it; diff --git a/src/client/mesh_generator_thread.h b/src/client/mesh_generator_thread.h index e48c8334d..552b2a9f0 100644 --- a/src/client/mesh_generator_thread.h +++ b/src/client/mesh_generator_thread.h @@ -21,6 +21,8 @@ with this program; if not, write to the Free Software Foundation, Inc., #include #include +#include +#include #include "mapblock_mesh.h" #include "threading/mutex_auto_lock.h" #include "util/thread.h" @@ -81,8 +83,8 @@ public: private: Client *m_client; std::vector m_queue; - std::set m_urgents; - std::map m_cache; + std::unordered_set m_urgents; + std::unordered_map m_cache; u64 m_next_cache_cleanup; // milliseconds std::mutex m_mutex;