[ioquake3] 75/136: Fix filtering favorite servers in Team Arena UI
Simon McVittie
smcv at debian.org
Thu Jun 15 09:09:11 UTC 2017
This is an automated email from the git hooks/post-receive script.
smcv pushed a commit to branch debian/master
in repository ioquake3.
commit 6b5674e6bb493d09880776df10f81a7890ff72c6
Author: Zack Middleton <zack at cloemail.com>
Date: Thu Jun 1 15:54:41 2017 -0500
Fix filtering favorite servers in Team Arena UI
Filter favorite servers based on cached server info and new info
instead of only the cached info.
If cached server info is filtered out, don't add it to server list
but wait for getinfo response before marking server as invisible.
---
code/ui/ui_main.c | 26 ++++++++++++++++++--------
1 file changed, 18 insertions(+), 8 deletions(-)
diff --git a/code/ui/ui_main.c b/code/ui/ui_main.c
index 21cd6f0..d2370f6 100644
--- a/code/ui/ui_main.c
+++ b/code/ui/ui_main.c
@@ -3781,6 +3781,12 @@ static void UI_BuildServerDisplayList(int force) {
// get the ping for this server
ping = trap_LAN_GetServerPing(lanSource, i);
if (ping > 0 || ui_netSource.integer == UIAS_FAVORITES) {
+ // Remove favorite servers so they do not appear multiple times
+ // or appear when the cached server info was not filtered out
+ // but the new server info is filtered out.
+ if (ui_netSource.integer == UIAS_FAVORITES) {
+ UI_RemoveServerFromDisplayList(i);
+ }
trap_LAN_GetServerInfo(lanSource, i, info, MAX_STRING_CHARS);
@@ -3789,7 +3795,9 @@ static void UI_BuildServerDisplayList(int force) {
if (ui_browserShowEmpty.integer == 0) {
if (clients == 0) {
- trap_LAN_MarkServerVisible(lanSource, i, qfalse);
+ if (ping > 0) {
+ trap_LAN_MarkServerVisible(lanSource, i, qfalse);
+ }
continue;
}
}
@@ -3797,7 +3805,9 @@ static void UI_BuildServerDisplayList(int force) {
if (ui_browserShowFull.integer == 0) {
maxClients = atoi(Info_ValueForKey(info, "sv_maxclients"));
if (clients == maxClients) {
- trap_LAN_MarkServerVisible(lanSource, i, qfalse);
+ if (ping > 0) {
+ trap_LAN_MarkServerVisible(lanSource, i, qfalse);
+ }
continue;
}
}
@@ -3805,21 +3815,21 @@ static void UI_BuildServerDisplayList(int force) {
if (uiInfo.joinGameTypes[ui_joinGameType.integer].gtEnum != -1) {
game = atoi(Info_ValueForKey(info, "gametype"));
if (game != uiInfo.joinGameTypes[ui_joinGameType.integer].gtEnum) {
- trap_LAN_MarkServerVisible(lanSource, i, qfalse);
+ if (ping > 0) {
+ trap_LAN_MarkServerVisible(lanSource, i, qfalse);
+ }
continue;
}
}
if (ui_serverFilterType.integer > 0) {
if (Q_stricmp(Info_ValueForKey(info, "game"), serverFilters[ui_serverFilterType.integer].basedir) != 0) {
- trap_LAN_MarkServerVisible(lanSource, i, qfalse);
+ if (ping > 0) {
+ trap_LAN_MarkServerVisible(lanSource, i, qfalse);
+ }
continue;
}
}
- // make sure we never add a favorite server twice
- if (ui_netSource.integer == UIAS_FAVORITES) {
- UI_RemoveServerFromDisplayList(i);
- }
// insert the server into the list
UI_BinaryServerInsertion(i);
// done with this server
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-games/ioquake3.git
More information about the Pkg-games-commits
mailing list