Opened 11 months ago

Last modified 6 months ago

#13215 closed defect

OpenGLSdlGraphics3dManager::setupScreen() might invoke `glGetIntegerv` without GL context — at Initial Version

Reported by: GMTA Owned by:
Priority: low Component: Common
Version: Keywords:
Cc: Game: Grim Fandango

Description

When switching from the launcher to an OpenGL game such as Grim Fandango, the GL context is destroyed and then created again. To create a new context, OpenGLSdlGraphics3dManager::setupScreen() is invoked. Before it actually created a new context, the MSAA sample count is retrieved with:

SDL_GL_GetAttribute(SDL_GL_MULTISAMPLESAMPLES, &currentSamples);

This in turn invokes glGetIntegerv. According to the OpenGL spec, invoking any API without an active GL context results in undefined behavior.

While porting ScummVM to SerenityOS, I have had to patch out the above call to make Grim Fandango work at all. This is not a fix but a workaround, but it might be useful for you to see.

A possible solution would be to make sure to only retrieve the samples when a GL context exists.

Change History (1)

Note: See TracTickets for help on using tickets.