summaryrefslogtreecommitdiff
path: root/src/renderergl1
diff options
context:
space:
mode:
Diffstat (limited to 'src/renderergl1')
-rw-r--r--src/renderergl1/tr_cmds.c19
1 files changed, 15 insertions, 4 deletions
diff --git a/src/renderergl1/tr_cmds.c b/src/renderergl1/tr_cmds.c
index 23aa9897..0ff7faee 100644
--- a/src/renderergl1/tr_cmds.c
+++ b/src/renderergl1/tr_cmds.c
@@ -115,19 +115,19 @@ void R_IssuePendingRenderCommands( void ) {
/*
============
-R_GetCommandBuffer
+R_GetCommandBufferReserved
make sure there is enough command space
============
*/
-void *R_GetCommandBuffer( int bytes ) {
+void *R_GetCommandBufferReserved( int bytes, int reservedBytes ) {
renderCommandList_t *cmdList;
cmdList = &backEndData->commands;
bytes = PAD(bytes, sizeof(void *));
// always leave room for the end of list command
- if ( cmdList->used + bytes + 4 > MAX_RENDER_COMMANDS ) {
+ if ( cmdList->used + bytes + 4 + reservedBytes > MAX_RENDER_COMMANDS ) {
if ( bytes > MAX_RENDER_COMMANDS - 4 ) {
ri.Error( ERR_FATAL, "R_GetCommandBuffer: bad size %i", bytes );
}
@@ -140,6 +140,17 @@ void *R_GetCommandBuffer( int bytes ) {
return cmdList->cmds + cmdList->used - bytes;
}
+/*
+=============
+R_GetCommandBuffer
+
+returns NULL if there is not enough space for important commands
+=============
+*/
+void *R_GetCommandBuffer( int bytes ) {
+ return R_GetCommandBufferReserved( bytes, sizeof ( swapBuffersCommand_t ) );
+}
+
/*
=============
@@ -540,7 +551,7 @@ void RE_EndFrame( int *frontEndMsec, int *backEndMsec ) {
if ( !tr.registered ) {
return;
}
- cmd = R_GetCommandBuffer( sizeof( *cmd ) );
+ cmd = R_GetCommandBufferReserved( sizeof( *cmd ), 0 );
if ( !cmd ) {
return;
}