mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2025-02-12 01:24:54 +00:00
(svn r27288) -Fix: Slow network content GUI in MSVC Debug builds due to repeated string resolving.
This commit is contained in:
parent
514da346bd
commit
95cb7c8692
@ -304,6 +304,8 @@ class NetworkContentListWindow : public Window, ContentCallback {
|
|||||||
uint filesize_sum; ///< The sum of all selected file sizes
|
uint filesize_sum; ///< The sum of all selected file sizes
|
||||||
Scrollbar *vscroll; ///< Cache of the vertical scrollbar
|
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 */
|
/** Search external websites for content */
|
||||||
void OpenExternalSearch()
|
void OpenExternalSearch()
|
||||||
{
|
{
|
||||||
@ -401,11 +403,7 @@ class NetworkContentListWindow : public Window, ContentCallback {
|
|||||||
{
|
{
|
||||||
int r = 0;
|
int r = 0;
|
||||||
if ((*a)->type != (*b)->type) {
|
if ((*a)->type != (*b)->type) {
|
||||||
char a_str[64];
|
r = strnatcmp(content_type_strs[(*a)->type], content_type_strs[(*b)->type]);
|
||||||
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);
|
|
||||||
}
|
}
|
||||||
if (r == 0) r = NameSorter(a, b);
|
if (r == 0) r = NameSorter(a, b);
|
||||||
return r;
|
return r;
|
||||||
@ -469,6 +467,7 @@ class NetworkContentListWindow : public Window, ContentCallback {
|
|||||||
this->vscroll->ScrollTowards(this->list_pos);
|
this->vscroll->ScrollTowards(this->list_pos);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
friend void BuildContentTypeStringList();
|
||||||
public:
|
public:
|
||||||
/**
|
/**
|
||||||
* Create the content list window.
|
* Create the content list window.
|
||||||
@ -968,6 +967,18 @@ NetworkContentListWindow::GUIContentList::FilterFunction * const NetworkContentL
|
|||||||
&TagNameFilter,
|
&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. */
|
/** The widgets for the content list. */
|
||||||
static const NWidgetPart _nested_network_content_list_widgets[] = {
|
static const NWidgetPart _nested_network_content_list_widgets[] = {
|
||||||
NWidget(NWID_HORIZONTAL),
|
NWidget(NWID_HORIZONTAL),
|
||||||
|
@ -43,4 +43,6 @@ public:
|
|||||||
virtual void OnDownloadProgress(const ContentInfo *ci, int bytes);
|
virtual void OnDownloadProgress(const ContentInfo *ci, int bytes);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
void BuildContentTypeStringList();
|
||||||
|
|
||||||
#endif /* NETWORK_CONTENT_GUI_H */
|
#endif /* NETWORK_CONTENT_GUI_H */
|
||||||
|
@ -35,6 +35,7 @@
|
|||||||
#include "window_func.h"
|
#include "window_func.h"
|
||||||
#include "debug.h"
|
#include "debug.h"
|
||||||
#include "game/game_text.hpp"
|
#include "game/game_text.hpp"
|
||||||
|
#include "network/network_content_gui.h"
|
||||||
#include <stack>
|
#include <stack>
|
||||||
|
|
||||||
#include "table/strings.h"
|
#include "table/strings.h"
|
||||||
@ -1814,6 +1815,7 @@ bool ReadLanguagePack(const LanguageMetadata *lang)
|
|||||||
SortIndustryTypes();
|
SortIndustryTypes();
|
||||||
BuildIndustriesLegend();
|
BuildIndustriesLegend();
|
||||||
SortNetworkLanguages();
|
SortNetworkLanguages();
|
||||||
|
BuildContentTypeStringList();
|
||||||
InvalidateWindowClassesData(WC_BUILD_VEHICLE); // Build vehicle window.
|
InvalidateWindowClassesData(WC_BUILD_VEHICLE); // Build vehicle window.
|
||||||
InvalidateWindowClassesData(WC_TRAINS_LIST); // Train group window.
|
InvalidateWindowClassesData(WC_TRAINS_LIST); // Train group window.
|
||||||
InvalidateWindowClassesData(WC_ROADVEH_LIST); // Road vehicle group window.
|
InvalidateWindowClassesData(WC_ROADVEH_LIST); // Road vehicle group window.
|
||||||
|
Loading…
Reference in New Issue
Block a user