mirror of
https://github.com/nzp-team/fteqw.git
synced 2024-11-10 14:42:13 +00:00
fix a mutex deadlock due to my dsound change.
allow the webgl port to directly accept an ip, making up the tcp:// and port part automagically. fix sdl dependencies slightly. git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@4305 fc73d0e0-1445-4013-8a0c-d673dee63da5
This commit is contained in:
parent
2632c351fd
commit
c0167628f2
9 changed files with 634 additions and 629 deletions
|
@ -564,29 +564,29 @@ void ClearBounds( vec3_t mins, vec3_t maxs );
|
|||
void AddPointToBounds( const vec3_t v, vec3_t mins, vec3_t maxs );
|
||||
|
||||
#if !defined( Q3_VM ) || ( defined( Q3_VM ) && defined( __Q3_VM_MATH ) )
|
||||
static ID_INLINE int VectorCompare( const vec3_t v1, const vec3_t v2 ) {
|
||||
ID_INLINE int VectorCompare( const vec3_t v1, const vec3_t v2 ) {
|
||||
if (v1[0] != v2[0] || v1[1] != v2[1] || v1[2] != v2[2]) {
|
||||
return 0;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
static ID_INLINE vec_t VectorLength( const vec3_t v ) {
|
||||
ID_INLINE vec_t VectorLength( const vec3_t v ) {
|
||||
return (vec_t)sqrt (v[0]*v[0] + v[1]*v[1] + v[2]*v[2]);
|
||||
}
|
||||
|
||||
static ID_INLINE vec_t VectorLengthSquared( const vec3_t v ) {
|
||||
ID_INLINE vec_t VectorLengthSquared( const vec3_t v ) {
|
||||
return (v[0]*v[0] + v[1]*v[1] + v[2]*v[2]);
|
||||
}
|
||||
|
||||
static ID_INLINE vec_t Distance( const vec3_t p1, const vec3_t p2 ) {
|
||||
ID_INLINE vec_t Distance( const vec3_t p1, const vec3_t p2 ) {
|
||||
vec3_t v;
|
||||
|
||||
VectorSubtract (p2, p1, v);
|
||||
return VectorLength( v );
|
||||
}
|
||||
|
||||
static ID_INLINE vec_t DistanceSquared( const vec3_t p1, const vec3_t p2 ) {
|
||||
ID_INLINE vec_t DistanceSquared( const vec3_t p1, const vec3_t p2 ) {
|
||||
vec3_t v;
|
||||
|
||||
VectorSubtract (p2, p1, v);
|
||||
|
@ -595,7 +595,7 @@ static ID_INLINE vec_t DistanceSquared( const vec3_t p1, const vec3_t p2 ) {
|
|||
|
||||
// fast vector normalize routine that does not check to make sure
|
||||
// that length != 0, nor does it return length, uses rsqrt approximation
|
||||
static ID_INLINE void VectorNormalizeFast( vec3_t v )
|
||||
ID_INLINE void VectorNormalizeFast( vec3_t v )
|
||||
{
|
||||
float ilength;
|
||||
|
||||
|
@ -606,13 +606,13 @@ static ID_INLINE void VectorNormalizeFast( vec3_t v )
|
|||
v[2] *= ilength;
|
||||
}
|
||||
|
||||
static ID_INLINE void VectorInverse( vec3_t v ){
|
||||
ID_INLINE void VectorInverse( vec3_t v ){
|
||||
v[0] = -v[0];
|
||||
v[1] = -v[1];
|
||||
v[2] = -v[2];
|
||||
}
|
||||
|
||||
static ID_INLINE void CrossProduct( const vec3_t v1, const vec3_t v2, vec3_t cross ) {
|
||||
ID_INLINE void CrossProduct( const vec3_t v1, const vec3_t v2, vec3_t cross ) {
|
||||
cross[0] = v1[1]*v2[2] - v1[2]*v2[1];
|
||||
cross[1] = v1[2]*v2[0] - v1[0]*v2[2];
|
||||
cross[2] = v1[0]*v2[1] - v1[1]*v2[0];
|
||||
|
|
|
@ -595,7 +595,7 @@ void R2D_Font_Callback(struct cvar_s *var, char *oldvalue)
|
|||
if (qrenderer == QR_NONE)
|
||||
return;
|
||||
|
||||
#ifdef _WIN32
|
||||
#if defined(_WIN32) && !defined(_SDL)
|
||||
if (!strcmp(var->string, "?"))
|
||||
{
|
||||
BOOL (APIENTRY *pChooseFontA)(LPCHOOSEFONTA) = NULL;
|
||||
|
|
|
@ -190,19 +190,17 @@ static void DSOUND_Shutdown (soundcardinfo_t *sc)
|
|||
DSOUND_Shutdown_Internal(sc);
|
||||
}
|
||||
|
||||
|
||||
const char *dsndcard;
|
||||
GUID FAR *dsndguid;
|
||||
int dsnd_guids;
|
||||
int aimedforguid;
|
||||
static BOOL (CALLBACK DSEnumCallback)(GUID FAR *guid, LPCSTR str1, LPCSTR str2, LPVOID parm)
|
||||
{
|
||||
soundcardinfo_t *sc = parm;
|
||||
if (guid == NULL)
|
||||
return TRUE;
|
||||
|
||||
if (aimedforguid == dsnd_guids)
|
||||
if (sc->audio_fd == dsnd_guids)
|
||||
{
|
||||
dsndcard = str1;
|
||||
Q_strncpyz(sc->name, str1, sizeof(sc->name));
|
||||
dsndguid = guid;
|
||||
}
|
||||
dsnd_guids++;
|
||||
|
@ -626,17 +624,13 @@ static int DSOUND_InitCard_Internal (soundcardinfo_t *sc, int cardnum)
|
|||
|
||||
dsnd_guids=0;
|
||||
dsndguid=NULL;
|
||||
dsndcard="DirectSound";
|
||||
if (pDirectSoundEnumerate)
|
||||
pDirectSoundEnumerate(&DSEnumCallback, NULL);
|
||||
pDirectSoundEnumerate(&DSEnumCallback, sc);
|
||||
if (!snd_usemultipledevices.ival) //if only one device, ALWAYS use the default.
|
||||
dsndguid=NULL;
|
||||
|
||||
aimedforguid++;
|
||||
|
||||
if (!dsndguid) //no more...
|
||||
if (aimedforguid != 1) //not the first device.
|
||||
return SND_NOMORE;
|
||||
if (!dsndguid && sc->audio_fd != 0) //no more...
|
||||
return SND_NOMORE;
|
||||
|
||||
sc->handle = Z_Malloc(sizeof(dshandle_t));
|
||||
dh = sc->handle;
|
||||
|
@ -680,7 +674,6 @@ static int DSOUND_InitCard_Internal (soundcardinfo_t *sc, int cardnum)
|
|||
// }
|
||||
}
|
||||
}
|
||||
Q_strncpyz(sc->name, dsndcard, sizeof(sc->name));
|
||||
|
||||
dscaps.dwSize = sizeof(dscaps);
|
||||
|
||||
|
@ -696,6 +689,7 @@ static int DSOUND_InitCard_Internal (soundcardinfo_t *sc, int cardnum)
|
|||
return SND_ERROR;
|
||||
}
|
||||
|
||||
SendMessage(mainwindow, WM_USER, 0, 0);
|
||||
if (DS_OK != dh->pDS->lpVtbl->SetCooperativeLevel (dh->pDS, mainwindow, DSSCL_EXCLUSIVE))
|
||||
{
|
||||
Con_SafePrintf ("Set coop level failed\n");
|
||||
|
|
|
@ -1189,10 +1189,6 @@ void S_Init (void)
|
|||
void S_ShutdownCard(soundcardinfo_t *sc)
|
||||
{
|
||||
soundcardinfo_t *prev;
|
||||
#if defined(_WIN32) && defined(AVAIL_DSOUND)
|
||||
extern int aimedforguid;
|
||||
aimedforguid = 0;
|
||||
#endif
|
||||
|
||||
if (sndcardinfo == sc)
|
||||
sndcardinfo = sc->next;
|
||||
|
@ -1211,10 +1207,6 @@ void S_ShutdownCard(soundcardinfo_t *sc)
|
|||
void S_Shutdown(void)
|
||||
{
|
||||
soundcardinfo_t *sc, *next;
|
||||
#if defined(_WIN32) && defined(AVAIL_DSOUND)
|
||||
extern int aimedforguid;
|
||||
aimedforguid = 0;
|
||||
#endif
|
||||
|
||||
for (sc = sndcardinfo; sc; sc=next)
|
||||
{
|
||||
|
|
|
@ -413,6 +413,7 @@ rulesetrule_t rulesetrules_nqr[] = {
|
|||
{"ruleset_allow_fbmodels", "0"},
|
||||
{"r_vertexlight", "0"},
|
||||
{"v_projectionmode", "0"},
|
||||
{"sbar_teamstatus", "0"},
|
||||
{NULL}
|
||||
};
|
||||
|
||||
|
@ -420,6 +421,7 @@ static ruleset_t rulesets[] =
|
|||
{
|
||||
{"strict", rulesetrules_strict},
|
||||
{"nqr", rulesetrules_nqr},
|
||||
//{"eql", rulesetrules_nqr},
|
||||
{NULL}
|
||||
};
|
||||
|
||||
|
|
|
@ -951,7 +951,7 @@ qboolean NET_StringToAdr (const char *s, int defaultport, netadr_t *a)
|
|||
{
|
||||
//make sure that the rest of the address is a valid ip address (4 or 6)
|
||||
|
||||
if (!NET_StringToSockaddr (s+6, 0, &sadr, NULL, NULL))
|
||||
if (!NET_StringToSockaddr (s+6, defaultport, &sadr, NULL, NULL))
|
||||
{
|
||||
a->type = NA_INVALID;
|
||||
return false;
|
||||
|
@ -1016,6 +1016,14 @@ qboolean NET_StringToAdr (const char *s, int defaultport, netadr_t *a)
|
|||
|
||||
SockadrToNetadr (&sadr, a);
|
||||
|
||||
#if !defined(HAVE_PACKET) && defined(HAVE_TCP)
|
||||
//bump over protocols that cannot work in the first place.
|
||||
if (a->type == NA_IP)
|
||||
a->type = NA_TCP;
|
||||
if (a->type == NA_IPV6)
|
||||
a->type = NA_TCPV6;
|
||||
#endif
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
@ -216,6 +216,7 @@ qboolean Sys_ConditionWait(void *condv)
|
|||
{
|
||||
condvar_t *cv = (condvar_t *)condv;
|
||||
qboolean success;
|
||||
DWORD status;
|
||||
|
||||
// increase count for non-signaled waiting threads
|
||||
EnterCriticalSection(&cv->countlock);
|
||||
|
@ -225,7 +226,18 @@ qboolean Sys_ConditionWait(void *condv)
|
|||
LeaveCriticalSection(&cv->mainlock); // unlock as per condition variable definition
|
||||
|
||||
// wait on a signal
|
||||
#if 0
|
||||
success = (WaitForSingleObject(cv->wait_sem, INFINITE) != WAIT_FAILED);
|
||||
#else
|
||||
do
|
||||
{
|
||||
MSG msg;
|
||||
while (PeekMessage (&msg, NULL, 0, 0, PM_REMOVE))
|
||||
DispatchMessage (&msg);
|
||||
status = MsgWaitForMultipleObjects(1, &cv->wait_sem, FALSE, INFINITE, QS_SENDMESSAGE|QS_POSTMESSAGE);
|
||||
} while (status == (WAIT_OBJECT_0+1));
|
||||
success = status != WAIT_FAILED;
|
||||
#endif
|
||||
|
||||
// update waiting count and alert signaling thread that we're done to avoid the deadlock condition
|
||||
EnterCriticalSection(&cv->countlock);
|
||||
|
|
|
@ -411,7 +411,6 @@ Global
|
|||
{32B12987-DF8C-4E40-B07C-B18586A4CA65}.Release|Win32.Build.0 = Release|Win32
|
||||
{32B12987-DF8C-4E40-B07C-B18586A4CA65}.Release|x64.ActiveCfg = Release|Win32
|
||||
{4735677B-6D5A-4BE6-A945-CB32DEADBEEF}.D3DDebug|Win32.ActiveCfg = Debug|Win32
|
||||
{4735677B-6D5A-4BE6-A945-CB32DEADBEEF}.D3DDebug|Win32.Build.0 = Debug|Win32
|
||||
{4735677B-6D5A-4BE6-A945-CB32DEADBEEF}.D3DDebug|x64.ActiveCfg = Release|Win32
|
||||
{4735677B-6D5A-4BE6-A945-CB32DEADBEEF}.D3DRelease|Win32.ActiveCfg = Release|Win32
|
||||
{4735677B-6D5A-4BE6-A945-CB32DEADBEEF}.D3DRelease|Win32.Build.0 = Release|Win32
|
||||
|
@ -424,7 +423,6 @@ Global
|
|||
{4735677B-6D5A-4BE6-A945-CB32DEADBEEF}.GLDebug|Win32.ActiveCfg = Debug|Win32
|
||||
{4735677B-6D5A-4BE6-A945-CB32DEADBEEF}.GLDebug|x64.ActiveCfg = Debug|Win32
|
||||
{4735677B-6D5A-4BE6-A945-CB32DEADBEEF}.GLRelease|Win32.ActiveCfg = Release|Win32
|
||||
{4735677B-6D5A-4BE6-A945-CB32DEADBEEF}.GLRelease|Win32.Build.0 = Release|Win32
|
||||
{4735677B-6D5A-4BE6-A945-CB32DEADBEEF}.GLRelease|x64.ActiveCfg = Release|Win32
|
||||
{4735677B-6D5A-4BE6-A945-CB32DEADBEEF}.MDebug|Win32.ActiveCfg = Debug|Win32
|
||||
{4735677B-6D5A-4BE6-A945-CB32DEADBEEF}.MDebug|x64.ActiveCfg = Debug|Win32
|
||||
|
@ -458,7 +456,6 @@ Global
|
|||
{9767E236-8454-44E9-8999-CD5BDAFBE9BA}.GLDebug|Win32.Build.0 = Debug|Win32
|
||||
{9767E236-8454-44E9-8999-CD5BDAFBE9BA}.GLDebug|x64.ActiveCfg = Debug|Win32
|
||||
{9767E236-8454-44E9-8999-CD5BDAFBE9BA}.GLRelease|Win32.ActiveCfg = Release|Win32
|
||||
{9767E236-8454-44E9-8999-CD5BDAFBE9BA}.GLRelease|Win32.Build.0 = Release|Win32
|
||||
{9767E236-8454-44E9-8999-CD5BDAFBE9BA}.GLRelease|x64.ActiveCfg = Release|Win32
|
||||
{9767E236-8454-44E9-8999-CD5BDAFBE9BA}.MDebug|Win32.ActiveCfg = Debug|Win32
|
||||
{9767E236-8454-44E9-8999-CD5BDAFBE9BA}.MDebug|Win32.Build.0 = Debug|Win32
|
||||
|
|
File diff suppressed because it is too large
Load diff
Loading…
Reference in a new issue