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
@@ -58,7 +58,11 @@ public:
{ @autoreleasepool {
buffer = nil;
for (int i = 0; i < BUFFER_FRAMES; i++)
{
if (mappedFrames[i])
dispatch_semaphore_signal(frameSemaphores[i]);
frameSemaphores[i] = nil;
}
}}
MapInfo map(size_t /*minsize*/) override
@@ -91,9 +95,12 @@ public:
if (mappedFrames[frameIndex])
{
/*__weak*/ dispatch_semaphore_t semaphore = frameSemaphores[frameIndex];
StreamBuffer *pthis = this;
pthis->retain();
[cmd addCompletedHandler:^(id<MTLCommandBuffer> _Nonnull)
{
dispatch_semaphore_signal(semaphore);
pthis->release();
}];
}