Handle failure of OpenGL context creation (#2172)

This commit is contained in:
Gess1t 2024-10-27 09:20:51 +01:00 committed by GitHub
parent 2d561a60c8
commit 2bf0eb7ead
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 13 additions and 9 deletions

View File

@ -753,10 +753,8 @@ bool ScreenPanelGL::createContext()
if (parentwin) if (parentwin)
{ {
if (windowinfo.has_value()) if (windowinfo.has_value())
{ if (glContext = parentwin->getOGLContext()->CreateSharedContext(*windowinfo))
glContext = parentwin->getOGLContext()->CreateSharedContext(*windowinfo); glContext->DoneCurrent();
glContext->DoneCurrent();
}
} }
else else
{ {
@ -764,10 +762,8 @@ bool ScreenPanelGL::createContext()
GL::Context::Version{GL::Context::Profile::Core, 4, 3}, GL::Context::Version{GL::Context::Profile::Core, 4, 3},
GL::Context::Version{GL::Context::Profile::Core, 3, 2}}; GL::Context::Version{GL::Context::Profile::Core, 3, 2}};
if (windowinfo.has_value()) if (windowinfo.has_value())
{ if (glContext = GL::Context::Create(*windowinfo, versionsToTry))
glContext = GL::Context::Create(*windowinfo, versionsToTry); glContext->DoneCurrent();
glContext->DoneCurrent();
}
} }
return glContext != nullptr; return glContext != nullptr;

View File

@ -841,7 +841,15 @@ void MainWindow::createScreenPanel()
panel = panelGL; panel = panelGL;
panelGL->createContext(); // Check that creating the context hasn't failed
if (panelGL->createContext() == false)
{
Log(LogLevel::Error, "Failed to create OpenGL context, falling back to Software Renderer.\n");
hasOGL = false;
globalCfg.SetBool("Screen.UseGL", false);
globalCfg.SetInt("3D.Renderer", renderer3D_Software);
}
} }
if (!hasOGL) if (!hasOGL)