Skip to content

Commit 30274f3

Browse files
committed
Don't keep the dummy renderer alive for EGLRenderer's lifetime
At best, it doesn't do anything other than some queue some viewport changes via SDL_RendererEventWatch(). At worst, it can race with the render thread and cause trouble.
1 parent 66a30c6 commit 30274f3

2 files changed

Lines changed: 8 additions & 16 deletions

File tree

app/streaming/video/ffmpeg-renderers/eglvid.cpp

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -75,8 +75,7 @@ EGLRenderer::EGLRenderer(IFFmpegRenderer *backendRenderer)
7575
m_eglClientWaitSync(nullptr),
7676
m_GlesMajorVersion(0),
7777
m_GlesMinorVersion(0),
78-
m_HasExtUnpackSubimage(false),
79-
m_DummyRenderer(nullptr)
78+
m_HasExtUnpackSubimage(false)
8079
{
8180
SDL_assert(backendRenderer);
8281
SDL_assert(backendRenderer->canExportEGL());
@@ -111,10 +110,6 @@ EGLRenderer::~EGLRenderer()
111110

112111
SDL_GL_DeleteContext(m_Context);
113112
}
114-
115-
if (m_DummyRenderer) {
116-
SDL_DestroyRenderer(m_DummyRenderer);
117-
}
118113
}
119114

120115
bool EGLRenderer::prepareDecoderContext(AVCodecContext*, AVDictionary**)
@@ -446,8 +441,13 @@ bool EGLRenderer::initialize(PDECODER_PARAMETERS params)
446441
return false;
447442
}
448443

449-
m_DummyRenderer = SDL_CreateRenderer(m_Window, renderIndex, SDL_RENDERER_ACCELERATED);
450-
if (!m_DummyRenderer) {
444+
// This will load OpenGL ES and convert our window to SDL_WINDOW_OPENGL if necessary
445+
SDL_Renderer* dummyRenderer = SDL_CreateRenderer(m_Window, renderIndex, SDL_RENDERER_ACCELERATED);
446+
if (dummyRenderer) {
447+
SDL_DestroyRenderer(dummyRenderer);
448+
dummyRenderer = nullptr;
449+
}
450+
else {
451451
// Print the error here (before it gets clobbered), but ensure that we flush window
452452
// events just in case SDL re-created the window before eventually failing.
453453
EGL_LOG(Error, "SDL_CreateRenderer() failed: %s", SDL_GetError());
@@ -470,12 +470,6 @@ bool EGLRenderer::initialize(PDECODER_PARAMETERS params)
470470
SDL_FlushEvent(SDL_WINDOWEVENT);
471471
}
472472

473-
// Now we finally bail if we failed during SDL_CreateRenderer() above.
474-
if (!m_DummyRenderer) {
475-
m_InitFailureReason = InitFailureReason::NoSoftwareSupport;
476-
return false;
477-
}
478-
479473
SDL_SysWMinfo info;
480474
SDL_VERSION(&info.version);
481475
if (!SDL_GetWindowWMInfo(params->window, &info)) {

app/streaming/video/ffmpeg-renderers/eglvid.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,4 @@ class EGLRenderer : public IFFmpegRenderer {
6868

6969
#define OVERLAY_PARAM_TEXTURE 0
7070
int m_OverlayShaderProgramParams[1];
71-
72-
SDL_Renderer *m_DummyRenderer;
7371
};

0 commit comments

Comments
 (0)