I took the information that is_loaded could be correct from its description:

        /**
         * \return \c true if the game is completely loaded and running (or 
paused)
         * or \c false otherwise.
         */

Also, I had logging messages (which I removed before committing) in both 
branches, and while loading, it runs only once (per warehouse) into the 
alternative branch (is_loaded() returning false), and always when destroying a 
warehouse in game (either self, or by enemy), it uses the branch by is_loaded() 
returning true.

So yes, it *does* work.

In the cleanup_for_load() part the game is *not* really running. And in the 
cleanup part, when we come to Warehouse::clean, we "shortcut" the cleanup to 
just removing all workers regardless of their state.

My laptop is quite fast, but even I see the difference, but now, for proving, I 
just now measured it:

Loading the long-time savegame from the bug, measuring starting from OK at the 
load menu, until the game has fully appeared.
trunk: 35s
trunk, this change merged: 14s

Also, ending a game like this one takes much longer without the branch merged. 
You did find the right spot of slowness.

I think for more "generic computers" (not development machine) we can assume a 
difference of minutes here.
-- 
https://code.launchpad.net/~widelands-dev/widelands/bug1503949/+merge/274157
Your team Widelands Developers is subscribed to branch 
lp:~widelands-dev/widelands/bug1503949.

_______________________________________________
Mailing list: https://launchpad.net/~widelands-dev
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~widelands-dev
More help   : https://help.launchpad.net/ListHelp

Reply via email to