Commit graph

2705 commits

Author SHA1 Message Date
Zachary J. Slater
fd3b58b967 Merge pull request #293 from rcgordon/autoupdater-rsa-signature 2017-06-10 21:00:51 -10:00
Zack Middleton
e9436abff0 Only allow connectionless print/echo from server/rcon address
Reported by Ensiform.
2017-06-10 19:15:26 -05:00
Zack Middleton
dfce71929a Add con_autochat and con_autoclear cvars 2017-06-08 15:46:19 -05:00
Zack Middleton
c12b81a273 Fix strncpy usage in botlib
All usage of strncpy in botlib should now either set string
terminator or use Q_strncpyz.
2017-06-07 21:48:01 -05:00
Tobias Kuehnhammer
8956ab41dd Fix notarget cheat
Bots no longer target players in 'no target mode'.
2017-06-07 21:27:33 -05:00
Zack Middleton
c99281a0da Make bots stop attacking player after disconnect
Bots did not notice player disconnected, so they kept attacking
the last known position.

Checking if entity is valid in BotEntityVisible might fix other
similar issues too.
2017-06-07 21:11:52 -05:00
Zack Middleton
9aae0948ab Remove unused define MAX_COMMANDARGUMENTS from be_ea.c 2017-06-07 21:11:38 -05:00
Zack Middleton
74a59f17c7 Don't copy p->org to itself in cg_particles.c 2017-06-07 21:07:42 -05:00
Zack Middleton
8a6c9d1038 Remove unneeded 'angles' variables/clearing in ai_dmq3.c 2017-06-07 21:06:28 -05:00
Zack Middleton
730b917059 Fix comment in BotAIPredictObstacles 2017-06-07 20:53:35 -05:00
Zack Middleton
a738cb9592 Fix overdraw in CG_DrawRect
It was noticeable in the corners when alpha was less than 1.
2017-06-07 20:40:16 -05:00
Zack Middleton
1a8bf792e7 Range check client number for trap_BotUserCommand 2017-06-07 20:38:12 -05:00
Zack Middleton
5b9302a7ef Don't start game entity loops at index 1 2017-06-07 20:32:57 -05:00
Zack Middleton
71512bb1fd Show client's name in callvote clientkick vote display message
Make callvote always kick by client num so player can't rename to
avoid being kicked. Don't allow calling a vote to kick host or
non-existent players.
2017-06-07 20:24:10 -05:00
Zack Middleton
eeb28dc1d0 Fix score info being dropped by server
Server drops reliable command string if it's length is more than 1022.
2017-06-07 19:55:36 -05:00
Zack Middleton
91acf8a681 Don't build score info for bots, they don't parse it 2017-06-07 19:54:34 -05:00
Zack Middleton
b511b8f2f6 Fix Coverity warning that endVelocity is uninitialized 2017-06-07 19:51:32 -05:00
Zack Middleton
c96acec428 Fix (unused) check for map restart in CG_TransitionSnapshot 2017-06-07 19:42:32 -05:00
Zack Middleton
1456008d96 Fix comment for CG_SetInitialSnapshot 2017-06-07 19:41:46 -05:00
Zack Middleton
1048073e26 Unify checks for missing COM_Parse() token 2017-06-07 19:16:05 -05:00
Zack Middleton
d58234a6c7 Fix 'missing token' in parsers for animations.cfg 2017-06-07 19:06:41 -05:00
Zack Middleton
6e340f9a5b Don't use uninitialized ps from BotAI_GetClientState
If BotAI_GetPlayerState returns qfalse, ps is untouched and in
some cases means uninitialized. So don't use it if not valid.
2017-06-07 19:02:20 -05:00
Zack Middleton
74aa4268b2 Stop caching sv_maxclients in bot code 2017-06-07 19:00:28 -05:00
Zack Middleton
d1631d6ea3 Use const char pointers when possible in botlib's libvar code 2017-06-07 18:54:49 -05:00
Ryan C. Gordon
b771192d52 Use "x86_64" and not "x86-64" like everything else in ioq3. 2017-06-04 02:46:49 -04:00
Ryan C. Gordon
749e17ab1d Add a log message if manifest is valid. 2017-06-04 02:23:49 -04:00
Ryan C. Gordon
a761684a23 Windows support for autoupdater manifest signatures. 2017-06-04 02:21:55 -04:00
Ryan C. Gordon
c9c5d8710a Added .gitignore for rsa_tools directory. 2017-06-04 01:49:33 -04:00
Ryan C. Gordon
06cc3a4e1b build-rsa-tools.sh now works on Linux. 2017-06-04 01:44:39 -04:00
Ryan C. Gordon
e04bfd4967 Autoupdater now checks RSA digital signature for manifest. 2017-06-04 01:32:10 -04:00
Ryan C. Gordon
f71260eb8c Replace sha256.c with libTomCrypt equivalent, since we'll be using it anyway. 2017-06-04 01:17:17 -04:00
Ryan C. Gordon
62f6f0c7e0 Wire up libTom stuff to build system. 2017-06-04 01:16:37 -04:00
Ryan C. Gordon
7542966e33 Verify libTom source archives aren't tampered with. 2017-06-04 01:15:38 -04:00
Ryan C. Gordon
ece37f1390 Initial add of rsa_tools.
This is just a simple RSA public key digital signature thing built on
libtomcrypt. The gist:

Some admin will generate a public/private key with rsa_make_keys, keeping the
private key secret. Using the private key and rsa_sign, the admin will sign
the autoupdater manifests, generating manifest.txt.sig.

The public key ships with the game (adding 270 bytes to the download), the
.sig is downloaded with the manifest by the autoupdater (256 bytes extra
download), then the autoupdater checks the manifest against the signature
with the public key. if the signature isn't valid (the manifest was tampered
with or corrupt), the autoupdater refuses to continue.

If the manifest is to be trusted, it lists sha256 checksums for every file to
download, so there's no need to sign every file; if they can't tamper with the
manifest, they can't tamper with any other file to be updated since the file's
listed sha256 won't match.

If the private key is compromised, we generate new keys and ship new
installers, so new installations will be able to update but existing ones
will need to do a new install to keep getting updates. Don't let the private
key get compromised. The private key doesn't go on a public server. Maybe it
doesn't even live on the admin's laptop hard drive.

If the download server is compromised and serving malware, the autoupdater
will reject it outright if they haven't compromised the private key, generated
a new manifest, and signed it with the private key.

