From 408f93732b55023c58480bfc86315c0c9e0b2d65 Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Sat, 25 Aug 2018 11:21:52 -0700 Subject: [PATCH] Fix 'invalid VADisplay' errors on renderer destruction --- app/streaming/video/ffmpeg.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/app/streaming/video/ffmpeg.cpp b/app/streaming/video/ffmpeg.cpp index 018a3e10..98a17f6b 100644 --- a/app/streaming/video/ffmpeg.cpp +++ b/app/streaming/video/ffmpeg.cpp @@ -100,10 +100,15 @@ void FFmpegVideoDecoder::reset() delete m_Pacer; m_Pacer = nullptr; + // This must be called after deleting Pacer because it + // may be holding AVFrames to free in its destructor. + // However, it must be called before deleting the IFFmpegRenderer + // since the codec context may be referencing objects that we + // need to delete in the renderer destructor. + avcodec_free_context(&m_VideoDecoderCtx); + delete m_Renderer; m_Renderer = nullptr; - - avcodec_free_context(&m_VideoDecoderCtx); } bool FFmpegVideoDecoder::completeInitialization(AVCodec* decoder, SDL_Window* window,