fix some crashes and other annoying issues.
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@4659 fc73d0e0-1445-4013-8a0c-d673dee63da5
This commit is contained in:
parent
4c3cb29108
commit
c0f8c28e2c
12 changed files with 53 additions and 34 deletions
|
@ -671,8 +671,11 @@ menutext_t *MC_AddWhiteText(menu_t *menu, int lhs, int rhs, int y, const char *t
|
|||
n->common.posx = lhs;
|
||||
n->common.posy = y;
|
||||
n->common.width = (rhs && rightalign)?rhs-lhs:0;
|
||||
n->text = (char*)(n+1);
|
||||
strcpy((char*)(n+1), (text?text:""));
|
||||
if (text)
|
||||
{
|
||||
n->text = (char*)(n+1);
|
||||
strcpy((char*)(n+1), (text));
|
||||
}
|
||||
|
||||
n->common.next = menu->options;
|
||||
menu->options = (menuoption_t *)n;
|
||||
|
|
|
@ -464,6 +464,30 @@ void QCBUILTIN PF_soundlength (pubprogfuncs_t *prinst, struct globalvars_s *pr_g
|
|||
}
|
||||
}
|
||||
|
||||
qboolean M_Vid_GetMode(int num, int *w, int *h);
|
||||
//a bit pointless really
|
||||
void QCBUILTIN PF_cl_getresolution (pubprogfuncs_t *prinst, struct globalvars_s *pr_globals)
|
||||
{
|
||||
// extern cvar_t vid_fullscreen;
|
||||
float mode = G_FLOAT(OFS_PARM0);
|
||||
qboolean fixedmodes = (prinst->callargc >= 2)?!G_FLOAT(OFS_PARM1):false; //if true, we should return sane-sized modes suitable for a window... or the mod could make up its own, but whatever.
|
||||
float *ret = G_VECTOR(OFS_RETURN);
|
||||
int w, h;
|
||||
|
||||
w=h=0;
|
||||
if (mode == -1)
|
||||
{
|
||||
int bpp, rate;
|
||||
Sys_GetDesktopParameters(&w, &h, &bpp, &rate);
|
||||
}
|
||||
else
|
||||
M_Vid_GetMode(mode, &w, &h);
|
||||
|
||||
ret[0] = w;
|
||||
ret[1] = h;
|
||||
ret[2] = (w&&h)?1:0;
|
||||
}
|
||||
|
||||
#ifdef CL_MASTER
|
||||
#include "cl_master.h"
|
||||
|
||||
|
|
|
@ -4866,7 +4866,7 @@ static struct {
|
|||
{"callfunction", PF_callfunction, 605},
|
||||
{"writetofile", PF_writetofile, 606},
|
||||
{"isfunction", PF_isfunction, 607},
|
||||
{"parseentitydata", PF_parseentitydata, 608},
|
||||
{"getresolution", PF_cl_getresolution, 608},
|
||||
{"keynumtostring_menu", PF_cl_keynumtostring, 609}, //while present in dp's menuqc, dp doesn't actually support keynumtostring=609 in csqc. Which is probably a good thing because csqc would have 3 separate versions if it did.
|
||||
|
||||
{"findkeysforcommand_dp", PF_cl_findkeysforcommand, 610},
|
||||
|
|
|
@ -1005,24 +1005,6 @@ static void QCBUILTIN PF_menu_cvar_string (pubprogfuncs_t *prinst, struct global
|
|||
G_INT(OFS_RETURN) = (int)PR_SetString(prinst, cv->string);
|
||||
}
|
||||
|
||||
qboolean M_Vid_GetMode(int num, int *w, int *h);
|
||||
//a bit pointless really
|
||||
void QCBUILTIN PF_cl_getresolution (pubprogfuncs_t *prinst, struct globalvars_s *pr_globals)
|
||||
{
|
||||
// extern cvar_t vid_fullscreen;
|
||||
float mode = G_FLOAT(OFS_PARM0);
|
||||
// qboolean forfullscreen = (prinst->callargc >= 2)?G_FLOAT(OFS_PARM1):vid_fullscreen.ival;
|
||||
float *ret = G_VECTOR(OFS_RETURN);
|
||||
int w, h;
|
||||
|
||||
w=h=0;
|
||||
M_Vid_GetMode(mode, &w, &h);
|
||||
|
||||
ret[0] = w;
|
||||
ret[1] = h;
|
||||
ret[2] = 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -22,16 +22,16 @@ F11 will step through.
|
|||
#else
|
||||
#define editaddcr_default "0"
|
||||
#endif
|
||||
#if defined(ANDROID) || defined(SERVERONLY)
|
||||
//#if defined(ANDROID) || defined(SERVERONLY)
|
||||
#define debugger_default "0"
|
||||
#else
|
||||
#define debugger_default "1"
|
||||
#endif
|
||||
//#else
|
||||
//#define debugger_default "1"
|
||||
//#endif
|
||||
|
||||
static cvar_t editstripcr = CVARD("edit_stripcr", "1", "remove \\r from eols (on load)");
|
||||
static cvar_t editaddcr = CVARD("edit_addcr", editaddcr_default, "make sure that each line ends with a \\r (on save)");
|
||||
static cvar_t edittabspacing = CVARD("edit_tabsize", "4", "How wide tab alignment is");
|
||||
cvar_t pr_debugger = CVARAD("pr_debugger", debugger_default, "debugger", "When enabled, QC errors and debug events will enable step-by-step tracing.");
|
||||
cvar_t pr_debugger = CVARAFD("pr_debugger", debugger_default, "debugger", CVAR_SAVE, "When enabled, QC errors and debug events will enable step-by-step tracing.");
|
||||
extern cvar_t pr_sourcedir;
|
||||
|
||||
static pubprogfuncs_t *editprogfuncs;
|
||||
|
|
|
@ -150,6 +150,7 @@
|
|||
#define NET_ECONNRESET WSAECONNRESET
|
||||
#define NET_ECONNABORTED WSAECONNABORTED
|
||||
#define NET_ECONNREFUSED WSAECONNREFUSED
|
||||
#define NET_ETIMEDOUT WSAETIMEDOUT
|
||||
#define NET_ENOTCONN WSAENOTCONN
|
||||
#define NET_EACCES WSAEACCES
|
||||
#define NET_EADDRNOTAVAIL WSAEADDRNOTAVAIL
|
||||
|
@ -168,6 +169,7 @@
|
|||
#define NET_ECONNRESET ECONNRESET
|
||||
#define NET_ECONNABORTED ECONNABORTED
|
||||
#define NET_ECONNREFUSED ECONNREFUSED
|
||||
#define NET_ETIMEDOUT ETIMEDOUT
|
||||
#define NET_ENOTCONN ENOTCONN
|
||||
#define NET_EACCES EACCES
|
||||
#define NET_EADDRNOTAVAIL EADDRNOTAVAIL
|
||||
|
|
|
@ -343,6 +343,7 @@ void QCBUILTIN PF_R_PolygonEnd(pubprogfuncs_t *prinst, struct globalvars_s *pr_g
|
|||
#define PF_R_PolygonEnd PF_Fixme
|
||||
#endif
|
||||
|
||||
void QCBUILTIN PF_cl_getresolution (pubprogfuncs_t *prinst, struct globalvars_s *pr_globals);
|
||||
void QCBUILTIN PF_cl_gethostcachevalue (pubprogfuncs_t *prinst, struct globalvars_s *pr_globals);
|
||||
void QCBUILTIN PF_cl_gethostcachestring (pubprogfuncs_t *prinst, struct globalvars_s *pr_globals);
|
||||
void QCBUILTIN PF_cl_resethostcachemasks(pubprogfuncs_t *prinst, struct globalvars_s *pr_globals);
|
||||
|
|
|
@ -4421,7 +4421,7 @@ TRACE(("LoadBrushModel %i\n", __LINE__));
|
|||
|
||||
mod->radius = RadiusFromBounds (mod->mins, mod->maxs);
|
||||
|
||||
// mod->numleafs = bm->visleafs;
|
||||
mod->numvisleafs = bm->visleafs;
|
||||
|
||||
memset(&mod->batches, 0, sizeof(mod->batches));
|
||||
mod->vbos = NULL;
|
||||
|
|
|
@ -874,6 +874,7 @@ typedef struct model_s
|
|||
int numplanes;
|
||||
mplane_t *planes;
|
||||
|
||||
int numvisleafs;
|
||||
int numleafs; // number of visible leafs, not counting 0
|
||||
mleaf_t *leafs;
|
||||
|
||||
|
|
|
@ -449,7 +449,7 @@ static void SHM_BeginShadowMesh(dlight_t *dl, int type)
|
|||
unsigned int lb;
|
||||
sh_vertnum = 0;
|
||||
|
||||
lb = (cl.worldmodel->numleafs+7)/8;
|
||||
lb = (cl.worldmodel->numvisleafs+7)/8;
|
||||
if (!dl->die || !dl->key)
|
||||
{
|
||||
sh_shmesh = dl->worldshadowmesh;
|
||||
|
@ -978,7 +978,7 @@ static void SHM_MarkLeavesQ2(dlight_t *dl, unsigned char *lvis, unsigned char *v
|
|||
{
|
||||
//static
|
||||
//variation on mark leaves
|
||||
for (i=0,leaf=cl.worldmodel->leafs ; i<cl.worldmodel->numleafs ; i++, leaf++)
|
||||
for (i=0,leaf=cl.worldmodel->leafs ; i<cl.worldmodel->numvisleafs ; i++, leaf++)
|
||||
{
|
||||
cluster = leaf->cluster;
|
||||
if (cluster == -1)
|
||||
|
@ -1000,7 +1000,7 @@ static void SHM_MarkLeavesQ2(dlight_t *dl, unsigned char *lvis, unsigned char *v
|
|||
{
|
||||
//dynamic lights will be discarded after this frame anyway, so only include leafs that are visible
|
||||
//variation on mark leaves
|
||||
for (i=0,leaf=cl.worldmodel->leafs ; i<cl.worldmodel->numleafs ; i++, leaf++)
|
||||
for (i=0,leaf=cl.worldmodel->leafs ; i<cl.worldmodel->numvisleafs ; i++, leaf++)
|
||||
{
|
||||
cluster = leaf->cluster;
|
||||
if (cluster == -1)
|
||||
|
@ -1028,7 +1028,7 @@ static void SHM_MarkLeavesQ1(dlight_t *dl, unsigned char *lvis)
|
|||
sh_shadowframe++;
|
||||
|
||||
//variation on mark leaves
|
||||
for (i=0 ; i<cl.worldmodel->numleafs ; i++)
|
||||
for (i=0 ; i<cl.worldmodel->numvisleafs ; i++)
|
||||
{
|
||||
if (lvis[i>>3] & (1<<(i&7)))
|
||||
{
|
||||
|
@ -1514,7 +1514,7 @@ static qboolean Sh_VisOverlaps(qbyte *v1, qbyte *v2)
|
|||
int i, m;
|
||||
if (!v2)
|
||||
return false;
|
||||
m = (cl.worldmodel->numleafs+7)>>3;
|
||||
m = (cl.worldmodel->numvisleafs+7)>>3;
|
||||
|
||||
for (i=(m&~3) ; i<m ; i++)
|
||||
{
|
||||
|
@ -1536,7 +1536,7 @@ static qboolean Sh_VisOverlaps(qbyte *v1, qbyte *v2)
|
|||
static qboolean Sh_LeafInView(qbyte *lightvis, qbyte *vvis)
|
||||
{
|
||||
int i;
|
||||
int m = (cl.worldmodel->numleafs);
|
||||
int m = (cl.worldmodel->numvisleafs);
|
||||
mleaf_t *wl = cl.worldmodel->leafs;
|
||||
unsigned char lv;
|
||||
|
||||
|
|
|
@ -711,6 +711,9 @@ void HTTPDL_Establish(struct dl_download *dl)
|
|||
|
||||
//don't bother binding. its optional.
|
||||
|
||||
//FIXME: make the connect call with a non-blocking socket.
|
||||
//FIXME: use a vfsfile_t instead of a direct socket to support https
|
||||
|
||||
//not yet blocking.
|
||||
if (connect(con->sock, (struct sockaddr *)&serveraddr, addresssize) == -1)
|
||||
{
|
||||
|
@ -720,6 +723,9 @@ void HTTPDL_Establish(struct dl_download *dl)
|
|||
case NET_EACCES:
|
||||
Con_Printf("HTTP: connect(%s): access denied. Check firewall.\n", server);
|
||||
break;
|
||||
case NET_ETIMEDOUT:
|
||||
Con_Printf("HTTP: connect(%s): timed out.\n", server);
|
||||
break;
|
||||
default:
|
||||
Con_Printf("HTTP: connect(%s): %s", server, strerror(neterrno()));
|
||||
break;
|
||||
|
|
|
@ -1898,7 +1898,7 @@ qboolean Mod_LoadBrushModel (model_t *mod, void *buffer, size_t buffersize)
|
|||
VectorCopy (bm->maxs, mod->maxs);
|
||||
VectorCopy (bm->mins, mod->mins);
|
||||
|
||||
mod->numleafs = bm->visleafs;
|
||||
mod->numvisleafs = bm->visleafs;
|
||||
|
||||
if (i < mod->numsubmodels-1)
|
||||
{ // duplicate the basic information
|
||||
|
|
Loading…
Reference in a new issue