mirror of
https://github.com/moonlight-stream/moonlight-qt.git
synced 2025-07-01 23:35:55 +00:00
Reset the EGL renderer when specialization fails
This commit is contained in:
parent
63a5bc5e12
commit
8aa42ff1d9
@ -1653,6 +1653,12 @@ void Session::execInternal()
|
|||||||
case SDL_RENDER_DEVICE_RESET:
|
case SDL_RENDER_DEVICE_RESET:
|
||||||
case SDL_RENDER_TARGETS_RESET:
|
case SDL_RENDER_TARGETS_RESET:
|
||||||
|
|
||||||
|
if (event.type != SDL_WINDOWEVENT) {
|
||||||
|
SDL_LogWarn(SDL_LOG_CATEGORY_APPLICATION,
|
||||||
|
"Recreating renderer by internal request: %d",
|
||||||
|
event.type);
|
||||||
|
}
|
||||||
|
|
||||||
SDL_AtomicLock(&m_DecoderLock);
|
SDL_AtomicLock(&m_DecoderLock);
|
||||||
|
|
||||||
// Destroy the old decoder
|
// Destroy the old decoder
|
||||||
|
@ -893,6 +893,18 @@ void EGLRenderer::renderFrame(AVFrame* frame)
|
|||||||
|
|
||||||
if (!specialize()) {
|
if (!specialize()) {
|
||||||
m_EGLImagePixelFormat = AV_PIX_FMT_NONE;
|
m_EGLImagePixelFormat = AV_PIX_FMT_NONE;
|
||||||
|
|
||||||
|
// Failure to specialize is fatal. We must reset the renderer
|
||||||
|
// to recover successfully.
|
||||||
|
//
|
||||||
|
// Note: This seems to be easy to trigger when transitioning from
|
||||||
|
// maximized mode by dragging the window down on GNOME 42 using
|
||||||
|
// XWayland. Other strategies like calling glGetError() don't seem
|
||||||
|
// to be able to detect this situation for some reason.
|
||||||
|
SDL_Event event;
|
||||||
|
event.type = SDL_RENDER_TARGETS_RESET;
|
||||||
|
SDL_PushEvent(&event);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user