some wierd seg fault (think its fixed)
This commit is contained in:
@@ -35,6 +35,7 @@ gnReturnCode createMetalPresentationQueue(gnPresentationQueueHandle presentation
|
|||||||
presentationQueue->imageCount = presentationInfo.minImageCount;
|
presentationQueue->imageCount = presentationInfo.minImageCount;
|
||||||
presentationQueue->images = malloc(sizeof(gnTexture) * presentationInfo.minImageCount);
|
presentationQueue->images = malloc(sizeof(gnTexture) * presentationInfo.minImageCount);
|
||||||
presentationQueue->presentationQueue->textures = metalTextureArrayListCreate();
|
presentationQueue->presentationQueue->textures = metalTextureArrayListCreate();
|
||||||
|
presentationQueue->presentationQueue->avaliableTextures = uint32_tArrayListCreate();
|
||||||
for (int i = 0; i < presentationInfo.minImageCount; i++) {
|
for (int i = 0; i < presentationInfo.minImageCount; i++) {
|
||||||
presentationQueue->images[i] = malloc(sizeof(struct gnTexture_t));
|
presentationQueue->images[i] = malloc(sizeof(struct gnTexture_t));
|
||||||
presentationQueue->images[i]->texture = malloc(sizeof(gnPlatformTexture));
|
presentationQueue->images[i]->texture = malloc(sizeof(gnPlatformTexture));
|
||||||
@@ -42,12 +43,12 @@ gnReturnCode createMetalPresentationQueue(gnPresentationQueueHandle presentation
|
|||||||
metalTextureArrayListAdd(&presentationQueue->presentationQueue->textures, presentationQueue->images[i]->texture->texture);
|
metalTextureArrayListAdd(&presentationQueue->presentationQueue->textures, presentationQueue->images[i]->texture->texture);
|
||||||
uint32_tArrayListAdd(&presentationQueue->presentationQueue->avaliableTextures, i);
|
uint32_tArrayListAdd(&presentationQueue->presentationQueue->avaliableTextures, i);
|
||||||
}
|
}
|
||||||
|
[textureDescriptor release];
|
||||||
|
|
||||||
return GN_SUCCESS;
|
return GN_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
gnReturnCode getMetalPresentQueueImage(gnPresentationQueueHandle presentationQueue, uint64_t timeout, gnSemaphore semaphore, uint32_t* imageIndex) {
|
gnReturnCode getMetalPresentQueueImage(gnPresentationQueueHandle presentationQueue, uint64_t timeout, gnSemaphore semaphore, uint32_t* imageIndex) {
|
||||||
semaphore->semaphore->eventTriggered = gnFalse;
|
|
||||||
while (presentationQueue->presentationQueue->avaliableTextures.count == 0) {}
|
while (presentationQueue->presentationQueue->avaliableTextures.count == 0) {}
|
||||||
*imageIndex = presentationQueue->presentationQueue->avaliableTextures.data[0];
|
*imageIndex = presentationQueue->presentationQueue->avaliableTextures.data[0];
|
||||||
uint32_tArrayListPopHead(&presentationQueue->presentationQueue->avaliableTextures);
|
uint32_tArrayListPopHead(&presentationQueue->presentationQueue->avaliableTextures);
|
||||||
@@ -58,7 +59,10 @@ gnReturnCode getMetalPresentQueueImage(gnPresentationQueueHandle presentationQue
|
|||||||
void destroyMetalPresentationQueue(gnPresentationQueueHandle presentationQueue) {
|
void destroyMetalPresentationQueue(gnPresentationQueueHandle presentationQueue) {
|
||||||
free(presentationQueue->presentationQueue->avaliableTextures.data);
|
free(presentationQueue->presentationQueue->avaliableTextures.data);
|
||||||
presentationQueue->presentationQueue->avaliableTextures.count = 0;
|
presentationQueue->presentationQueue->avaliableTextures.count = 0;
|
||||||
for (int i = 0; i < presentationQueue->imageCount; i++)
|
for (int i = 0; i < presentationQueue->imageCount; i++) {
|
||||||
[presentationQueue->images[i]->texture->texture release];
|
[presentationQueue->images[i]->texture->texture release];
|
||||||
|
free(presentationQueue->images[i]->texture);
|
||||||
|
free(presentationQueue->images[i]);
|
||||||
|
}
|
||||||
free(presentationQueue->presentationQueue);
|
free(presentationQueue->presentationQueue);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user