summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrubidium <rubidium@openttd.org>2009-04-15 20:37:00 +0000
committerrubidium <rubidium@openttd.org>2009-04-15 20:37:00 +0000
commitd04ebf2fa5a894f14430d9dc059167140589956f (patch)
tree733a4607c46d51bc86a86445fc533685e2b3329c
parent3061d70387f48a4687688b8dc8fa6e34f4a80b85 (diff)
downloadopenttd-d04ebf2fa5a894f14430d9dc059167140589956f.tar.xz
(svn r16065) -Fix: don't readd (and resolve) the last joined server each time the window gets repainted
-rw-r--r--src/network/core/address.h8
-rw-r--r--src/network/network_gui.cpp14
2 files changed, 12 insertions, 10 deletions
diff --git a/src/network/core/address.h b/src/network/core/address.h
index 212164c9d..863c43427 100644
--- a/src/network/core/address.h
+++ b/src/network/core/address.h
@@ -179,7 +179,7 @@ public:
* @param address the other address.
* @return < 0 if address is less, 0 if equal and > 0 if address is more
*/
- int CompareTo(NetworkAddress address)
+ int CompareTo(NetworkAddress &address)
{
int r = this->GetAddressLength() - address.GetAddressLength();
if (r == 0) r = this->address.ss_family - address.address.ss_family;
@@ -193,7 +193,7 @@ public:
* @param address the other address.
* @return true if both match.
*/
- bool operator == (NetworkAddress address)
+ bool operator == (NetworkAddress &address)
{
return this->CompareTo(address) == 0;
}
@@ -203,7 +203,7 @@ public:
* @param address the other address.
* @return true if both match.
*/
- bool operator == (NetworkAddress address) const
+ bool operator == (NetworkAddress &address) const
{
return const_cast<NetworkAddress*>(this)->CompareTo(address) == 0;
}
@@ -212,7 +212,7 @@ public:
* Compare the address of this class with the address of another.
* @param address the other address.
*/
- bool operator < (NetworkAddress address)
+ bool operator < (NetworkAddress &address)
{
return this->CompareTo(address) < 0;
}
diff --git a/src/network/network_gui.cpp b/src/network/network_gui.cpp
index 1aa201183..6f24c2aa9 100644
--- a/src/network/network_gui.cpp
+++ b/src/network/network_gui.cpp
@@ -120,10 +120,11 @@ protected:
/* Constants for sorting servers */
static GUIGameServerList::SortFunction * const sorter_funcs[];
- byte field; ///< selected text-field
- NetworkGameList *server; ///< selected server
- GUIGameServerList servers; ///< list with game servers.
- ServerListPosition list_pos; ///< position of the selected server
+ byte field; ///< selected text-field
+ NetworkGameList *server; ///< selected server
+ NetworkGameList *last_joined; ///< the last joined server
+ GUIGameServerList servers; ///< list with game servers.
+ ServerListPosition list_pos; ///< position of the selected server
/**
* (Re)build the network game list as its amount has changed because
@@ -337,6 +338,8 @@ public:
this->server = NULL;
this->list_pos = SLP_INVALID;
+ this->last_joined = NetworkGameListAddItem(NetworkAddress(_settings_client.network.last_host, _settings_client.network.last_port));
+
this->servers.SetListing(this->last_sorting);
this->servers.SetSortFuncs(this->sorter_funcs);
this->servers.ForceRebuild();
@@ -403,9 +406,8 @@ public:
y += NET_PRC__SIZE_OF_ROW;
}
- const NetworkGameList *last_joined = NetworkGameListAddItem(NetworkAddress(_settings_client.network.last_host, _settings_client.network.last_port));
/* Draw the last joined server, if any */
- if (last_joined != NULL) this->DrawServerLine(last_joined, y = this->widget[NGWW_LASTJOINED].top + 3, last_joined == sel);
+ if (this->last_joined != NULL) this->DrawServerLine(this->last_joined, y = this->widget[NGWW_LASTJOINED].top + 3, this->last_joined == sel);
/* Draw the right menu */
GfxFillRect(this->widget[NGWW_DETAILS].left + 1, 43, this->widget[NGWW_DETAILS].right - 1, 92, 157);