mirror of
https://github.com/rehlds/rehlds.git
synced 2025-02-27 14:01:18 +03:00
Merge pull request #383 from In-line/FixNetSleep_Timeout
Refactor NET_Sleep_Timeout
This commit is contained in:
commit
b9f88c1de8
@ -1053,17 +1053,12 @@ qboolean NET_QueuePacket(netsrc_t sock)
|
|||||||
|
|
||||||
DLL_EXPORT int NET_Sleep_Timeout(void)
|
DLL_EXPORT int NET_Sleep_Timeout(void)
|
||||||
{
|
{
|
||||||
fd_set fdset;
|
|
||||||
struct timeval tv;
|
|
||||||
int number;
|
|
||||||
int fps;
|
|
||||||
static int32 lasttime;
|
static int32 lasttime;
|
||||||
static int numFrames;
|
static int numFrames;
|
||||||
static int staggerFrames;
|
static int staggerFrames;
|
||||||
int32 curtime;
|
|
||||||
|
|
||||||
fps = (int)sys_ticrate.value;
|
int fps = (int)sys_ticrate.value;
|
||||||
curtime = (int)Sys_FloatTime();
|
int32 curtime = (int)Sys_FloatTime();
|
||||||
if (lasttime)
|
if (lasttime)
|
||||||
{
|
{
|
||||||
if (curtime - lasttime > 1)
|
if (curtime - lasttime > 1)
|
||||||
@ -1078,40 +1073,42 @@ DLL_EXPORT int NET_Sleep_Timeout(void)
|
|||||||
lasttime = curtime;
|
lasttime = curtime;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fd_set fdset;
|
||||||
FD_ZERO(&fdset);
|
FD_ZERO(&fdset);
|
||||||
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_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)
|
if (tv.tv_usec <= 0)
|
||||||
tv.tv_usec = 1;
|
tv.tv_usec = 1;
|
||||||
|
|
||||||
int res;
|
int res;
|
||||||
if (numFrames > 0 && numFrames % staggerFrames)
|
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);
|
res = select(number + 1, &fdset, 0, 0, &tv);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
Loading…
x
Reference in New Issue
Block a user