Changeset - r22117:1e553607d20b
[Not reviewed]
master
0 3 0
michi_cc - 9 years ago 2015-05-17 19:49:35
michi_cc@openttd.org
(svn r27288) -Fix: Slow network content GUI in MSVC Debug builds due to repeated string resolving.
3 files changed with 20 insertions and 5 deletions:
0 comments (0 inline, 0 general)
src/network/network_content_gui.cpp
Show inline comments
 
@@ -304,6 +304,8 @@ class NetworkContentListWindow : public 
 
	uint filesize_sum;           ///< The sum of all selected file sizes
 
	Scrollbar *vscroll;          ///< Cache of the vertical scrollbar
 

	
 
	static char content_type_strs[CONTENT_TYPE_END][64]; ///< Cached strings for all content types.
 

	
 
	/** Search external websites for content */
 
	void OpenExternalSearch()
 
	{
 
@@ -401,11 +403,7 @@ class NetworkContentListWindow : public 
 
	{
 
		int r = 0;
 
		if ((*a)->type != (*b)->type) {
 
			char a_str[64];
 
			char b_str[64];
 
			GetString(a_str, STR_CONTENT_TYPE_BASE_GRAPHICS + (*a)->type - CONTENT_TYPE_BASE_GRAPHICS, lastof(a_str));
 
			GetString(b_str, STR_CONTENT_TYPE_BASE_GRAPHICS + (*b)->type - CONTENT_TYPE_BASE_GRAPHICS, lastof(b_str));
 
			r = strnatcmp(a_str, b_str);
 
			r = strnatcmp(content_type_strs[(*a)->type], content_type_strs[(*b)->type]);
 
		}
 
		if (r == 0) r = NameSorter(a, b);
 
		return r;
 
@@ -469,6 +467,7 @@ class NetworkContentListWindow : public 
 
		this->vscroll->ScrollTowards(this->list_pos);
 
	}
 

	
 
	friend void BuildContentTypeStringList();
 
public:
 
	/**
 
	 * Create the content list window.
 
@@ -968,6 +967,18 @@ NetworkContentListWindow::GUIContentList
 
	&TagNameFilter,
 
};
 

	
 
char NetworkContentListWindow::content_type_strs[CONTENT_TYPE_END][64];
 

	
 
/**
 
 * Build array of all strings corresponding to the content types.
 
 */
 
void BuildContentTypeStringList()
 
{
 
	for (int i = CONTENT_TYPE_BEGIN; i < CONTENT_TYPE_END; i++) {
 
		GetString(NetworkContentListWindow::content_type_strs[i], STR_CONTENT_TYPE_BASE_GRAPHICS + i - CONTENT_TYPE_BASE_GRAPHICS, lastof(NetworkContentListWindow::content_type_strs[i]));
 
	}
 
}
 

	
 
/** The widgets for the content list. */
 
static const NWidgetPart _nested_network_content_list_widgets[] = {
 
	NWidget(NWID_HORIZONTAL),
src/network/network_content_gui.h
Show inline comments
 
@@ -43,4 +43,6 @@ public:
 
	virtual void OnDownloadProgress(const ContentInfo *ci, int bytes);
 
};
 

	
 
void BuildContentTypeStringList();
 

	
 
#endif /* NETWORK_CONTENT_GUI_H */
src/strings.cpp
Show inline comments
 
@@ -35,6 +35,7 @@
 
#include "window_func.h"
 
#include "debug.h"
 
#include "game/game_text.hpp"
 
#include "network/network_content_gui.h"
 
#include <stack>
 

	
 
#include "table/strings.h"
 
@@ -1814,6 +1815,7 @@ bool ReadLanguagePack(const LanguageMeta
 
	SortIndustryTypes();
 
	BuildIndustriesLegend();
 
	SortNetworkLanguages();
 
	BuildContentTypeStringList();
 
	InvalidateWindowClassesData(WC_BUILD_VEHICLE);      // Build vehicle window.
 
	InvalidateWindowClassesData(WC_TRAINS_LIST);        // Train group window.
 
	InvalidateWindowClassesData(WC_ROADVEH_LIST);       // Road vehicle group window.
0 comments (0 inline, 0 general)