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.
This commit is contained in:
parent
66a30c66f3
commit
30274f3ae8
2 changed files with 8 additions and 16 deletions
|
|
@ -75,8 +75,7 @@ EGLRenderer::EGLRenderer(IFFmpegRenderer *backendRenderer)
|
|||
m_eglClientWaitSync(nullptr),
|
||||
m_GlesMajorVersion(0),
|
||||
m_GlesMinorVersion(0),
|
||||
m_HasExtUnpackSubimage(false),
|
||||
m_DummyRenderer(nullptr)
|
||||
m_HasExtUnpackSubimage(false)
|
||||
{
|
||||
SDL_assert(backendRenderer);
|
||||
SDL_assert(backendRenderer->canExportEGL());
|
||||
|
|
@ -111,10 +110,6 @@ EGLRenderer::~EGLRenderer()
|
|||
|
||||
SDL_GL_DeleteContext(m_Context);
|
||||
}
|
||||
|
||||
if (m_DummyRenderer) {
|
||||
SDL_DestroyRenderer(m_DummyRenderer);
|
||||
}
|
||||
}
|
||||
|
||||
bool EGLRenderer::prepareDecoderContext(AVCodecContext*, AVDictionary**)
|
||||
|
|
@ -446,8 +441,13 @@ bool EGLRenderer::initialize(PDECODER_PARAMETERS params)
|
|||
return false;
|
||||
}
|
||||
|
||||
m_DummyRenderer = SDL_CreateRenderer(m_Window, renderIndex, SDL_RENDERER_ACCELERATED);
|
||||
if (!m_DummyRenderer) {
|
||||
// This will load OpenGL ES and convert our window to SDL_WINDOW_OPENGL if necessary
|
||||
SDL_Renderer* dummyRenderer = SDL_CreateRenderer(m_Window, renderIndex, SDL_RENDERER_ACCELERATED);
|
||||
if (dummyRenderer) {
|
||||
SDL_DestroyRenderer(dummyRenderer);
|
||||
dummyRenderer = nullptr;
|
||||
}
|
||||
else {
|
||||
// Print the error here (before it gets clobbered), but ensure that we flush window
|
||||
// events just in case SDL re-created the window before eventually failing.
|
||||
EGL_LOG(Error, "SDL_CreateRenderer() failed: %s", SDL_GetError());
|
||||
|
|
@ -470,12 +470,6 @@ bool EGLRenderer::initialize(PDECODER_PARAMETERS params)
|
|||
SDL_FlushEvent(SDL_WINDOWEVENT);
|
||||
}
|
||||
|
||||
// Now we finally bail if we failed during SDL_CreateRenderer() above.
|
||||
if (!m_DummyRenderer) {
|
||||
m_InitFailureReason = InitFailureReason::NoSoftwareSupport;
|
||||
return false;
|
||||
}
|
||||
|
||||
SDL_SysWMinfo info;
|
||||
SDL_VERSION(&info.version);
|
||||
if (!SDL_GetWindowWMInfo(params->window, &info)) {
|
||||
|
|
|
|||
|
|
@ -68,6 +68,4 @@ private:
|
|||
|
||||
#define OVERLAY_PARAM_TEXTURE 0
|
||||
int m_OverlayShaderProgramParams[1];
|
||||
|
||||
SDL_Renderer *m_DummyRenderer;
|
||||
};
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue