diff options
author | Tim Angus <tim@ngus.net> | 2011-01-24 22:07:34 +0000 |
---|---|---|
committer | Tim Angus <tim@ngus.net> | 2013-01-03 00:17:54 +0000 |
commit | f96ae257eab6fae9b4b4f4409c58dbce6915ac35 (patch) | |
tree | c9828a3c3726d4b260493a710fd1f2f9f7bc6056 /src/renderer | |
parent | a0101a6294268ef392b3fa4ecad12706e6cf4cf3 (diff) |
* Merge ioq3-r1813
Diffstat (limited to 'src/renderer')
-rw-r--r-- | src/renderer/tr_model.c | 4 | ||||
-rw-r--r-- | src/renderer/tr_shade_calc.c | 4 | ||||
-rw-r--r-- | src/renderer/tr_shader.c | 37 |
3 files changed, 25 insertions, 20 deletions
diff --git a/src/renderer/tr_model.c b/src/renderer/tr_model.c index 70660583..b02d52a4 100644 --- a/src/renderer/tr_model.c +++ b/src/renderer/tr_model.c @@ -563,8 +563,8 @@ static qboolean R_LoadMDR( model_t *mod, void *buffer, int filesize, const char ((float *)frame->bones)[j] = LittleFloat( ((float *)curframe->bones)[j] ); } - curframe++; - frame++; + curframe = (mdrFrame_t *) &curframe->bones[mdr->numBones]; + frame = (mdrFrame_t *) &frame->bones[mdr->numBones]; } } diff --git a/src/renderer/tr_shade_calc.c b/src/renderer/tr_shade_calc.c index c3de88cc..ba61a6df 100644 --- a/src/renderer/tr_shade_calc.c +++ b/src/renderer/tr_shade_calc.c @@ -360,10 +360,10 @@ static void AutospriteDeform( void ) { vec3_t leftDir, upDir; if ( tess.numVertexes & 3 ) { - ri.Printf( PRINT_WARNING, "Autosprite shader %s had odd vertex count", tess.shader->name ); + ri.Printf( PRINT_WARNING, "Autosprite shader %s had odd vertex count\n", tess.shader->name ); } if ( tess.numIndexes != ( tess.numVertexes >> 2 ) * 6 ) { - ri.Printf( PRINT_WARNING, "Autosprite shader %s had odd index count", tess.shader->name ); + ri.Printf( PRINT_WARNING, "Autosprite shader %s had odd index count\n", tess.shader->name ); } oldVerts = tess.numVertexes; diff --git a/src/renderer/tr_shader.c b/src/renderer/tr_shader.c index 8e86a73f..bfcd47d3 100644 --- a/src/renderer/tr_shader.c +++ b/src/renderer/tr_shader.c @@ -2328,11 +2328,15 @@ static char *FindShaderInShaderText( const char *shadername ) { hash = generateHashValue(shadername, MAX_SHADERTEXT_HASH); - for (i = 0; shaderTextHashTable[hash][i]; i++) { - p = shaderTextHashTable[hash][i]; - token = COM_ParseExt(&p, qtrue); - if ( !Q_stricmp( token, shadername ) ) { - return p; + if(shaderTextHashTable[hash]) + { + for (i = 0; shaderTextHashTable[hash][i]; i++) + { + p = shaderTextHashTable[hash][i]; + token = COM_ParseExt(&p, qtrue); + + if(!Q_stricmp(token, shadername)) + return p; } } @@ -2867,7 +2871,6 @@ void R_ShaderList_f (void) { ri.Printf (PRINT_ALL, "------------------\n"); } - /* ==================== ScanAndLoadShaderFiles @@ -2884,7 +2887,7 @@ static void ScanAndLoadShaderFiles( void ) char *p; int numShaderFiles; int i; - char *oldp, *token, *hashMem; + char *oldp, *token, *hashMem, *textEnd; int shaderTextHashTableSizes[MAX_SHADERTEXT_HASH], hash, size; long sum = 0, summand; @@ -2945,20 +2948,22 @@ static void ScanAndLoadShaderFiles( void ) // build single large buffer s_shaderText = ri.Hunk_Alloc( sum + numShaderFiles*2, h_low ); s_shaderText[ 0 ] = '\0'; - + textEnd = s_shaderText; + // free in reverse order, so the temp files are all dumped for ( i = numShaderFiles - 1; i >= 0 ; i-- ) { - if(buffers[i]) - { - p = &s_shaderText[strlen(s_shaderText)]; - strcat( s_shaderText, buffers[i] ); - ri.FS_FreeFile( buffers[i] ); - COM_Compress(p); - strcat( s_shaderText, "\n" ); - } + if ( !buffers[i] ) + continue; + + strcat( textEnd, buffers[i] ); + strcat( textEnd, "\n" ); + textEnd += strlen( textEnd ); + ri.FS_FreeFile( buffers[i] ); } + COM_Compress( s_shaderText ); + // free up memory ri.FS_FreeFileList( shaderFiles ); |