Skip to content

Commit

Permalink
SDL_RecreateWindow: allow clearing VULKAN when recreating the window
Browse files Browse the repository at this point in the history
  • Loading branch information
1bsyl committed Dec 2, 2020
1 parent 93fbab0 commit 035f8f2
Showing 1 changed file with 26 additions and 2 deletions.
28 changes: 26 additions & 2 deletions src/video/SDL_video.c
Expand Up @@ -1674,6 +1674,9 @@ SDL_RecreateWindow(SDL_Window * window, Uint32 flags)
SDL_bool loaded_opengl = SDL_FALSE;
SDL_bool need_gl_unload = SDL_FALSE;
SDL_bool need_gl_load = SDL_FALSE;
SDL_bool loaded_vulkan = SDL_FALSE;
SDL_bool need_vulkan_unload = SDL_FALSE;
SDL_bool need_vulkan_load = SDL_FALSE;

if ((flags & SDL_WINDOW_OPENGL) && !_this->GL_CreateContext) {
return SDL_SetError("OpenGL support is either not configured in SDL "
Expand Down Expand Up @@ -1728,8 +1731,14 @@ SDL_RecreateWindow(SDL_Window * window, Uint32 flags)
}

if ((window->flags & SDL_WINDOW_VULKAN) != (flags & SDL_WINDOW_VULKAN)) {
SDL_SetError("Can't change SDL_WINDOW_VULKAN window flag");
return -1;
if (flags & SDL_WINDOW_VULKAN) {
need_vulkan_load = SDL_TRUE;
} else {
need_vulkan_unload = SDL_TRUE;
}
} else if (window->flags & SDL_WINDOW_VULKAN) {
need_vulkan_unload = SDL_TRUE;
need_vulkan_load = SDL_TRUE;
}

if ((flags & SDL_WINDOW_VULKAN) && (flags & SDL_WINDOW_OPENGL)) {
Expand All @@ -1751,13 +1760,24 @@ SDL_RecreateWindow(SDL_Window * window, Uint32 flags)
SDL_GL_UnloadLibrary();
}

if (need_vulkan_unload) {
SDL_Vulkan_UnloadLibrary();
}

if (need_gl_load) {
if (SDL_GL_LoadLibrary(NULL) < 0) {
return -1;
}
loaded_opengl = SDL_TRUE;
}

if (need_vulkan_unload) {
if (SDL_Vulkan_LoadLibrary(NULL) < 0) {
return -1;
}
loaded_vulkan = SDL_TRUE;
}

window->flags = ((flags & CREATE_FLAGS) | SDL_WINDOW_HIDDEN);
window->last_fullscreen_flags = window->flags;
window->is_destroying = SDL_FALSE;
Expand All @@ -1768,6 +1788,10 @@ SDL_RecreateWindow(SDL_Window * window, Uint32 flags)
SDL_GL_UnloadLibrary();
window->flags &= ~SDL_WINDOW_OPENGL;
}
if (loaded_vulkan) {
SDL_Vulkan_UnloadLibrary();
window->flags &= ~SDL_WINDOW_VULKAN;
}
return -1;
}
}
Expand Down

0 comments on commit 035f8f2

Please sign in to comment.