diff options
author | narroo <narroo@vt.edu> | 2014-02-11 02:00:07 +0100 |
---|---|---|
committer | narroo <narroo@vt.edu> | 2014-02-11 02:00:07 +0100 |
commit | e8e76a6058988cb0cff222579049fb6aa3cdb9c1 (patch) | |
tree | 4f808fb359e91ab315a95a1d5b9161d092774bc0 /src | |
parent | Typo Fix in console.lua (diff) | |
download | cuberite-e8e76a6058988cb0cff222579049fb6aa3cdb9c1.tar cuberite-e8e76a6058988cb0cff222579049fb6aa3cdb9c1.tar.gz cuberite-e8e76a6058988cb0cff222579049fb6aa3cdb9c1.tar.bz2 cuberite-e8e76a6058988cb0cff222579049fb6aa3cdb9c1.tar.lz cuberite-e8e76a6058988cb0cff222579049fb6aa3cdb9c1.tar.xz cuberite-e8e76a6058988cb0cff222579049fb6aa3cdb9c1.tar.zst cuberite-e8e76a6058988cb0cff222579049fb6aa3cdb9c1.zip |
Diffstat (limited to 'src')
-rw-r--r-- | src/World.cpp | 10 | ||||
-rw-r--r-- | src/World.h | 16 |
2 files changed, 25 insertions, 1 deletions
diff --git a/src/World.cpp b/src/World.cpp index 662a9a4b8..9120f8d7d 100644 --- a/src/World.cpp +++ b/src/World.cpp @@ -2213,6 +2213,10 @@ void cWorld::UnloadUnusedChunks(void) } +void cWorld::QueueUnloadUnusedChunks(void) +{ + QueueTask(new cWorld::cTaskUnloadUnusedChunks); +} @@ -2966,7 +2970,13 @@ void cWorld::cTaskSaveAllChunks::Run(cWorld & a_World) } +/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// cWorld::cTaskUnloadUnusedChunks +void cWorld::cTaskUnloadUnusedChunks::Run(cWorld & a_World) +{ + a_World.UnloadUnusedChunks(); +} /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/src/World.h b/src/World.h index 0174be03b..e4036d8df 100644 --- a/src/World.h +++ b/src/World.h @@ -99,6 +99,15 @@ public: } ; + class cTaskUnloadUnusedChunks : + public cTask + { + protected: + // cTask overrides: + virtual void Run(cWorld & a_World) override; + }; + + static const char * GetClassStatic(void) // Needed for ManualBindings's ForEach templates { return "cWorld"; @@ -243,7 +252,12 @@ public: bool IsChunkValid (int a_ChunkX, int a_ChunkZ) const; bool HasChunkAnyClients(int a_ChunkX, int a_ChunkZ) const; - void UnloadUnusedChunks(void); // tolua_export + + /*Unloads all chunks immediately. Dangerous interface, may deadlock, use QueueUnloadUnusedChunks() instead*/ + void UnloadUnusedChunks(void); + + /*Queues a task to unload unused chunks onto the tick thread. The prefferred way of unloading*/ + void QueueUnloadUnusedChunks(void); // tolua_export void CollectPickupsByPlayer(cPlayer * a_Player); |