libtomcrypt is sort of a big pile of source code, so instead of putting it
in revision control, we have a script to download it. Most things don't need
it. It lives on GitHub, so we _could_ do a git submodule, but most people
don't need it, so why waste their disk and bandwidth? That said, when compiled
you end up with a few hundred kilobytes of binary code to verify a signature
and no external dependencies, so it seems like a win.
2017-06-03 20:26:07 -04:00
Zack Middleton
db1198f6ea Add mouse wheel support to UI list boxes
Allows scrolling server browser list and some other lists.
2017-06-03 14:03:09 -05:00
Zack Middleton
5592342b1b Only auto update empty Team Arena internet server cache
Previously tested a mod cvar which may be wrong when multiple
mods are involved or config is reset. Let's check the server
cache's internet server count directly.
2017-06-03 14:03:09 -05:00
Zack Middleton
66fec1b059 Remove unneeded code from OpenGL2's RB_RenderDrawSurfList
Make it more similar to OpenGL1.
2017-06-03 14:03:09 -05:00
Ryan C. Gordon
1aa20487a4 autoupdater: Fixed up GCC/clang printf function attribute. 2017-06-03 12:02:29 -04:00
Zachary J. Slater
87eecd7bc1 Merge pull request #290 from rcgordon/autoupdater
Initial shot at writing an ioquake3 autoupdater. Thank you icculus, and everyone who contributed to his patreon! https://www.patreon.com/icculus
2017-06-02 22:46:22 -10:00
Zack Middleton
c14cb70f15 Draw disconnect icon over lagometer in Team Arena too
The blinking disconnect icon is drawn over lagometer in Q3.
Team Arena moved the lagometer location. Now let's draw the
disconnect icon over lagometer in Team Arena too!
2017-06-02 22:11:52 -05:00
Zack Middleton
082376ed9e Enable tourney scoreboard in Team Arena
"/team score" draws an oversized scoreboard in Q3. In Team Arena
it draws nothing. They probably intended to replace it with the
new .menu UI. But since it didn't happen, go ahead and use the Q3
tournament scoreboard.
2017-06-02 22:11:52 -05:00
Zack Middleton
1066214548 Fix "brought in 1 skulls" Harvester message
Use correct singular/plural form of skulls for Harvester's brought in
skulls message.

Reported by Tobias.
2017-06-02 22:11:52 -05:00
Zack Middleton
4006358492 Fix spawn/freed entity logic (specifically harvester skulls)
- Actually use the second 'force' pass in G_Spawn when out of
available slots.
- Make G_EntitiesFree return qtrue if we can open a new slot.
(Only used when spawning Harvester skulls.)

Fixes not spawning Harvester skulls when there are no 'open freed
slots', but we have other slots available to open.
2017-06-02 22:11:52 -05:00
Zack Middleton
4227d97958 Make Team Arena win logic handle more game types/blue team
The Team Arena menu uses red team for single player but q3_ui
(and mods could) use blue. Also handle all the game types, not
just the ones used by Team Arena. Fixes FFA and Team DM.
2017-06-02 22:07:27 -05:00
Zack Middleton
4506ebd5d7 Fix joining team when starting local team play server
AKA fix joining team in Team Arena single player. Though it also
affects starting Q3 skirmish in team dm or ctf modes.
2017-06-02 21:07:30 -05:00
Ryan C. Gordon
b33551dfa2 Fixed comment typo: s/until/under 2017-06-02 11:28:33 -04:00
Ryan C. Gordon
063875e89a Fixed linking on things that need -ldl, and compiler warnings. 2017-06-02 01:39:03 -04:00
Ryan C. Gordon
cd4aa2d9a9 Don't fail if the game process went away before we were ready to wait for it. 2017-06-02 01:32:33 -04:00
Ryan C. Gordon
b5c54ec019 Use stdint.h on Visual C if >= Visual Studio 2010. 2017-06-02 01:31:45 -04:00
Ryan C. Gordon
82977da9c8 Working Windows port of the autoupdater! 2017-06-02 00:49:42 -04:00
Zack Middleton
bd067540f5 Fix hitch when opening Team Arena find friend menu
Opening the find friend menu in the Team Arena server browser
hitches due to trying to resolve blank host names.

In UI_BuildFindPlayerList() status requests that are initial or
completed state or have timed out get reset. This means it starts
with MAX_SERVERSTATUSREQUESTS (16) blank host names. So just ignore
them in UI_GetServerStatusInfo().
2017-06-01 18:54:28 -05:00
Zack Middleton
0a19ae0306 Fix levelshot displayed in Team Arena server browser
Levelshot was not updated when server list was initially loaded or
server list was sorted.
2017-06-01 18:03:24 -05:00
Zack Middleton
2091a2e2d5 Fix favorite servers player count message in Team Arena UI
The console message "1 servers listed in browser with 2 players."
would count clients multiple times when viewing favorite servers.

When viewing favorite servers in Team Arena UI, servers are added
to list before getting ping response. Each time UI checked pings
and inserted server it incremented the player count.
2017-06-01 17:24:07 -05:00
Zack Middleton
6b5674e6bb Fix filtering favorite servers in Team Arena UI
Filter favorite servers based on cached server info and new info
instead of only the cached info.

If cached server info is filtered out, don't add it to server list
but wait for getinfo response before marking server as invisible.
2017-06-01 17:24:07 -05:00
Zack Middleton
0b853a659a Make Team Arena server list sub-sort clients by max clients
The player column in Team Arena UI lists clients and max clients
in format of "clients [maxclients]". When sorting by clients the
max clients is ignored which results in player column being
disorganized.

When servers have the same number of clients, sort based on max
clients. Otherwise client sort is sub-sorted based on order of
getinfo responses (ping).
2017-06-01 17:24:06 -05:00
Zack Middleton
2bbe178bc8 Replace constant value with UIAS_GLOBAL1 2017-06-01 17:24:06 -05:00
Zack Middleton
e8f092637c Automatically get initial Internet servers in Team Arena UI
Having to manually request the list, with two buttons (get new
list, refresh list) is somewhat confusing. Also since it looks
like there are no servers, users might not try to figure out
how to get the server list.

The first time viewing a master server list in Team Arena UI,
automatically request a new server list. After that the cache
will be available with a timestamp of the last refresh time.
I think this will make it easier to understand how the menu
works.

