summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authornarroo <narroo@vt.edu>2014-02-11 02:00:07 +0100
committernarroo <narroo@vt.edu>2014-02-11 02:00:07 +0100
commite8e76a6058988cb0cff222579049fb6aa3cdb9c1 (patch)
tree4f808fb359e91ab315a95a1d5b9161d092774bc0 /src
parentTypo Fix in console.lua (diff)
downloadcuberite-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.cpp10
-rw-r--r--src/World.h16
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);