mirror of
https://github.com/nzp-team/fteqw.git
synced 2024-11-10 22:51:57 +00:00
a qtvplay bug fixed.
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@2815 fc73d0e0-1445-4013-8a0c-d673dee63da5
This commit is contained in:
parent
9d5b7f8d63
commit
5bfa1829d6
2 changed files with 42 additions and 12 deletions
|
@ -30,7 +30,12 @@ int cls_lasttype;
|
|||
void CL_PlayDemo(char *demoname);
|
||||
char lastdemoname[256];
|
||||
|
||||
extern cvar_t qtv_workaroundeztv;
|
||||
extern cvar_t qtvcl_forceversion1;
|
||||
|
||||
unsigned char demobuffer[1024*16];
|
||||
int demobuffersize;
|
||||
int demopreparsedbytes;
|
||||
qboolean disablepreparse;
|
||||
|
||||
#define BUFFERTIME 0.1
|
||||
/*
|
||||
|
@ -179,7 +184,11 @@ int demo_preparsedemo(unsigned char *buffer, int bytes)
|
|||
break;
|
||||
length = (buffer[ofs+0]<<0) + (buffer[ofs+1]<<8) + (buffer[ofs+2]<<16) + (buffer[ofs+3]<<24);
|
||||
if (length > MAX_OVERALLMSGLEN)
|
||||
{
|
||||
disablepreparse = true;
|
||||
Con_Printf("Error looking ahead at demo\n");
|
||||
return parsed;
|
||||
}
|
||||
ofs+=4;
|
||||
}
|
||||
else
|
||||
|
@ -207,9 +216,6 @@ int demo_preparsedemo(unsigned char *buffer, int bytes)
|
|||
return parsed;
|
||||
}
|
||||
|
||||
unsigned char demobuffer[1024*16];
|
||||
int demobuffersize;
|
||||
int demopreparsedbytes;
|
||||
int readdemobytes(int *readpos, void *data, int len)
|
||||
{
|
||||
int i;
|
||||
|
@ -232,6 +238,9 @@ int readdemobytes(int *readpos, void *data, int len)
|
|||
if (i > 0)
|
||||
{
|
||||
demobuffersize += i;
|
||||
if (disablepreparse)
|
||||
demopreparsedbytes = demobuffersize;
|
||||
else
|
||||
demopreparsedbytes += demo_preparsedemo(demobuffer+demopreparsedbytes, demobuffersize-demopreparsedbytes);
|
||||
}
|
||||
else if (i < 0)
|
||||
|
@ -1473,6 +1482,7 @@ vfsfile_t *qtvrequest;
|
|||
void CL_QTVPoll (void)
|
||||
{
|
||||
char *s, *e, *colon;
|
||||
char *tail = NULL;
|
||||
int len;
|
||||
qboolean streamavailable = false;
|
||||
qboolean saidheader = false;
|
||||
|
@ -1505,15 +1515,35 @@ void CL_QTVPoll (void)
|
|||
for (s = qtvrequestbuffer; *s; s++)
|
||||
{
|
||||
if (s[0] == '\n' && s[1] == '\n')
|
||||
{
|
||||
tail = s+2;
|
||||
break;
|
||||
}
|
||||
if (!*s)
|
||||
if (s[0] == '\r' && s[1] == '\n' && s[2] == '\r' && s[3] == '\n')
|
||||
{
|
||||
tail = s+4;
|
||||
break;
|
||||
}
|
||||
if (s[0] == '\r' && s[1] == '\n' && s[2] == '\n')
|
||||
{
|
||||
tail = s+3;
|
||||
break;
|
||||
}
|
||||
if (s[0] == '\n' && s[1] == '\r' && s[2] == '\n')
|
||||
{
|
||||
tail = s+3;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!tail)
|
||||
return;
|
||||
s[1] = '\0'; //make sure its null terminated before the data payload
|
||||
s = qtvrequestbuffer;
|
||||
for (e = s; *e; )
|
||||
{
|
||||
if (*e == '\n')
|
||||
if (*e == '\r')
|
||||
*e = '\0';
|
||||
else if (*e == '\n')
|
||||
{
|
||||
*e = '\0';
|
||||
colon = strchr(s, ':');
|
||||
|
@ -1610,7 +1640,7 @@ void CL_QTVPoll (void)
|
|||
{
|
||||
CL_QTVPlay(qtvrequest);
|
||||
qtvrequest = NULL;
|
||||
demo_resetcache(qtvrequestsize - (e-qtvrequestbuffer), e);
|
||||
demo_resetcache(qtvrequestsize - (tail-qtvrequestbuffer), tail);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -1725,7 +1755,7 @@ void CL_QTVPlay_f (void)
|
|||
else
|
||||
host = NULL;
|
||||
|
||||
if (qtv_workaroundeztv.value)
|
||||
if (qtvcl_forceversion1.value)
|
||||
{
|
||||
connrequest = "QTV\n"
|
||||
"VERSION: 1.0\n";
|
||||
|
@ -1784,7 +1814,7 @@ void CL_QTVList_f (void)
|
|||
return;
|
||||
}
|
||||
|
||||
if (qtv_workaroundeztv.value)
|
||||
if (qtvcl_forceversion1.value)
|
||||
{
|
||||
connrequest = "QTV\n"
|
||||
"VERSION: 1.0\n";
|
||||
|
|
|
@ -73,7 +73,7 @@ cvar_t cl_predict_players2 = SCVAR("cl_predict_players2", "1");
|
|||
cvar_t cl_solid_players = SCVAR("cl_solid_players", "1");
|
||||
cvar_t cl_noblink = SCVAR("cl_noblink", "0");
|
||||
cvar_t cl_servername = SCVAR("cl_servername", "none");
|
||||
cvar_t qtv_workaroundeztv = SCVAR("qtv_workaroundeztv", "0");
|
||||
cvar_t qtvcl_forceversion1 = SCVAR("qtvcl_forceversion1", "0");
|
||||
|
||||
cvar_t cl_demospeed = FCVAR("cl_demospeed", "demo_setspeed", "1", 0);
|
||||
|
||||
|
@ -2904,7 +2904,7 @@ void CL_Init (void)
|
|||
Cvar_Register (&ruleset_allow_overlongsounds, cl_controlgroup);
|
||||
Cvar_Register (&ruleset_allow_larger_models, cl_controlgroup);
|
||||
|
||||
Cvar_Register (&qtv_workaroundeztv, cl_controlgroup);
|
||||
Cvar_Register (&qtvcl_forceversion1, cl_controlgroup);
|
||||
#ifdef WEBCLIENT
|
||||
Cmd_AddCommand ("ftp", CL_FTP_f);
|
||||
#endif
|
||||
|
|
Loading…
Reference in a new issue