From 40f83bd294af4a32c66a9b1038d4be15b640c7a5 Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Sat, 24 Oct 2026 16:57:55 -0500 Subject: [PATCH] Avoid wedging VDPAU renderer if mixer creation fails --- app/streaming/video/ffmpeg-renderers/vdpau.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/app/streaming/video/ffmpeg-renderers/vdpau.cpp b/app/streaming/video/ffmpeg-renderers/vdpau.cpp index dc0522e8..f1423a8e 100644 --- a/app/streaming/video/ffmpeg-renderers/vdpau.cpp +++ b/app/streaming/video/ffmpeg-renderers/vdpau.cpp @@ -541,11 +541,12 @@ void VDPAURenderer::renderFrame(AVFrame* frame) // We need to create the mixer on the fly, because we don't know the dimensions // of our video surfaces in advance of decoding. We also need to recreate it when // the frame format or size changes. - if (hasFrameFormatChanged(frame)) { - if (m_VideoMixer != 0) { - m_VdpVideoMixerDestroy(m_VideoMixer); - } + if (hasFrameFormatChanged(frame) && m_VideoMixer != 0) { + m_VdpVideoMixerDestroy(m_VideoMixer); + m_VideoMixer = 0; + } + if (m_VideoMixer == 0) { VdpChromaType videoSurfaceChroma; uint32_t videoSurfaceWidth, videoSurfaceHeight; status = m_VdpVideoSurfaceGetParameters(videoSurface, &videoSurfaceChroma, @@ -580,6 +581,7 @@ void VDPAURenderer::renderFrame(AVFrame* frame) SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "VdpVideoMixerCreate() failed: %s", m_VdpGetErrorString(status)); + m_VideoMixer = 0; return; } }