diff --git a/app/streaming/video/ffmpeg-renderers/vaapi.cpp b/app/streaming/video/ffmpeg-renderers/vaapi.cpp index cbcd15f4..c9062c96 100644 --- a/app/streaming/video/ffmpeg-renderers/vaapi.cpp +++ b/app/streaming/video/ffmpeg-renderers/vaapi.cpp @@ -41,12 +41,12 @@ VAAPIRenderer::~VAAPIRenderer() VADisplay display = vaDeviceContext->display; for (int i = 0; i < Overlay::OverlayMax; i++) { - if (m_OverlayImage[i].image_id != 0) { - vaDestroyImage(display, m_OverlayImage[i].image_id); - } if (m_OverlaySubpicture[i] != 0) { vaDestroySubpicture(display, m_OverlaySubpicture[i]); } + if (m_OverlayImage[i].image_id != 0) { + vaDestroyImage(display, m_OverlayImage[i].image_id); + } } av_buffer_unref(&m_HwContext); @@ -483,6 +483,14 @@ void VAAPIRenderer::notifyOverlayUpdated(Overlay::OverlayType type) m_OverlaySubpicture[type] = 0; SDL_UnlockMutex(m_OverlayMutex); + if (oldSubpictureId != 0) { + status = vaDestroySubpicture(vaDeviceContext->display, oldSubpictureId); + if (status != VA_STATUS_SUCCESS) { + SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, + "vaDestroySubpicture() failed: %d", + status); + } + } if (oldImageId != 0) { status = vaDestroyImage(vaDeviceContext->display, oldImageId); if (status != VA_STATUS_SUCCESS) { @@ -490,12 +498,6 @@ void VAAPIRenderer::notifyOverlayUpdated(Overlay::OverlayType type) "vaDestroyImage() failed: %d", status); } - status = vaDestroySubpicture(vaDeviceContext->display, oldSubpictureId); - if (status != VA_STATUS_SUCCESS) { - SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, - "vaDestroySubpicture() failed: %d", - status); - } } if (!Session::get()->getOverlayManager().isOverlayEnabled(type)) {