mirror of
https://github.com/love2d/love.git
synced 2026-08-17 19:23:38 +02:00
Always recreate the GL context in love.window.setMode - SDL_GL_MakeCurrent can return success sometimes in Windows even when the context is trashed
This commit is contained in:
@@ -211,28 +211,26 @@ bool Window::onWindowResize(int width, int height)
|
|||||||
|
|
||||||
bool Window::setContext(int fsaa, bool vsync)
|
bool Window::setContext(int fsaa, bool vsync)
|
||||||
{
|
{
|
||||||
// We need to recreate the context if FSAA changes,
|
// We would normally only need to recreate the context if FSAA changes or
|
||||||
// or if the existing context has been invalidated.
|
// SDL_GL_MakeCurrent is unsuccessful, but in Windows MakeCurrent can
|
||||||
if (context && (fsaa != curMode.flags.fsaa || SDL_GL_MakeCurrent(window, context) < 0))
|
// sometimes claim success but the context will actually be trashed.
|
||||||
|
if (context)
|
||||||
{
|
{
|
||||||
SDL_GL_DeleteContext(context);
|
SDL_GL_DeleteContext(context);
|
||||||
context = 0;
|
context = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create a new OpenGL context.
|
// Make sure the proper attributes are set.
|
||||||
if (!context)
|
setWindowGLAttributes(fsaa);
|
||||||
|
|
||||||
|
context = SDL_GL_CreateContext(window);
|
||||||
|
|
||||||
|
if (!context && fsaa > 0)
|
||||||
{
|
{
|
||||||
setWindowGLAttributes(fsaa);
|
// FSAA might have caused the failure, disable it and try again.
|
||||||
|
SDL_GL_SetAttribute(SDL_GL_MULTISAMPLESAMPLES, 0);
|
||||||
|
SDL_GL_SetAttribute(SDL_GL_MULTISAMPLEBUFFERS, 0);
|
||||||
context = SDL_GL_CreateContext(window);
|
context = SDL_GL_CreateContext(window);
|
||||||
|
|
||||||
if (!context && fsaa > 0)
|
|
||||||
{
|
|
||||||
// FSAA might have caused the failure, disable it and try again.
|
|
||||||
SDL_GL_SetAttribute(SDL_GL_MULTISAMPLESAMPLES, 0);
|
|
||||||
SDL_GL_SetAttribute(SDL_GL_MULTISAMPLEBUFFERS, 0);
|
|
||||||
context = SDL_GL_CreateContext(window);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!context)
|
if (!context)
|
||||||
|
|||||||
Reference in New Issue
Block a user