mirror of
https://github.com/cemu-project/Cemu.git
synced 2025-07-07 15:31:18 +12:00
Vulkan: Fix ImGui font leak
This commit is contained in:
parent
e524e080e1
commit
16c5726db5
2 changed files with 12 additions and 0 deletions
|
@ -1623,6 +1623,7 @@ void VulkanRenderer::Initialize()
|
||||||
|
|
||||||
void VulkanRenderer::Shutdown()
|
void VulkanRenderer::Shutdown()
|
||||||
{
|
{
|
||||||
|
DeleteFontTextures();
|
||||||
Renderer::Shutdown();
|
Renderer::Shutdown();
|
||||||
SubmitCommandBuffer();
|
SubmitCommandBuffer();
|
||||||
WaitDeviceIdle();
|
WaitDeviceIdle();
|
||||||
|
@ -1853,6 +1854,7 @@ void VulkanRenderer::DeleteTexture(ImTextureID id)
|
||||||
|
|
||||||
void VulkanRenderer::DeleteFontTextures()
|
void VulkanRenderer::DeleteFontTextures()
|
||||||
{
|
{
|
||||||
|
WaitDeviceIdle();
|
||||||
ImGui_ImplVulkan_DestroyFontsTexture();
|
ImGui_ImplVulkan_DestroyFontsTexture();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2675,6 +2677,7 @@ void VulkanRenderer::RecreateSwapchain(bool mainWindow, bool skipCreate)
|
||||||
Vector2i size;
|
Vector2i size;
|
||||||
if (mainWindow)
|
if (mainWindow)
|
||||||
{
|
{
|
||||||
|
ImGui_ImplVulkan_DestroyFontsTexture();
|
||||||
ImGui_ImplVulkan_Shutdown();
|
ImGui_ImplVulkan_Shutdown();
|
||||||
gui_getWindowPhysSize(size.x, size.y);
|
gui_getWindowPhysSize(size.x, size.y);
|
||||||
}
|
}
|
||||||
|
|
|
@ -465,6 +465,15 @@ void ImGui_ImplVulkan_DestroyFontsTexture()
|
||||||
if (g_FontView) { vkDestroyImageView(v->Device, g_FontView, v->Allocator); g_FontView = VK_NULL_HANDLE; }
|
if (g_FontView) { vkDestroyImageView(v->Device, g_FontView, v->Allocator); g_FontView = VK_NULL_HANDLE; }
|
||||||
if (g_FontImage) { vkDestroyImage(v->Device, g_FontImage, v->Allocator); g_FontImage = VK_NULL_HANDLE; }
|
if (g_FontImage) { vkDestroyImage(v->Device, g_FontImage, v->Allocator); g_FontImage = VK_NULL_HANDLE; }
|
||||||
if (g_FontMemory) { vkFreeMemory(v->Device, g_FontMemory, v->Allocator); g_FontMemory = VK_NULL_HANDLE; }
|
if (g_FontMemory) { vkFreeMemory(v->Device, g_FontMemory, v->Allocator); g_FontMemory = VK_NULL_HANDLE; }
|
||||||
|
|
||||||
|
ImGuiIO& io = ImGui::GetIO();
|
||||||
|
auto texture = io.Fonts->TexID;
|
||||||
|
if(texture != (ImTextureID)nullptr)
|
||||||
|
{
|
||||||
|
ImGui_ImplVulkan_DeleteTexture(texture);
|
||||||
|
delete (ImGuiTexture*)texture;
|
||||||
|
io.Fonts->TexID = nullptr;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ImGui_ImplVulkan_CreateFontsTexture(VkCommandBuffer command_buffer)
|
bool ImGui_ImplVulkan_CreateFontsTexture(VkCommandBuffer command_buffer)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue