From 5068cb40ce437257b01234641779567531f132b1 Mon Sep 17 00:00:00 2001 From: PilzAdam Date: Sat, 11 May 2013 00:12:14 +0200 Subject: Fix memory leak: remove InventoryAction after sending and applying --- src/client.cpp | 3 +++ 1 file changed, 3 insertions(+) (limited to 'src/client.cpp') diff --git a/src/client.cpp b/src/client.cpp index 56505c66c..329496db7 100644 --- a/src/client.cpp +++ b/src/client.cpp @@ -2555,6 +2555,9 @@ void Client::inventoryAction(InventoryAction *a) Predict some local inventory changes */ a->clientApply(this, this); + + // Remove it + delete a; } ClientActiveObject * Client::getSelectedActiveObject( -- cgit v1.2.3 From bda62bd3bf7f41a25f2c6294ddc0ec144081e3ef Mon Sep 17 00:00:00 2001 From: Zeg9 Date: Sat, 11 May 2013 16:02:41 +0200 Subject: Add progress bar to item visuals preloading --- src/client.cpp | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) (limited to 'src/client.cpp') diff --git a/src/client.cpp b/src/client.cpp index 329496db7..929ed0eab 100644 --- a/src/client.cpp +++ b/src/client.cpp @@ -29,6 +29,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "mapblock.h" #include "settings.h" #include "profiler.h" +#include "gettext.h" #include "log.h" #include "nodemetadata.h" #include "nodedef.h" @@ -2804,7 +2805,10 @@ ClientEvent Client::getClientEvent() return m_client_event_queue.pop_front(); } -void Client::afterContentReceived() +void draw_load_screen(const std::wstring &text, + IrrlichtDevice* device, gui::IGUIFont* font, + float dtime=0 ,int percent=0, bool clouds=true); +void Client::afterContentReceived(IrrlichtDevice *device, gui::IGUIFont* font) { infostream<<"Client::afterContentReceived() started"<getBool("preload_item_visuals")) { verbosestream<<"Updating item textures and meshes"< names = m_itemdef->getAll(); + size_t size = names.size(); + size_t count = 0; + int percent = 0; for(std::set::const_iterator i = names.begin(); i != names.end(); ++i){ // Asking for these caches the result m_itemdef->getInventoryTexture(*i, this); m_itemdef->getWieldMesh(*i, this); + count++; + percent = count*100/size; + if (count%50 == 0) // only update every 50 item + draw_load_screen(text,device,font,0,percent); } + delete[] text; } // Start mesh update thread after setting up content definitions -- cgit v1.2.3