This may cause unneeded updating of the server cache because the
last refresh timestamp is per-fs_game but the server cache is
shared by all games. This will only occur once for each game
though so it's not a big concern.
2017-06-01 17:24:06 -05:00
Zack Middleton
f6f2710f94 Make server browser default to Internet
The default use to be local. In q3_ui you have to press spacebar or
wait for scan to time out before you can switch to Internet.
2017-06-01 16:58:21 -05:00
Ryan C. Gordon
8cf088ae27 Fully initialize ManifestItems (rollback, etc, was uninitialized before!). 2017-06-01 17:17:25 -04:00
Ryan C. Gordon
b6a83a1494 ioquake3 calls this arch "x86" and not "i386". 2017-06-01 13:02:17 -04:00
Ryan C. Gordon
a69020b217 Fixed up some types in sha256.* 2017-05-31 03:39:45 -04:00
Ryan C. Gordon
d0da0724e7 Move the autoupdater launcher into its own public domain source file.
So other games can steal this piece if they want.
2017-05-31 01:22:40 -04:00
Ryan C. Gordon
cf5dd87f57 Fix tabs vs spaces. 2017-05-31 01:04:17 -04:00
Ryan C. Gordon
02b116aae0 Initial Windows autoupdater support: the ioq3 internal bits.
This is just the piece that will launch the autoupdater; the autoupdater
itself will be a separate commit.
2017-05-31 01:02:26 -04:00
Ryan C. Gordon
67b0cccc75 Don't fclose(NULL) if a file doesn't exist. 2017-05-30 20:20:18 -04:00
Ryan C. Gordon
f518f75149 Don't link directly to libcurl.
Lots of Linux distros have different names (libcurl-gnutls.so vs etc), and
version the symbols (curl_global_init@@CURL_LIBSSL_3), so it's more compatible
to just dlsym the basic entry points we need and just demand that libcurl is
installed at all.

Alternately: we'll use our own libcurl build, but we'll probably have to dump
SSL support to make this sane to do.
2017-05-30 20:15:59 -04:00
Zack Middleton
973e0a7e9c Refresh master server address cache every 24 hours
Resolve master server addresses every 24 hours instead of keeping
result forever. Don't clear sv_master[1-5] cvar if the address fails
to resolve; it might work later.
2017-05-30 18:33:15 -05:00
Ryan C. Gordon
b892bcfdbc Cleanup in failures a little better. 2017-05-30 18:02:48 -04:00
Ryan C. Gordon
69829916b5 Fixed -Wstrict-prototypes warning. 2017-05-30 17:37:53 -04:00
Zack Middleton
8a50e2aa09 Don't repeat alt+enter key event
Holding alt+enter should not continuously toggle fullscreen mode.
2017-05-29 16:41:03 -05:00
Zack Middleton
024a8842bd Fix compiling debug code for writing VoIP data 2017-05-29 09:54:39 -05:00
Zack Middleton
bc2f45508d Fix dllHandle possibly being uninitialized in Sys_LoadDll 2017-05-26 10:50:56 -05:00
Ryan C. Gordon
4729c683fd Initial shot at writing an ioquake3 autoupdater. 2017-05-25 14:13:18 -04:00
Eugene C
c259e7cba3 Fix comment 2017-05-25 09:44:18 +01:00
ec-
566fb0edfc Allow unaligned load/store in QVM interpreter/x86 compiler
constructions like (dataMask & ~3) was used to protect against out-of-bound load/store when address is 4-byte closer to dataMask
 but at the same time it effectively cut low address bits for ALL load/store operations which is totally wrong in terms of conformance to ALLOWED (i.e. generated by q3lcc from C sources) low-level operations like packed binary data parsing
2017-05-25 09:44:18 +01:00
Zack Middleton
3b0a862290 Merge pull request #256 from WolfWings/patch-4
...too much MISSIONPACK ifdeffery.
2017-05-24 13:44:35 -05:00
Zack Middleton
80c3e503d9 Merge pull request #254 from WolfWings/patch-1
Redundant #ifndef MISSIONPACK block
2017-05-24 13:44:20 -05:00
Zack Middleton
2c225a5a2b Merge pull request #199 from UniQP/typos
Fix some typos in comments
2017-05-24 13:41:15 -05:00
Zack Middleton
66365a3a85 Merge pull request #198 from UniQP/deadvariable
Remove dead variables
2017-05-24 13:40:53 -05:00
Zack Middleton
eecc8326a0 Save connect and playdemo argument before calling CL_Disconnect()
Save argument instead of using a pointer to cmd token memory that
might be overwritten when Cmd_TokenizeString() is called.

No known method for causing the issue without engine changes.
Cmd_TokenizeString() is called by FS_PureServerSetReferencedPaks()
in CL_Disconnect() but it's not an issue because the string is
blank.

Thanks @mickael9.
2017-05-24 12:46:25 -05:00
Zack Middleton
351e8f84d2 Merge pull request #270 from mickael9/unused-warning
Don't include (mission)pak_checksums in standalone build
2017-05-24 12:26:55 -05:00
Zack Middleton
70af7e673f Check for truncated paths in Sys_LoadDll
Check for truncated paths which could allow loading a library with
a non-standard extension. Also provides a better message for why a
valid library with a long path would fail to load.
2017-05-24 10:28:59 -05:00
Zack Middleton
05858d30e8 Don't load libraries with non-standard file extensions
Also don't allow writting files ending in a library extension such
as ".so.0" or ".dylib.0".
2017-05-24 10:28:46 -05:00
Zack Middleton
fbada2caf6 Fix compiling when KEY_WOW64_32KEY is missing from system headers 2017-05-24 10:01:19 -05:00
Zack Middleton
f4739e9c4d Rename (already updated) opusfile-0.5 to opusfile-0.8 2017-05-23 11:47:27 -05:00
Zack Middleton
7139094355 Update opusfile from 0.5 to 0.8 2017-05-23 11:47:27 -05:00
Zack Middleton
ef8ad54421 Rename (already updated) opus-1.1 to opus-1.1.4 2017-05-23 11:47:27 -05:00
Zack Middleton
853110d5d4 Update opus from 1.1 to 1.1.4
Define FLOAT_APPROX in Makefile and misc/msvc12/quake3.vcxproj.
2017-05-23 11:47:26 -05:00
Zack Middleton
67bfe8f8d6 Rename (already updated) libvorbis-1.3.4 to libvorbis-1.3.5 2017-05-23 11:47:26 -05:00
Zack Middleton
bba263d634 Update libvorbis from 1.3.4 to 1.3.5 2017-05-23 11:47:26 -05:00
Zack Middleton
d87bd792c3 Rename (already updated) libogg-1.3.1 to libogg-1.3.2 2017-05-23 11:47:26 -05:00
Zack Middleton
04fc72899a Update libogg from 1.3.1 to 1.3.2 2017-05-23 11:47:26 -05:00
Zack Middleton
e3ec11d42a Remove unused libspeex 2017-05-23 09:13:54 -05:00
SmileTheory
c65d2c2657 Add vao cache for static surfaces.
Remove support for draw range elements, multi draw arrays, world vao creation, surface merging.
2017-04-28 02:13:25 -07:00
Zack Middleton
729766150f Don't start a vote after vote passed for map change
Processing a callvote command after a vote passed to change maps but
has not been executed yet will result in 1) map change immediately
happening 2) after new map loads players have vote HUD messages but
Game VM doesn't have a vote in progress. The phantom vote status will
only be removed if players start a new vote or run vid_restart.

