Handle failure of OpenGL context creation (#2172)
This commit is contained in:
parent
2d561a60c8
commit
2bf0eb7ead
|
@ -753,22 +753,18 @@ bool ScreenPanelGL::createContext()
|
|||
if (parentwin)
|
||||
{
|
||||
if (windowinfo.has_value())
|
||||
{
|
||||
glContext = parentwin->getOGLContext()->CreateSharedContext(*windowinfo);
|
||||
if (glContext = parentwin->getOGLContext()->CreateSharedContext(*windowinfo))
|
||||
glContext->DoneCurrent();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
std::array<GL::Context::Version, 2> versionsToTry = {
|
||||
GL::Context::Version{GL::Context::Profile::Core, 4, 3},
|
||||
GL::Context::Version{GL::Context::Profile::Core, 3, 2}};
|
||||
if (windowinfo.has_value())
|
||||
{
|
||||
glContext = GL::Context::Create(*windowinfo, versionsToTry);
|
||||
if (glContext = GL::Context::Create(*windowinfo, versionsToTry))
|
||||
glContext->DoneCurrent();
|
||||
}
|
||||
}
|
||||
|
||||
return glContext != nullptr;
|
||||
}
|
||||
|
|
|
@ -841,7 +841,15 @@ void MainWindow::createScreenPanel()
|
|||
|
||||
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)
|
||||
|
|
Loading…
Reference in New Issue