From 06a74e45e247a2d23c6b5a238a3c1b9b17b6c341 Mon Sep 17 00:00:00 2001 From: tycho Date: Sat, 30 May 2015 11:11:17 +0100 Subject: Made cLightingThread own its callbacks --- src/ChunkSender.cpp | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) (limited to 'src/ChunkSender.cpp') diff --git a/src/ChunkSender.cpp b/src/ChunkSender.cpp index 70b2e9101..2f18ea75c 100644 --- a/src/ChunkSender.cpp +++ b/src/ChunkSender.cpp @@ -21,10 +21,21 @@ //////////////////////////////////////////////////////////////////////////////// // cNotifyChunkSender: -void cNotifyChunkSender::Call(int a_ChunkX, int a_ChunkZ) + +/// Callback that can be used to notify chunk sender upon another chunkcoord notification +class cNotifyChunkSender : + public cChunkCoordCallback { - m_ChunkSender->ChunkReady(a_ChunkX, a_ChunkZ); -} + virtual void Call(int a_ChunkX, int a_ChunkZ) override + { + m_ChunkSender->ChunkReady(a_ChunkX, a_ChunkZ); + } + + cChunkSender * m_ChunkSender; +public: + cNotifyChunkSender(cChunkSender * a_ChunkSender) : m_ChunkSender(a_ChunkSender) {} +}; + @@ -36,10 +47,8 @@ void cNotifyChunkSender::Call(int a_ChunkX, int a_ChunkZ) cChunkSender::cChunkSender(void) : super("ChunkSender"), m_World(nullptr), - m_RemoveCount(0), - m_Notify(nullptr) + m_RemoveCount(0) { - m_Notify.SetChunkSender(this); } @@ -272,7 +281,7 @@ void cChunkSender::SendChunk(int a_ChunkX, int a_ChunkZ, cClientHandle * a_Clien // If the chunk is not lighted, queue it for relighting and get notified when it's ready: if (!m_World->IsChunkLighted(a_ChunkX, a_ChunkZ)) { - m_World->QueueLightChunk(a_ChunkX, a_ChunkZ, &m_Notify); + m_World->QueueLightChunk(a_ChunkX, a_ChunkZ, cpp14::make_unique(this)); return; } -- cgit v1.2.3