mirror of
https://github.com/nzp-team/fteqw.git
synced 2024-11-25 05:11:35 +00:00
Fix a stupid bug with allow_download cvar.
Fix recursive errors from Sys_Error on worker threads. Fix shader parsing on worker thread with hlmdl. git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@5431 fc73d0e0-1445-4013-8a0c-d673dee63da5
This commit is contained in:
parent
5e7688a590
commit
f38a6264b8
12 changed files with 24 additions and 14 deletions
|
@ -346,6 +346,7 @@ void Sys_Error (const char *error, ...)
|
||||||
va_start (argptr, error);
|
va_start (argptr, error);
|
||||||
vsnprintf (string,sizeof(string)-1, error,argptr);
|
vsnprintf (string,sizeof(string)-1, error,argptr);
|
||||||
va_end (argptr);
|
va_end (argptr);
|
||||||
|
COM_WorkerAbort(string);
|
||||||
if (!*string)
|
if (!*string)
|
||||||
strcpy(string, "no error");
|
strcpy(string, "no error");
|
||||||
|
|
||||||
|
|
|
@ -422,6 +422,9 @@ void Sys_Error (const char *error, ...)
|
||||||
va_start (argptr,error);
|
va_start (argptr,error);
|
||||||
vsnprintf (string,sizeof(string)-1, error,argptr);
|
vsnprintf (string,sizeof(string)-1, error,argptr);
|
||||||
va_end (argptr);
|
va_end (argptr);
|
||||||
|
|
||||||
|
COM_WorkerAbort(string);
|
||||||
|
|
||||||
fprintf(stderr, "Error: %s\n", string);
|
fprintf(stderr, "Error: %s\n", string);
|
||||||
|
|
||||||
Host_Shutdown ();
|
Host_Shutdown ();
|
||||||
|
|
|
@ -38,6 +38,7 @@ void Sys_Error (const char *error, ...)
|
||||||
va_start (argptr,error);
|
va_start (argptr,error);
|
||||||
vsnprintf (string, sizeof (string), error, argptr);
|
vsnprintf (string, sizeof (string), error, argptr);
|
||||||
va_end (argptr);
|
va_end (argptr);
|
||||||
|
COM_WorkerAbort(string);
|
||||||
fprintf(stderr, "Error: %s\n", string);
|
fprintf(stderr, "Error: %s\n", string);
|
||||||
|
|
||||||
Sys_Printf ("Quake Error: %s\n", string);
|
Sys_Printf ("Quake Error: %s\n", string);
|
||||||
|
|
|
@ -35,6 +35,8 @@ unsigned int Sys_Milliseconds (void)
|
||||||
|
|
||||||
NORETURN void VARGS Sys_Error (const char *error, ...)
|
NORETURN void VARGS Sys_Error (const char *error, ...)
|
||||||
{
|
{
|
||||||
|
COM_WorkerAbort(error);
|
||||||
|
|
||||||
//FIXME: panic! everyone panic!
|
//FIXME: panic! everyone panic!
|
||||||
//you might want to figure out some way to display the message...
|
//you might want to figure out some way to display the message...
|
||||||
for(;;)
|
for(;;)
|
||||||
|
|
|
@ -336,18 +336,13 @@ qboolean QDECL Mod_LoadHLModel (model_t *mod, void *buffer, size_t fsize)
|
||||||
shader = HLSHADER_CHROME;
|
shader = HLSHADER_CHROME;
|
||||||
else
|
else
|
||||||
shader = "";
|
shader = "";
|
||||||
shaders[i].shader = R_RegisterShader(shaders[i].name, SUF_NONE, shader);
|
shaders[i].defaultshadertext = shader;
|
||||||
shaders[i].shader->defaulttextures->base = Image_GetTexture(shaders[i].name, "", IF_NOALPHA, (qbyte *) texheader + tex[i].offset, (qbyte *) texheader + tex[i].w * tex[i].h + tex[i].offset, tex[i].w, tex[i].h, TF_8PAL24);
|
|
||||||
shaders[i].shader->width = tex[i].w;
|
|
||||||
shaders[i].shader->height = tex[i].h;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
memset(&shaders[i].defaulttex, 0, sizeof(shaders[i].defaulttex));
|
|
||||||
shaders[i].defaulttex.base = Image_GetTexture(shaders[i].name, "", IF_NOALPHA, (qbyte *) texheader + tex[i].offset, (qbyte *) texheader + tex[i].w * tex[i].h + tex[i].offset, tex[i].w, tex[i].h, TF_8PAL24);
|
|
||||||
shaders[i].w = tex[i].w;
|
|
||||||
shaders[i].h = tex[i].h;
|
|
||||||
}
|
}
|
||||||
|
shaders[i].defaultshadertext = NULL;
|
||||||
|
memset(&shaders[i].defaulttex, 0, sizeof(shaders[i].defaulttex));
|
||||||
|
shaders[i].defaulttex.base = Image_GetTexture(shaders[i].name, "", IF_NOALPHA, (qbyte *) texheader + tex[i].offset, (qbyte *) texheader + tex[i].w * tex[i].h + tex[i].offset, tex[i].w, tex[i].h, TF_8PAL24);
|
||||||
|
shaders[i].w = tex[i].w;
|
||||||
|
shaders[i].h = tex[i].h;
|
||||||
}
|
}
|
||||||
|
|
||||||
model->numskinrefs = texheader->skinrefs;
|
model->numskinrefs = texheader->skinrefs;
|
||||||
|
@ -1320,7 +1315,10 @@ static void R_HalfLife_WalkMeshes(entity_t *rent, batch_t *b, batch_t **batches)
|
||||||
|
|
||||||
if (!s->shader)
|
if (!s->shader)
|
||||||
{
|
{
|
||||||
s->shader = R_RegisterSkin(s->name, rent->model->name);
|
if (s->defaultshadertext)
|
||||||
|
s->shader = R_RegisterShader(s->name, SUF_NONE, s->defaultshadertext);
|
||||||
|
else
|
||||||
|
s->shader = R_RegisterSkin(s->name, rent->model->name);
|
||||||
R_BuildDefaultTexnums(&s->defaulttex, s->shader, 0);
|
R_BuildDefaultTexnums(&s->defaulttex, s->shader, 0);
|
||||||
}
|
}
|
||||||
b->skin = NULL;
|
b->skin = NULL;
|
||||||
|
|
|
@ -291,6 +291,7 @@ typedef struct //this is stored as the cache. an hlmodel_t is generated when dra
|
||||||
struct hlmodelshaders_s
|
struct hlmodelshaders_s
|
||||||
{
|
{
|
||||||
char name[MAX_QPATH];
|
char name[MAX_QPATH];
|
||||||
|
char *defaultshadertext;
|
||||||
texnums_t defaulttex;
|
texnums_t defaulttex;
|
||||||
shader_t *shader;
|
shader_t *shader;
|
||||||
int w, h;
|
int w, h;
|
||||||
|
|
|
@ -283,7 +283,7 @@ void COM_EnumerateFiles (const char *match, int (*func)(const char *, qofs_t, ti
|
||||||
HANDLE r;
|
HANDLE r;
|
||||||
WIN32_FIND_DATAA fd;
|
WIN32_FIND_DATAA fd;
|
||||||
char apath[MAX_OSPATH];
|
char apath[MAX_OSPATH];
|
||||||
char file[MAX_OSPATH];
|
char file[MAX_OSPATH+MAX_PATH];
|
||||||
char *s;
|
char *s;
|
||||||
int go;
|
int go;
|
||||||
strcpy(apath, match);
|
strcpy(apath, match);
|
||||||
|
|
|
@ -212,6 +212,7 @@ NORETURN void VARGS Sys_Error (const char *error, ...)
|
||||||
va_start (argptr, error);
|
va_start (argptr, error);
|
||||||
vsnprintf (string, sizeof(string)-1, error, argptr);
|
vsnprintf (string, sizeof(string)-1, error, argptr);
|
||||||
va_end (argptr);
|
va_end (argptr);
|
||||||
|
COM_WorkerAbort(string);
|
||||||
|
|
||||||
Sys_Printf("Sys_Error: %s", string);
|
Sys_Printf("Sys_Error: %s", string);
|
||||||
exit(1);
|
exit(1);
|
||||||
|
|
|
@ -81,7 +81,7 @@ extern cvar_t password;
|
||||||
#endif
|
#endif
|
||||||
cvar_t spectator_password = CVARF("spectator_password", "", CVAR_NOUNSAFEEXPAND); // password for entering as a sepctator
|
cvar_t spectator_password = CVARF("spectator_password", "", CVAR_NOUNSAFEEXPAND); // password for entering as a sepctator
|
||||||
|
|
||||||
cvar_t allow_download = CVARAD("allow_download", /*q3*/"sv_allowDownload", "1", "If 1, permits downloading. Set to 0 to unconditionally block *ALL* downloads.");
|
cvar_t allow_download = CVARAD("allow_download", "1", /*q3*/"sv_allowDownload", "If 1, permits downloading. Set to 0 to unconditionally block *ALL* downloads.");
|
||||||
cvar_t allow_download_skins = CVARD("allow_download_skins", "1", "0 blocks downloading of any file in the skins/ directory");
|
cvar_t allow_download_skins = CVARD("allow_download_skins", "1", "0 blocks downloading of any file in the skins/ directory");
|
||||||
cvar_t allow_download_models = CVARD("allow_download_models", "1", "0 blocks downloading of any file in the progs/ or models/ directory");
|
cvar_t allow_download_models = CVARD("allow_download_models", "1", "0 blocks downloading of any file in the progs/ or models/ directory");
|
||||||
cvar_t allow_download_sounds = CVARD("allow_download_sounds", "1", "0 blocks downloading of any file in the sound/ directory");
|
cvar_t allow_download_sounds = CVARD("allow_download_sounds", "1", "0 blocks downloading of any file in the sound/ directory");
|
||||||
|
|
|
@ -190,6 +190,7 @@ void Sys_Error (const char *error, ...)
|
||||||
va_start (argptr,error);
|
va_start (argptr,error);
|
||||||
vsnprintf (string,sizeof(string)-1, error,argptr);
|
vsnprintf (string,sizeof(string)-1, error,argptr);
|
||||||
va_end (argptr);
|
va_end (argptr);
|
||||||
|
COM_WorkerAbort(string);
|
||||||
printf ("Fatal error: %s\n",string);
|
printf ("Fatal error: %s\n",string);
|
||||||
|
|
||||||
tcsetattr(STDIN_FILENO, TCSADRAIN, &orig);
|
tcsetattr(STDIN_FILENO, TCSADRAIN, &orig);
|
||||||
|
|
|
@ -770,6 +770,7 @@ void Sys_Error (const char *error, ...)
|
||||||
va_start (argptr,error);
|
va_start (argptr,error);
|
||||||
vsnprintf (text,sizeof(text)-1, error,argptr);
|
vsnprintf (text,sizeof(text)-1, error,argptr);
|
||||||
va_end (argptr);
|
va_end (argptr);
|
||||||
|
COM_WorkerAbort(text);
|
||||||
|
|
||||||
|
|
||||||
// MessageBox(NULL, text, "Error", 0 /* MB_OK */ );
|
// MessageBox(NULL, text, "Error", 0 /* MB_OK */ );
|
||||||
|
|
|
@ -24,6 +24,7 @@ void Sys_Error (const char *error, ...)
|
||||||
va_start (argptr,error);
|
va_start (argptr,error);
|
||||||
vsnprintf (string, sizeof (string), error, argptr);
|
vsnprintf (string, sizeof (string), error, argptr);
|
||||||
va_end (argptr);
|
va_end (argptr);
|
||||||
|
COM_WorkerAbort(string);
|
||||||
Sys_Printf("Error: %s\n", string);
|
Sys_Printf("Error: %s\n", string);
|
||||||
|
|
||||||
Con_Print ("Quake Error: ");
|
Con_Print ("Quake Error: ");
|
||||||
|
|
Loading…
Reference in a new issue