The underlying issue is that a second callvote sets vote config
strings but a map change is executed before they are sent to clients.
Resulting in clients getting "cs" reliable commands with the config
string changes _after_ the map change. Out of sync config strings.

Even if the underlying issue was fixed, the second vote would be lost.
So it's best to not force a map change to happen immediately anyway.

Reported by Tobias Kuehnhammer.
2017-04-12 18:29:17 -05:00
Max Crofts
af69d1148f Improve FS_GetModList
- Paths to search for mods are now specified in an array

- Mods can now consist solely of ".pk3dir" folders and still be
considered valid

- The function now has a consistent style
2017-04-12 17:49:50 +10:00
Max Crofts
7ff610db35 Detect GOG install path 2017-04-07 16:26:26 +10:00
Max Crofts
f5143405f1 Add missing RegCloseKey to Sys_SteamPath 2017-04-07 15:18:28 +10:00
SmileTheory
de3339ebcd Fill in filename in Com_WriteConfig_f() before checking extension.
Thanks BartoCH for pointing out.
2017-03-27 04:11:33 -07:00
SmileTheory
d4e1a01f33 Remove FS_Read2().
Functionally the same as FS_Read().
Streaming functionality was removed in 672cfbf16f but flag remained.
2017-03-17 04:21:11 -07:00
SmileTheory
b173ac0599 Merge some file writing extension checks from OpenJK.
Thanks Ensiform.
https://github.com/JACoders/OpenJK/commit/05928a57f9e4aae15a3bd0
https://github.com/JACoders/OpenJK/commit/ef124fd0fc48af164581176
2017-03-13 20:44:47 -07:00
SmileTheory
f61fe5f6a0 Don't open .pk3 files as OpenAL drivers. 2017-03-13 20:28:37 -07:00
SmileTheory
376267d534 Don't load .pk3s as .dlls, and don't load user config files from .pk3s. 2017-03-13 14:14:00 -07:00
Mickaël Thomas
40ec42a425 Don't include (mission)pak_checksums in standalone build
Avoids a compiler warning
2017-03-12 22:57:17 +01:00
Zack Middleton
cd41690fc3 Fix swapping AAS bboxes
Found in RTCW SP.
2017-02-27 18:18:15 -06:00
Zack Middleton
313064baa4 Fix command line variables not being set correctly
+seta, +sets, and +setu were ignored because Com_AddStartupCommands
thought Com_StartupVariable handled it.

+set didn't allow value to be multiple tokens which due to Unix shell
unintuitively removing quotes causes the variable to only be set to
the first token. This could be worked around by escaping quotes

    ioq3ded +set g_motd \"hello world\"

but it doesn't match behavior of other start up commands (which now
includes seta, sets, and setu) that use all tokens.
2017-02-22 15:16:50 -06:00
Zack Middleton
da747fc291 Fix source filename/includepath length in l_precomp.c
source_t filename and includepath are 1024 but MAX_PATH is 64. As far as
I know the paths don't exceed that so this probably doesn't fix anything.
Similar changes were already made to l_script.c so this makes things
consistent. This was found because it was fixed in RTCW's code.
2017-02-19 09:24:50 -06:00
Wolf
411d20bec6 ...too much MISSIONPACK ifdeffery. 2017-02-02 10:28:46 -06:00
Wolf
0c3879f192 Redundant #ifndef MISSIONPACK block
MISSIONPACK define is already required for this file or else it triggers an #error at the top of the file - removing redundant test that will never occur.
2017-02-01 12:33:55 -06:00
SmileTheory
468da0fabc OpenGL2: Generate less shaders when r_sunlightMode is disabled.
Original patch by https://github.com/inolen in https://github.com/ioquake/ioq3/pull/36
2017-01-26 19:58:28 -08:00
Wolf
6b514ee532 Correct test for GL_EXT_texture_env_add support
The test string is missing the initial "GL_" so it is always failing the test even when supported on newer hardware.
2017-01-26 00:14:31 -08:00
Tim Angus
d85a544bf2 Merge pull request #230 from fmwviormv/patch-1
reset samplefrac to 8-bits, to prevent overflow
2017-01-25 10:42:49 +00:00
Zachary J. Slater
7efe1c97a7 Merge pull request #99 from openmoh/ioq3-SSE-msg
rephrase SSE availability message (thanks)
2017-01-24 19:28:41 -10:00
Zachary J. Slater
6e4e6e8925 Merge pull request #91 from lnussel/master
a VM for ARMv7l (Thank you, Ludwig -zjs)
2017-01-24 19:27:13 -10:00
Zachary J. Slater
bf3c88dcc1 Merge pull request #227 from smcv/old-style-declaration
Don't use mostly obsolete 'register' keyword (Merge or get off the pot.)
2017-01-24 19:17:40 -10:00
SmileTheory
0238810f34 OpenGL2: Render dlights only when r_lightmap is 0.
https://github.com/ioquake/ioq3/issues/246
2017-01-24 20:17:06 -08:00
SmileTheory
294109628d OpenGL2: Fix bug in generating normal maps for non-square textures. 2016-12-12 15:33:54 -08:00
SmileTheory
06b47ad2a9 GLimp_HaveExtension() -> SDL_GL_ExtensionSupported() 2016-12-10 00:35:17 -08:00
SmileTheory
0672905ef1 OpenGL2: Detect Intel graphics and avoid/use certain operations there.
Also use qglCopyTextureSubImage2DEXT instead of qglCopyTextureImage2DEXT.
2016-12-07 22:30:55 -08:00
SmileTheory
730207817e OpenGL2: Don't bind null framebuffers when not using framebuffers. 2016-12-07 14:13:29 -08:00
Zack Middleton
c68e471430 Don't have clients use private slots when sv_privatePassword is unset 2016-12-05 12:40:00 -06:00
SmileTheory
ab8bcf5c5b OpenGL2: glGetIntegerv -> qglGetIntegerv
Thanks Cyrax for pointing this out.
2016-11-25 02:13:03 -08:00
SmileTheory
93066d2e05 OpenGL2: Don't draw viewmodels in portal views.
Thanks Cyrax for pointing out, should fix https://bugzilla.icculus.org/show_bug.cgi?id=6363.
2016-11-25 01:30:21 -08:00
SmileTheory
2349ef038e OpenGL2: Don't interleave texCoords and lightCoords in tess. 2016-11-25 01:17:46 -08:00
Simon McVittie
2ab109b772 Avoid 'register' declarations
gcc 6 with -Wall -Wextra warns:

