sdl: Bind the default window when currently bound window is destroyed
Cogl always needs to have the context bound to something so that it can freely create resources such as textures even if there is no current window. When the currently bound SDLWindow is destroyed, SDL apparently explicitly unbinds the GL context. If something then later for example tries to create a texture Cogl would start getting GL errors and fail. To fix this the SDL winsys now just binds the dummy window before deiniting the currently bound onscreen. Reviewed-by: Robert Bragg <robert@linux.intel.com> (cherry picked from commit 2c0cfdefbb9d1ac5097d98887d3581b67a324fae)
This commit is contained in:
parent
cab4622eb3
commit
1f0b432a25
@ -388,7 +388,18 @@ _cogl_winsys_onscreen_deinit (CoglOnscreen *onscreen)
|
||||
CoglContextSdl2 *sdl_context = context->winsys;
|
||||
|
||||
if (sdl_context->current_window == sdl_onscreen->window)
|
||||
sdl_context->current_window = NULL;
|
||||
{
|
||||
CoglDisplaySdl2 *sdl_display = context->display->winsys;
|
||||
|
||||
/* SDL explicitly unbinds the context when the currently
|
||||
* bound window is destroyed. Cogl always needs a context
|
||||
* bound so that for example it can create texture resources
|
||||
* at any time even without flushing a framebuffer.
|
||||
* Therefore we'll bind the dummy window. */
|
||||
SDL_GL_MakeCurrent (sdl_display->dummy_window,
|
||||
sdl_display->context);
|
||||
sdl_context->current_window = sdl_display->dummy_window;
|
||||
}
|
||||
|
||||
SDL_DestroyWindow (sdl_onscreen->window);
|
||||
sdl_onscreen->window = NULL;
|
||||
|
Loading…
x
Reference in New Issue
Block a user