metal: fix crash when stream buffers are resized

This commit is contained in:
Alex Szpakowski
2021-04-02 17:53:55 -03:00
parent 4cac353908
commit 9acf7df8e8
4 changed files with 18 additions and 7 deletions
+8 -5
View File
@@ -190,9 +190,12 @@ Graphics::~Graphics()
defaultFont.set(nullptr);
delete batchedDrawState.vb[0];
delete batchedDrawState.vb[1];
delete batchedDrawState.indexBuffer;
if (batchedDrawState.vb[0])
batchedDrawState.vb[0]->release();
if (batchedDrawState.vb[1])
batchedDrawState.vb[1]->release();
if (batchedDrawState.indexBuffer)
batchedDrawState.indexBuffer->release();
for (int i = 0; i < (int) ShaderStage::STAGE_MAX_ENUM; i++)
cachedShaderStages[i].clear();
@@ -1196,14 +1199,14 @@ Graphics::BatchedVertexData Graphics::requestBatchedDraw(const BatchedDrawComman
{
if (state.vb[i]->getSize() < buffersizes[i])
{
delete state.vb[i];
state.vb[i]->release();
state.vb[i] = newStreamBuffer(BUFFERUSAGE_VERTEX, buffersizes[i]);
}
}
if (state.indexBuffer->getSize() < buffersizes[2])
{
delete state.indexBuffer;
state.indexBuffer->release();
state.indexBuffer = newStreamBuffer(BUFFERUSAGE_INDEX, buffersizes[2]);
}
}