Update MetalTextureCache close handling
This commit is contained in:
@@ -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(); }
|
||||
|
||||
@@ -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?
|
||||
|
||||
@@ -89,6 +89,7 @@ namespace OpenVulkano::Vulkan
|
||||
{
|
||||
context.device->device.destroySemaphore(sema);
|
||||
}
|
||||
OnClose();
|
||||
depthBufferQuery.Close();
|
||||
uiRenderer.Close();
|
||||
resourceManager.Close();
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user