Fix double-free in Vulkan renderer when an overlay is disabled

Also a drive-by fix to avoid pl_tex copying
This commit is contained in:
Cameron Gutman
2026-02-04 23:05:01 -06:00
parent 092eb1b117
commit 8795fb54f4

View File

@@ -806,6 +806,7 @@ void PlVkRenderer::renderFrame(AVFrame *frame)
// If we have an overlay but it's been disabled, free the overlay texture
if (m_Overlays[i].hasOverlay && !Session::get()->getOverlayManager().isOverlayEnabled((Overlay::OverlayType)i)) {
texturesToDestroy.push_back(m_Overlays[i].overlay.tex);
SDL_zero(m_Overlays[i].overlay);
m_Overlays[i].hasOverlay = false;
}
@@ -884,7 +885,7 @@ void PlVkRenderer::renderFrame(AVFrame *frame)
UnmapExit:
// Delete any textures that need to be destroyed
for (pl_tex texture : texturesToDestroy) {
for (pl_tex& texture : texturesToDestroy) {
pl_tex_destroy(m_Vulkan->gpu, &texture);
}