code/botlib/l_precomp.c: In function ‘PC_NameHash’:
code/botlib/l_precomp.c:551:2: warning: ‘register’ is not at beginning of declaration [-Wold-style-declaration]
  int register hash, i;
  ^~~

Modern compilers either ignore the register storage class when
generating code, or generate better code without it, so just remove
most of them.

The remaining uses are in third-party bundled libraries (libjpeg, zlib),
and in a PowerPC-specific inline function consisting of inline
assembler (because I'm not 100% confident that it doesn't have
some practical use there).
2016-11-01 16:37:38 +00:00
Zack Middleton
10f33b892b Fix removing/creating PID file for base game when switching to/from mods 2016-10-27 22:54:33 -05:00
SmileTheory
f7711a8119 OpenGL2: Add more ambient to lightmapped materials. 2016-10-27 02:12:32 -07:00
SmileTheory
8955752457 OpenGL2: Prioritize loading .png images over all others besides .dds. 2016-10-27 02:11:29 -07:00
SmileTheory
ffcec94f50 OpenGL2: Load images with "_nh" suffix as parallax normalmaps. 2016-10-27 02:10:40 -07:00
SmileTheory
89701a1a45 OpenGL2: Faster mipmap generation. 2016-10-21 19:48:02 -07:00
SmileTheory
ba59df8c8c OpenGL2: Remove check for GL_ARB_texture_non_power_of_two.
Core in OpenGL 2.0.
2016-10-21 16:58:42 -07:00
SmileTheory
41ae7815c9 OpenGL2: Remove half float support.
Not enough accuracy for textures larger than 1024x1024, such as merged lightmaps.
2016-10-20 20:09:12 -07:00
SmileTheory
863adfcfc2 OpenGL2: Fix fog color. 2016-10-12 23:17:19 -07:00
SmileTheory
ad819edcc4 OpenGL2: Workaround for multiple deforms on MD3 mesh.
https://github.com/ioquake/ioq3/issues/122
2016-10-11 04:18:41 -07:00
SmileTheory
aa79738c50 OpenGL2: Store vertex colors and hdr lightmaps/lightgrid as RGBA16. 2016-10-11 03:28:20 -07:00
SmileTheory
239f539702 OpenGL2: Non-square merged lightmaps. 2016-10-10 03:06:03 -07:00
Zack Middleton
c80f341711 Handle ERR_DROP during Com_GameRestart
If ERR_DROP during Com_GameRestart after shutting down client, Com_Error
needs to restart the client otherwise there is just a black window. Also,
clear the game restarting flag in Com_Error otherwise it's not possible to
run Com_GameRestart again later.

I don't know of a way to trigger ERR_DROP, in FS_Restart for instance,
without engine changes however.
2016-10-09 19:17:58 -05:00
Zack Middleton
978afd7590 Avoid shuting down opus voip codec multiple times 2016-10-09 18:30:19 -05:00
Zack Middleton
755b2f38f0 Offer post-crash safe settings on a per-mod basis
Offer to restore settings when loading a mod that crashed, not the first
mod that gets loaded after a crash. Before the first mod loaded (usually
baseq3) would get the option even if missionpack or some other mod crashed.

- Make pid files separate for each fs_game.
- Remove/write pid every time switching fs_game.
- Create path before writing pid file otherwise it fails on first run.
- Show mod description.txt or fs_game instead of engine name in abnormal
  exit message.
- Check com_fullyInitialized in Com_Error before removing PID,
  otherwise "ioquake3 --version" segfaults when accessing fs_gamevar->string
  (plus not fully initialized isn't really a normal shutdown).
2016-10-09 18:18:08 -05:00
fmwviormv
2ef641b969 reset samplefrac to 8-bits, to prevent overflow
issue: https://github.com/ioquake/ioq3/issues/106
2016-10-07 01:21:15 +03:30
SmileTheory
1246d16834 Default cl_renderer to opengl2. 2016-10-02 20:00:59 -07:00
Tim Angus
f71fe6b613 Merge pull request #226 from smcv/underflow
Fix array underflow compiler warnings
2016-09-27 21:07:05 +01:00
Tim Angus
cce24668f7 Merge pull request #225 from smcv/reproducible-date
Pick up date from SOURCE_DATE_EPOCH, for reproducible builds
2016-09-27 21:05:24 +01:00
Tim Angus
3bd30f1f4f Merge pull request #223 from smcv/seperating
Fix mis-spellings of "separating" as "seperating"
2016-09-27 21:03:00 +01:00
Simon McVittie
f1a133acf1 UI_BuildFindPlayerList: make a sizeof() more obviously correct
As with the other branch of the if/else, each element of
foundPlayerServerNames is in fact the same size as each element of
foundPlayerServerAddresses, so it was fine; but it's better to make
it obvious that we are using the right array sizes.
2016-09-25 17:13:50 +01:00
Simon McVittie
01bfb1540f UI_BuildFindPlayerList: avoid array underflow
This function is used in the Team Arena menus

I don't think it's actually possible to reach this line with
foundPlayerServerNames < 1, because by the time we get here we have
set it to 1 + the actual number of servers; but if we did, it would
clearly underflow into foundPlayerServerNames[-1], which would be
undefined behaviour. gcc 6 diagnoses this with a warning:

code/ui/ui_main.c: In function ‘UI_BuildFindPlayerList’:
code/ui/ui_main.c:4138:16: warning: array subscript is below array bounds [-Warray-bounds]

Also correct the sizeof() invocation to make it more obviously
correct (in fact the buffers for names and addresses happen to both
be of size MAX_ADDRESSLENGTH, so it was fine, but it's good to be
obvious).
2016-09-25 17:13:47 +01:00
Simon McVittie
c5b6bb0d4b snd_wavelet: avoid undefined pointer below array bounds
Given an array b[] of length n, pointers to &b[0]..&b[n] are defined
(where only &b[0]..&b[n-1] can be validly dereferenced). &b[-1], or
equivalently b-1, is not something we can use in valid Standard C.

gcc 6 diagnoses this as:

code/client/snd_wavelet.c:33:9: warning: array subscript is below array bounds [-Warray-bounds]

and might take this undefined behaviour as permission to emit
"more efficient" object code that is not what the author expected,
for example nothing at all. Use a macro to fake a 1-based array instead.
2016-09-25 17:13:40 +01:00
SmileTheory
1cfa16674c OpenGL2: Some tr_image refactoring/cleanup. 2016-09-22 23:04:13 -07:00
Simon McVittie
9c76b546e3 Pick up date from SOURCE_DATE_EPOCH, for reproducible builds
The goal of reproducible builds is that a rebuild of the same source
code with the same compiler, libraries, etc. should result in the same
binaries. SOURCE_DATE_EPOCH provides a standard way for build systems
to fill in the date of the latest source change, typically from a git
commit or from metadata like the debian/changelog in Debian packages.

This does not change anything if SOURCE_DATE_EPOCH is not defined;
the intention is that a larger build system like a Debian package
will define it.

Please see https://reproducible-builds.org/ for more information about
reproducible builds.
2016-09-22 09:02:20 +01:00
Simon McVittie
7d4f9525df Fix mis-spellings of "separating" as "seperating"
Found by Debian's Lintian tool.
2016-09-22 08:56:30 +01:00
SmileTheory
8417c184b4 OpenGL2: Clamp entity lighting to more resemble OpenGL1. 2016-09-14 04:19:46 -07:00
SmileTheory
8749d62bbd OpenGL2: Remove per fragment tangent space calculation code. 2016-09-14 03:57:51 -07:00
SmileTheory
4faf1008a0 OpenGL2: Remove map color scaling and r_forceSunMapLightScale.
Also simplify overbright code in ComputeShaderColors().
2016-09-14 02:59:54 -07:00
Thomas Köppe
90f2f02c55 [code/botlib/l_precomp.c] Fix string buffer overflow 2016-09-13 13:37:19 +01:00
Tim Angus
bd062f713a Merge pull request #216 from tkoeppe/abs
[renderergl2/tr_main.c] Use floating-point fabsf() for floating-point values
2016-09-13 10:34:48 +01:00
SmileTheory
bbc9e263f0 OpenGL2: Fix more reversed VectorCopy4() usage. 2016-09-13 01:41:46 -07:00
Thomas Köppe
fe111df610 [qcommon/msg.c] Remove dead code (which had undefined behaviour) 2016-09-12 13:32:59 +01:00
SmileTheory
ec3779988c OpenGL2: Fix reversed VectorCopy4() usage. 2016-09-11 16:08:18 -07:00
SmileTheory
497a74f22a Fix undefined behavior when shifting left by 32.
https://bugzilla.icculus.org/show_bug.cgi?id=6432
2016-09-07 16:56:23 -07:00
SmileTheory
927c9cc23c OpenGL2: Make R_FreeSurfaceGridMeshData() static. 2016-09-07 14:59:19 -07:00
SmileTheory
f9e5712311 OpenGL2: Fix missing bounds calculation when loading BSP surfaces. 2016-09-06 19:44:14 -07:00
SmileTheory
dfbaf50324 OpenGL2: Store normals/tangents as int16_t[4]. 2016-09-06 00:57:15 -07:00
Thomas Köppe
0eb72cd8c4 [renderergl2/tr_main.c] Use floating-point fabsf() for floating-point values 2016-09-01 17:29:32 +01:00
Thomas Köppe
3c8da8ca07 [game/ai_main.c] Use floating-point fabs() for floating-point values 2016-08-23 19:36:27 +01:00
SmileTheory
c5c01e771a Fix joystick w/o controller mapping not working with SDL update. 2016-08-16 19:01:18 -07:00
MAN-AT-ARMS
966d39efed Add stripped SDL2 reference dll's to repo 2016-08-16 10:50:24 -04:00
MAN-AT-ARMS
4f9310dfa4 Update SDL2 to 2.0.4 2016-08-15 22:20:00 -04:00
SmileTheory
4ce600f5ac Missing bit of previous commit. 2016-08-14 22:33:48 -07:00
SmileTheory
fe8ac838e2 OpenGL2: Preallocate grid surfaces like other BSP surfaces. 2016-08-14 22:22:20 -07:00
SmileTheory
1cf0b21cda Fix black screen when in_joystick disabled but controller connected. 2016-08-11 00:46:43 -07:00
SmileTheory
6262972488 Fix stricmp usage in previous commit. 2016-08-08 02:43:02 -07:00
SmileTheory
b7f2ebd477 Better gamepad support. 2016-08-08 02:36:10 -07:00
SmileTheory
d09866861e Controller hot plug support. 2016-08-04 21:32:35 -07:00
SmileTheory
1972128927 Better defaults for joystick axes.
These changed from SDL1->SDL2 afaict.
2016-08-04 21:31:26 -07:00
SmileTheory
5252e28163 OpenGL2: Fix shader error logs. 2016-08-04 20:16:22 -07:00
SmileTheory
29ac117154 OpenGL2: Let unlit materials use parallax maps. 2016-07-29 01:53:50 -07:00
SmileTheory
e022abeebb OpenGL2: Fix GL_EXT_direct_state_access function names. 2016-07-28 20:04:25 -07:00
Sebastian Buchwald
5eae6de2f4 Fix some typos in comments 2016-07-26 14:43:41 +02:00
Sebastian Buchwald
8c6d43e6be Remove dead variables 2016-07-26 14:42:22 +02:00
Thomas Köppe
bbe99a8c6b [null/null_glimp.c] Fix up bitrot in null impl 2016-07-26 10:52:15 +01:00
SmileTheory
716438168f OpenGL2: Use loader for all extension funcs. 2016-07-26 00:41:31 -07:00
Thomas Köppe
18d6c8fda2 [botlib] Use floating point absolute value rather than truncate to integer 2016-07-25 18:36:31 +01:00
Thomas Köppe
9a5add2b60 [tools/asm/q3asm.c] Remove 'abs(unsigned)', which is unnecessary and potentially wrong 2016-07-25 18:35:33 +01:00
SmileTheory
f0086e8c2a OpenGL2: Add new GL function loader. 2016-07-25 06:30:25 -07:00
SmileTheory
251c983681 OpenGL2: Require OpenGL 2.0. 2016-07-24 21:29:13 -07:00
Zack Middleton
4474297af8 Fix bot team order to kill last player it killed
Bot's lastkilledplayer was set to -1 after carrying out an ordered kill.
Later in BotChat_Random() the PlayerName function was passed -1 which
caused a "Error: PlayerName: playernum out of range" message.

I think the reason it was set to negative one is so that if the bot is
ordered to kill the player again, the bot will not say it's done and
drop the goal. Though, if the bot killed the player based on it's own
decision, it will just say it's done and drop the goal (bug?).

Let's check the time of the last kill to see if it happened since the
team order was received instead of setting lastkilledplayer to -1
after completing the team ordered kill. This fixes bot dropping goal
if target player was the last player they killed and the PlayerName
out of range error.
2016-07-11 05:20:36 -05:00
Zack Middleton
274fa898b1 Fix typo of empty in ai_main.c 2016-06-27 21:13:27 -05:00
Thilo Schulz
9d6a95d4ad Missed this Cvar_Get() on com_introPlayed 2016-06-16 03:29:26 +02:00
Thilo Schulz
bb7ad55382 Only play logo/intro if their filenames have been defined in q_shared.h 2016-06-16 03:01:21 +02:00
Zack Middleton
780f0a5d3e Prevent CL_RunCinematic from reading cinTable[-1]
At the end of CL_RunCinematic, RoQShutdown sets currentHandle to -1.
This causes the return at the end to be return cinTable[-1].status.
Use return FMV_EOF when RoQShutdown is called.

I think FMV_EOF should be returned instead of FMV_IDLE which is set in
RoQShutdown because RoQShutdown is clearing out state so it can be reused
for a new cinematic.

The return value isn't actually read by the ioq3 client, renderers,
cgame, or ui.
2016-06-15 13:58:26 -05:00
Zack Middleton
0334f4a59b OpenGL2: Remove duplicate textureFloat = qfalse
glRefConfig.textureFloat is set to qfalse near wrong extension and then
farther down by the correct extension. Removing this has no effect.
2016-06-15 13:58:26 -05:00
Zack Middleton
420bd09164 OpenGL2: Remove loading (unused) glDrawBuffersARB 2016-06-15 13:58:26 -05:00
Victor Roemer
398dea397c Fix Makefile for OSX
Bump base SDK from 10.5 -> 10.7
Just use the builtin __APPLE__
2016-06-12 17:17:33 -04:00
SmileTheory
a40588c8b9 OpenGL2: Set cubemap mip selection to match output from ggxcc. 2016-06-08 03:36:15 -07:00
Zack Middleton
7811b2acb2 Fix iamamonkey printing 'levels' instead of 'awards' 2016-05-23 10:23:14 -05:00
Zack Middleton
d875c1f03c Improve keyboard/joystick input in Team Arena UI
Make Yes/No, Multi, Slider, and Bind items allow enter key to change
value without mouse over item. Add support for left and right arrow keys
and joystick button 1-4 to Yes/No, Multi, and Slider and many item
specific 'ownerdraw' key handlers.

Listbox still requires mouse hover and Team Arena main menu requires
mouse hover to get anywhere...

Enabling K_JOY1-4 to select in default key handler also caused additional
mouse button (K_AUX1-16) to select, which is done in q3_ui as well. Both
handle K_AUX equally badly (not treated as a mouse button and not handled
by item specific key handlers), so it's probably fine.
2016-05-23 09:06:34 -05:00
SmileTheory
6394180224 OpenGL2: Speed up surface merging. 2016-05-18 21:12:34 -07:00
Zack Middleton
2dcc5719e3 Explicitly set cull type for skybox
Explicitly set cull type for skybox to front, instead of using whatever
cull type the previous shader used (which could result in the skybox
not being visible due to only drawing back faces). The sky cloud stages
set the cull type so they are not affected by previous cull type.
2016-05-16 03:17:03 -05:00
Zack Middleton
acd659b05a OpenGL2: Fix specularScale override not being used in RB_IterateStagesGeneric 2016-05-09 10:47:34 -05:00
Zack Middleton
8b458e5457 Fix warnings that names passed to Name_PlayerNameCompletion is not const 2016-05-09 10:41:58 -05:00
SmileTheory
1f6703821f OpenGL2: Some FBO cleanup, and add non-depth blur to blur shader. 2016-04-05 02:37:05 -07:00
SmileTheory
60f56670d6 OpenGL2: Render metals as nonmetal on cubemaps, and some ComputeShaderColors cleanup. 2016-04-05 02:21:14 -07:00
SmileTheory
ee7fdef87f OpenGL2: Improve cubemap outside error. 2016-03-28 22:26:19 -07:00
Zack Middleton
11668bb1f0 Fix typo of SDL_Has3DNow() in Sys_GetProcessorFeatures() 2016-03-27 12:02:12 -05:00
Ryan C. Gordon
2a3c331ba1 Sys_GetProcessorFeatures() didn't check for 3DNow! or Altivec. 2016-03-27 12:46:38 -04:00
SmileTheory
f911e32bb0 OpenGL2: Fix horribly broken metallic shader. 2016-03-15 05:20:25 -07:00
SmileTheory
eb7408ddac OpenGL2: Fix r_lightmap. 2016-03-14 06:45:51 -07:00
SmileTheory
93e1feaaad OpenGL2: More ssao/depth blur improvements. 2016-03-11 04:37:50 -08:00
SmileTheory
87cb2167bf OpenGL2: Fixes to depth blur and ssao. 2016-03-10 03:44:21 -08:00
SmileTheory
934014e237 OpenGL2: Create FBOs if target image exists, not cvar settings. 2016-03-09 18:03:23 -08:00
SmileTheory
65b999446d OpenGL2: Speedup for SSAO & blur shaders, fix sunlight normals in lightall. 2016-03-08 18:30:51 -08:00
SmileTheory
5738d09969 OpenGL2: Add r_glossType. 2016-03-07 03:30:16 -08:00
SmileTheory
90d6f941f8 OpenGL2: Add r_shadowBlur. 2016-03-07 02:27:03 -08:00
SmileTheory
a331637745 OpenGL2: Shader optimization, and add dither to tonemap. 2016-02-17 20:06:18 -08:00
SmileTheory
d11cfc88d5 OpenGL2: Fix some GL errors and no sun shadows on older OpenGLs. 2016-02-17 19:49:21 -08:00
SmileTheory
0f6f2be155 OpenGL2: Typos. 2016-02-12 18:34:31 -08:00
SmileTheory
871872689e OpenGL2: Add named cubemaps and per-map env.json parsing. 2016-02-10 16:25:32 -08:00
SmileTheory
ad952b9537 OpenGL2: Merge several cvars into r_pbr.
r_glossIsRoughness, r_specularIsMetallic, r_framebufferGamma, r_tonemapGamma, r_materialGamma, r_lightGamma
2016-02-01 21:37:23 -08:00
SmileTheory
41791c662f Fix frame_msec possibly being zero in cl_input.c.
This fixes a mouse freezing bug.
2016-01-29 20:14:35 -08:00
SmileTheory
2b2f1aeaa1 OpenGL2: Load existing per-map cubemaps. 2016-01-28 16:39:42 -08:00
SmileTheory
558da25277 OpenGL2: Some FBO related cleanup/fixes. 2016-01-21 22:31:41 -08:00
SmileTheory
28ff383061 OpenGL2: Direct state access, part 3: Framebuffers. 2016-01-20 06:32:50 -08:00
SmileTheory
f70e9dac01 OpenGL2: Direct state access, part 2: Uniforms. 2016-01-18 23:30:36 -08:00
SmileTheory
275317fefb OpenGL2: Direct state access, part 1: Texture binds 2016-01-18 04:46:01 -08:00
SmileTheory
63e45fab9a OpenGL2: Remove specular ambient. 2016-01-15 02:46:30 -08:00
Zack Middleton
8d38e2307c Fix some opus_decode issues
It was able to fail the assert before. I was using opus_decode wrong.
2016-01-06 05:19:10 -06:00
Zack Middleton
615b73288f Use Opus for VoIP
Server/client VoIP protocol is handled by adding new cvars
cl_voipProtocol and sv_voipProtocol, sv_voip and cl_voip
are used to auto set/clear them. All users need to touch
are cl/sv_voip as 0 or 1 just like before.

Old Speex VoIP packets in demos are skipped.
New VoIP packets are skipped in demos if sv_voipProtocol
doesn't match cl_voipProtocol.

Notable difference between usage of speex and opus codecs,
when using Speex client would be sent 80ms at a time.
Using Opus, 60ms is sent at a time. This was changed because
the Opus codec supports encoding up to 60ms at a time.
(Simpler to send only one codec frame in a packet.)
2016-01-06 05:19:10 -06:00
Zachary J. Slater
fe619680f8 Merge pull request #73 from Pan7/sayto
sayto cmd with player name completion
2015-12-28 09:04:19 -08:00
Zachary J. Slater
5555788867 Merge pull request #103 from openmoh/ioq3-intro
Have custom intro cinematics for standalone game
2015-12-28 08:56:20 -08:00
SmileTheory
e2b2437966 OpenGL2: Add r_cubemapSize. 2015-12-24 16:34:58 -08:00
SmileTheory
c3216f54d2 OpenGL2: Replace r_exportCubemaps cvar with exportCubemaps command. 2015-12-23 09:58:11 -08:00
SmileTheory
a6a6162f04 OpenGL2: Add r_exportCubemaps for saving cubemaps on map load. 2015-12-22 05:04:07 -08:00
SmileTheory
06feb6115b OpenGL2: Support picmip for DDS textures. 2015-12-21 20:24:19 -08:00
SmileTheory
e25035672d Fix error handling in RE_SaveJPGToBuffer(). 2015-12-21 01:05:55 -08:00
SmileTheory
d8fd07b69a Make jpeg loading errors non-fatal. 2015-12-20 03:08:50 -08:00
SmileTheory
f78d04eba8 OpenGL2: Add null dereference checks to DDS loader. 2015-12-18 19:42:15 -08:00
SmileTheory
f965f3c66e OpenGL2: DDS (compressed textures) support. 2015-12-18 06:53:20 -08:00
SmileTheory
336419235a OpenGL2: Some tr_image.c cleanup. 2015-12-16 07:12:30 -08:00
SmileTheory
cbfc3471bc OpenGL2: Switch to RGTC from LATC for normal maps.
Also added a RGTC compressor as a workaround on Intel graphics.
2015-12-15 03:23:55 -08:00
SmileTheory
c07cc282d0 OpenGL2: Use correct sunlight color for sunlight specular. 2015-12-09 05:25:58 -08:00
SmileTheory
08ecc3a80a OpenGL2: Forgot a multiply. 2015-12-09 03:42:12 -08:00
SmileTheory
f9c72eee69 OpenGL2: Parse radius entries from misc_cubemap entities. 2015-12-09 02:00:40 -08:00
SmileTheory
b52ede0445 OpenGL2: Add r_glossIsRoughness. 2015-12-08 21:23:50 -08:00
SmileTheory
92d4b20129 OpenGL2: Add option in code for alternate overbright method. 2015-12-08 05:17:05 -08:00
SmileTheory
e5aabdaff6 OpenGL2: Remove some rendering options for simplicity. 2015-12-03 02:44:33 -08:00
SmileTheory
2954bdfa65 OpenGL2: automatically load textures with a _s suffix as specular. 2015-12-02 17:08:40 -08:00
SmileTheory
f663104cfc Access 32-bit registry key from 64-bit Windows correctly. 2015-12-02 17:07:26 -08:00
Zack Middleton
41f83ac8b0 Replace 4 with sizeof( int ) in R_GetCommandBufferReserved 2015-10-17 21:58:11 -05:00
Zack Middleton
81e2b6c0cf Fix reserved size for swap buffer command being too small on x86_64 2015-10-16 20:50:25 -05:00
Zack Middleton
e6209f3b7c Fix crash from reading past end of tr.refdef.drawSurfs
The number of draw surfaces was range checked against number of surfaces for
the current view but needs to check total for the frame otherwise can read
past the end of the tr.refdef.drawSurfs array when there are multiple views.
2015-10-16 20:21:15 -05:00