about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/engine/client/graphics_threaded.cpp14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/engine/client/graphics_threaded.cpp b/src/engine/client/graphics_threaded.cpp
index 8a3e4f50..50a116b4 100644
--- a/src/engine/client/graphics_threaded.cpp
+++ b/src/engine/client/graphics_threaded.cpp
@@ -81,7 +81,19 @@ void CGraphics_Threaded::FlushVertices()
 	}
 
 	mem_copy(Cmd.m_pVertices, m_aVertices, sizeof(CCommandBuffer::SVertex)*NumVerts);
-	m_pCommandBuffer->AddCommand(Cmd);
+
+	// check if we have enough free memory in the commandbuffer
+	if(!m_pCommandBuffer->AddCommand(Cmd))
+	{
+		// kick command buffer and try again
+		KickCommandBuffer();
+
+		if(!m_pCommandBuffer->AddCommand(Cmd))
+		{
+			dbg_msg("graphics", "failed to allocate memory for render command");
+			return;
+		}
+	}
 }
 
 void CGraphics_Threaded::AddVertices(int Count)