mirror of
https://github.com/moonlight-stream/moonlight-qt.git
synced 2026-06-17 14:11:33 +00:00
Work around bug where GLES surface creation repeatedly fails on X11
This commit is contained in:
@@ -58,6 +58,8 @@ typedef EGLDisplay (EGLAPIENTRYP PFNEGLGETPLATFORMDISPLAYEXTPROC) (EGLenum platf
|
|||||||
SDL_LOG_CATEGORY_APPLICATION, \
|
SDL_LOG_CATEGORY_APPLICATION, \
|
||||||
"EGLRenderer: " __VA_ARGS__)
|
"EGLRenderer: " __VA_ARGS__)
|
||||||
|
|
||||||
|
SDL_Window* EGLRenderer::s_LastFailedWindow = nullptr;
|
||||||
|
|
||||||
EGLRenderer::EGLRenderer(IFFmpegRenderer *backendRenderer)
|
EGLRenderer::EGLRenderer(IFFmpegRenderer *backendRenderer)
|
||||||
:
|
:
|
||||||
m_SwPixelFormat(AV_PIX_FMT_NONE),
|
m_SwPixelFormat(AV_PIX_FMT_NONE),
|
||||||
@@ -276,6 +278,13 @@ bool EGLRenderer::initialize(PDECODER_PARAMETERS params)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// HACK: Work around bug where renderer will repeatedly fail with:
|
||||||
|
// SDL_CreateRenderer() failed: Could not create GLES window surface
|
||||||
|
if (m_Window == s_LastFailedWindow) {
|
||||||
|
EGL_LOG(Error, "SDL_CreateRenderer() already failed on this window!");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Create a dummy renderer in order to craft an accelerated SDL Window.
|
* Create a dummy renderer in order to craft an accelerated SDL Window.
|
||||||
* Request opengl ES 3.0 context, otherwise it will SIGSEGV
|
* Request opengl ES 3.0 context, otherwise it will SIGSEGV
|
||||||
@@ -306,6 +315,7 @@ bool EGLRenderer::initialize(PDECODER_PARAMETERS params)
|
|||||||
|
|
||||||
if (!(m_DummyRenderer = SDL_CreateRenderer(m_Window, renderIndex, SDL_RENDERER_ACCELERATED))) {
|
if (!(m_DummyRenderer = SDL_CreateRenderer(m_Window, renderIndex, SDL_RENDERER_ACCELERATED))) {
|
||||||
EGL_LOG(Error, "SDL_CreateRenderer() failed: %s", SDL_GetError());
|
EGL_LOG(Error, "SDL_CreateRenderer() failed: %s", SDL_GetError());
|
||||||
|
s_LastFailedWindow = m_Window;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -44,4 +44,8 @@ private:
|
|||||||
int m_OldContextMinorVersion;
|
int m_OldContextMinorVersion;
|
||||||
|
|
||||||
SDL_Renderer *m_DummyRenderer;
|
SDL_Renderer *m_DummyRenderer;
|
||||||
|
|
||||||
|
// HACK: Work around bug where renderer will repeatedly fail with:
|
||||||
|
// SDL_CreateRenderer() failed: Could not create GLES window surface
|
||||||
|
static SDL_Window* s_LastFailedWindow;
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user