diff options
Diffstat (limited to 'src/client/client.cpp')
-rw-r--r-- | src/client/client.cpp | 29 |
1 files changed, 14 insertions, 15 deletions
diff --git a/src/client/client.cpp b/src/client/client.cpp index 04686c43c..27b0ca852 100644 --- a/src/client/client.cpp +++ b/src/client/client.cpp @@ -111,7 +111,7 @@ Client::Client( m_sound(sound), m_event(event), m_rendering_engine(rendering_engine), - m_mesh_update_thread(this), + m_mesh_update_manager(this), m_env( new ClientMap(this, rendering_engine, control, 666), tsrc, this @@ -312,7 +312,7 @@ void Client::Stop() if (m_mods_loaded) m_script->on_shutdown(); //request all client managed threads to stop - m_mesh_update_thread.stop(); + m_mesh_update_manager.stop(); // Save local server map if (m_localdb) { infostream << "Local map saving ended." << std::endl; @@ -325,7 +325,7 @@ void Client::Stop() bool Client::isShutdown() { - return m_shutdown || !m_mesh_update_thread.isRunning(); + return m_shutdown || !m_mesh_update_manager.isRunning(); } Client::~Client() @@ -335,13 +335,12 @@ Client::~Client() deleteAuthData(); - m_mesh_update_thread.stop(); - m_mesh_update_thread.wait(); - while (!m_mesh_update_thread.m_queue_out.empty()) { - MeshUpdateResult r = m_mesh_update_thread.m_queue_out.pop_frontNoEx(); + m_mesh_update_manager.stop(); + m_mesh_update_manager.wait(); + + MeshUpdateResult r; + while (m_mesh_update_manager.getNextResult(r)) delete r.mesh; - } - delete m_inventory_from_server; @@ -547,14 +546,14 @@ void Client::step(float dtime) int num_processed_meshes = 0; std::vector<v3s16> blocks_to_ack; bool force_update_shadows = false; - while (!m_mesh_update_thread.m_queue_out.empty()) + MeshUpdateResult r; + while (m_mesh_update_manager.getNextResult(r)) { num_processed_meshes++; MinimapMapblock *minimap_mapblock = NULL; bool do_mapper_update = true; - MeshUpdateResult r = m_mesh_update_thread.m_queue_out.pop_frontNoEx(); MapBlock *block = m_env.getMap().getBlockNoCreateNoEx(r.p); if (block) { // Delete the old mesh @@ -1655,12 +1654,12 @@ void Client::addUpdateMeshTask(v3s16 p, bool ack_to_server, bool urgent) if (b == NULL) return; - m_mesh_update_thread.updateBlock(&m_env.getMap(), p, ack_to_server, urgent); + m_mesh_update_manager.updateBlock(&m_env.getMap(), p, ack_to_server, urgent); } void Client::addUpdateMeshTaskWithEdge(v3s16 blockpos, bool ack_to_server, bool urgent) { - m_mesh_update_thread.updateBlock(&m_env.getMap(), blockpos, ack_to_server, urgent, true); + m_mesh_update_manager.updateBlock(&m_env.getMap(), blockpos, ack_to_server, urgent, true); } void Client::addUpdateMeshTaskForNode(v3s16 nodepos, bool ack_to_server, bool urgent) @@ -1674,7 +1673,7 @@ void Client::addUpdateMeshTaskForNode(v3s16 nodepos, bool ack_to_server, bool ur v3s16 blockpos = getNodeBlockPos(nodepos); v3s16 blockpos_relative = blockpos * MAP_BLOCKSIZE; - m_mesh_update_thread.updateBlock(&m_env.getMap(), blockpos, ack_to_server, urgent, false); + m_mesh_update_manager.updateBlock(&m_env.getMap(), blockpos, ack_to_server, urgent, false); // Leading edge if (nodepos.X == blockpos_relative.X) addUpdateMeshTask(blockpos + v3s16(-1, 0, 0), false, urgent); @@ -1793,7 +1792,7 @@ void Client::afterContentReceived() // Start mesh update thread after setting up content definitions infostream<<"- Starting mesh update thread"<<std::endl; - m_mesh_update_thread.start(); + m_mesh_update_manager.start(); m_state = LC_Ready; sendReady(); |