Update MetalTextureCache close handling

This commit is contained in:
Georg Hagen
2025-01-06 16:52:36 +01:00
parent ac0a0e84b4
commit 89d732d570
4 changed files with 6 additions and 2 deletions

View File

@@ -21,6 +21,7 @@ namespace OpenVulkano::Vulkan
Vulkan::ResourceManager* m_resourceManager = nullptr;
std::map<void*, MetalBackedTexture> m_mtlToVkTextureMap;
Renderer* m_renderer;
IEventHandler* m_eventHandler = nullptr;
public:
~MetalTextureCache() { if (m_resourceManager) Close(); }

View File

@@ -28,7 +28,7 @@ namespace OpenVulkano::Vulkan
Logger::AR->error("Failed to create metal texture cache! Status code: {}", result);
}
m_resourceManager = &m_renderer->GetResourceManager();
m_renderer->RegisterCloseable(this);
m_renderer->OnClose += EventHandler(this, &MetalTextureCache::Close);
}
Scene::Texture* MetalTextureCache::Get(CVPixelBufferRef pixelBuffer, MTLPixelFormat pixelFormat)
@@ -57,7 +57,7 @@ namespace OpenVulkano::Vulkan
void MetalTextureCache::Close()
{
m_mtlToVkTextureMap.clear();
m_renderer->UnregisterCloseable(this);
m_eventHandler->SetInvalid();
m_renderer = nullptr;
m_resourceManager = nullptr;
//TODO delete the texture cache object?

View File

@@ -89,6 +89,7 @@ namespace OpenVulkano::Vulkan
{
context.device->device.destroySemaphore(sema);
}
OnClose();
depthBufferQuery.Close();
uiRenderer.Close();
resourceManager.Close();

View File

@@ -87,5 +87,7 @@ namespace OpenVulkano::Vulkan
float GetLastQueriedDepthValue() override { return depthBufferQuery.GetQueriedValue(); }
void SetQueryDepthValue(const Math::Vector2f& depthCoordinates) override { depthBufferQuery.SetQueryCoordinates(depthCoordinates); }
Event<> OnClose;
};
}