From dcc567ebda75a10f065b037b11bc50cd88aa5ded Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Sat, 31 Jul 2021 17:24:18 -0500 Subject: [PATCH] Disable the EGL render thread on Wayland --- app/streaming/video/ffmpeg-renderers/eglvid.cpp | 7 +++++++ app/streaming/video/ffmpeg-renderers/eglvid.h | 1 + 2 files changed, 8 insertions(+) diff --git a/app/streaming/video/ffmpeg-renderers/eglvid.cpp b/app/streaming/video/ffmpeg-renderers/eglvid.cpp index ccc3277d..8d56b3df 100644 --- a/app/streaming/video/ffmpeg-renderers/eglvid.cpp +++ b/app/streaming/video/ffmpeg-renderers/eglvid.cpp @@ -747,6 +747,13 @@ bool EGLRenderer::specialize() { return err == GL_NO_ERROR; } +bool EGLRenderer::isRenderThreadSupported() +{ + // libdecor may try to draw CSD on our window surface which will race with + // our rendering code here, so we must not use the render thread on wayland. + return strcmp(SDL_GetCurrentVideoDriver(), "wayland") != 0; +} + void EGLRenderer::renderFrame(AVFrame* frame) { EGLImage imgs[EGL_MAX_PLANES]; diff --git a/app/streaming/video/ffmpeg-renderers/eglvid.h b/app/streaming/video/ffmpeg-renderers/eglvid.h index 336e8fac..7574d511 100644 --- a/app/streaming/video/ffmpeg-renderers/eglvid.h +++ b/app/streaming/video/ffmpeg-renderers/eglvid.h @@ -16,6 +16,7 @@ public: virtual void notifyOverlayUpdated(Overlay::OverlayType) override; virtual bool isPixelFormatSupported(int videoFormat, enum AVPixelFormat pixelFormat) override; virtual AVPixelFormat getPreferredPixelFormat(int videoFormat) override; + virtual bool isRenderThreadSupported() override; private: