diff --git a/app/streaming/video/ffmpeg-renderers/mmal.cpp b/app/streaming/video/ffmpeg-renderers/mmal.cpp index 3ebe82b6..63563c25 100644 --- a/app/streaming/video/ffmpeg-renderers/mmal.cpp +++ b/app/streaming/video/ffmpeg-renderers/mmal.cpp @@ -219,32 +219,19 @@ int MmalRenderer::getDecoderColorspace() void MmalRenderer::setupBackground(PDECODER_PARAMETERS params) { - SDL_SysWMinfo info; - - SDL_VERSION(&info.version); - - if (!SDL_GetWindowWMInfo(params->window, &info)) { + // Create a renderer and draw a black background for the area not covered by the MMAL overlay. + // On the KMSDRM backend, this triggers the modeset that puts the CRTC into the mode we selected. + m_BackgroundRenderer = SDL_CreateRenderer(params->window, -1, SDL_RENDERER_SOFTWARE); + if (m_BackgroundRenderer == nullptr) { SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, - "SDL_GetWindowWMInfo() failed: %s", - SDL_GetError()); + "SDL_CreateRenderer() failed: %s", + SDL_GetError()); return; } - // On X11, we can safely create a renderer and draw a black background. - // Due to conflicts with Qt, it's unsafe to do this for KMSDRM. - if (info.subsystem == SDL_SYSWM_X11) { - m_BackgroundRenderer = SDL_CreateRenderer(params->window, -1, SDL_RENDERER_SOFTWARE); - if (m_BackgroundRenderer == nullptr) { - SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, - "SDL_CreateRenderer() failed: %s", - SDL_GetError()); - return; - } - - SDL_SetRenderDrawColor(m_BackgroundRenderer, 0, 0, 0, SDL_ALPHA_OPAQUE); - SDL_RenderClear(m_BackgroundRenderer); - SDL_RenderPresent(m_BackgroundRenderer); - } + SDL_SetRenderDrawColor(m_BackgroundRenderer, 0, 0, 0, SDL_ALPHA_OPAQUE); + SDL_RenderClear(m_BackgroundRenderer); + SDL_RenderPresent(m_BackgroundRenderer); } void MmalRenderer::InputPortCallback(MMAL_PORT_T*, MMAL_BUFFER_HEADER_T* buffer)