From 41d62afef063357e443369cc7c34fd512e7677a3 Mon Sep 17 00:00:00 2001 From: In-line Date: Mon, 27 Feb 2017 22:38:10 +0400 Subject: [PATCH 1/2] Refactor NET_Sleep_Timeout --- rehlds/engine/net_ws.cpp | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/rehlds/engine/net_ws.cpp b/rehlds/engine/net_ws.cpp index 5d5bf41..4c28e94 100644 --- a/rehlds/engine/net_ws.cpp +++ b/rehlds/engine/net_ws.cpp @@ -1053,17 +1053,12 @@ qboolean NET_QueuePacket(netsrc_t sock) DLL_EXPORT int NET_Sleep_Timeout(void) { - fd_set fdset; - struct timeval tv; - int number; - int fps; static int32 lasttime; static int numFrames; static int staggerFrames; - int32 curtime; - fps = (int)sys_ticrate.value; - curtime = (int)Sys_FloatTime(); + int fps = (int)sys_ticrate.value; + int32 curtime = (int)Sys_FloatTime(); if (lasttime) { if (curtime - lasttime > 1) @@ -1077,9 +1072,11 @@ DLL_EXPORT int NET_Sleep_Timeout(void) { lasttime = curtime; } - + + fd_set fdset; FD_ZERO(&fdset); - number = 0; + + int number = 0; for (int sock = 0; sock < 3; sock++) { @@ -1104,8 +1101,9 @@ DLL_EXPORT int NET_Sleep_Timeout(void) #endif // _WIN32 } + struct timeval tv; tv.tv_sec = 0; - tv.tv_usec = (1000 / fps) * 1000; // entirely bad code, later I will fix it completely + tv.tv_usec = (1000 / fps) * 1000; // TODO: entirely bad code, fix it completely if (tv.tv_usec <= 0) tv.tv_usec = 1; From 5d1a416b03a5bc5820fda34aeb7b87c44dc910ae Mon Sep 17 00:00:00 2001 From: In-line Date: Mon, 27 Feb 2017 22:41:17 +0400 Subject: [PATCH 2/2] Move max socket calculation to proper place --- rehlds/engine/net_ws.cpp | 49 ++++++++++++++++++++-------------------- 1 file changed, 24 insertions(+), 25 deletions(-) diff --git a/rehlds/engine/net_ws.cpp b/rehlds/engine/net_ws.cpp index 4c28e94..994bcb1 100644 --- a/rehlds/engine/net_ws.cpp +++ b/rehlds/engine/net_ws.cpp @@ -1076,31 +1076,6 @@ DLL_EXPORT int NET_Sleep_Timeout(void) fd_set fdset; FD_ZERO(&fdset); - int number = 0; - - for (int sock = 0; sock < 3; sock++) - { - SOCKET net_socket = ip_sockets[sock]; - if (net_socket != INV_SOCK) - { - FD_SET(net_socket, &fdset); - - if (number < net_socket) - number = net_socket; - } - -#ifdef _WIN32 - net_socket = ipx_sockets[sock]; - if (net_socket != INV_SOCK) - { - FD_SET(net_socket, &fdset); - - if (number < net_socket) - number = net_socket; - } -#endif // _WIN32 - } - struct timeval tv; tv.tv_sec = 0; tv.tv_usec = (1000 / fps) * 1000; // TODO: entirely bad code, fix it completely @@ -1110,6 +1085,30 @@ DLL_EXPORT int NET_Sleep_Timeout(void) int res; if (numFrames > 0 && numFrames % staggerFrames) { + int number = 0; + + for (int sock = 0; sock < 3; sock++) + { + SOCKET net_socket = ip_sockets[sock]; + if (net_socket != INV_SOCK) + { + FD_SET(net_socket, &fdset); + + if (number < net_socket) + number = net_socket; + } + +#ifdef _WIN32 + net_socket = ipx_sockets[sock]; + if (net_socket != INV_SOCK) + { + FD_SET(net_socket, &fdset); + + if (number < net_socket) + number = net_socket; + } +#endif // _WIN32 + } res = select(number + 1, &fdset, 0, 0, &tv); } else