From 15294e21212d679e4a8f8442049c79010dbfb38a Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Tue, 26 May 2020 13:54:47 -0700 Subject: [PATCH] Fixed iOS build --- src/render/metal/SDL_render_metal.m | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/src/render/metal/SDL_render_metal.m b/src/render/metal/SDL_render_metal.m index 2a90c1505..ba31b6e66 100644 --- a/src/render/metal/SDL_render_metal.m +++ b/src/render/metal/SDL_render_metal.m @@ -1597,14 +1597,17 @@ METAL_CreateRenderer(SDL_Window * window, Uint32 flags) if (!(window_flags & SDL_WINDOW_METAL)) { changed_window = SDL_TRUE; if (SDL_RecreateWindow(window, (window_flags & ~SDL_WINDOW_OPENGL) | SDL_WINDOW_METAL) < 0) { - goto error; + return NULL; } } renderer = (SDL_Renderer *) SDL_calloc(1, sizeof(*renderer)); if (!renderer) { SDL_OutOfMemory(); - goto error; + if (changed_window) { + SDL_RecreateWindow(window, window_flags); + } + return NULL; } // !!! FIXME: MTLCopyAllDevices() can find other GPUs on macOS... @@ -1613,7 +1616,10 @@ METAL_CreateRenderer(SDL_Window * window, Uint32 flags) if (mtldevice == nil) { SDL_free(renderer); SDL_SetError("Failed to obtain Metal device"); - goto error; + if (changed_window) { + SDL_RecreateWindow(window, window_flags); + } + return NULL; } view = SDL_Metal_CreateView(window); @@ -1623,7 +1629,10 @@ METAL_CreateRenderer(SDL_Window * window, Uint32 flags) [mtldevice release]; #endif SDL_free(renderer); - goto error; + if (changed_window) { + SDL_RecreateWindow(window, window_flags); + } + return NULL; } // !!! FIXME: error checking on all of this. @@ -1635,7 +1644,10 @@ METAL_CreateRenderer(SDL_Window * window, Uint32 flags) #endif SDL_Metal_DestroyView(view); SDL_free(renderer); - goto error; + if (changed_window) { + SDL_RecreateWindow(window, window_flags); + } + return NULL; } renderer->driverdata = (void*)CFBridgingRetain(data); @@ -1874,13 +1886,6 @@ METAL_CreateRenderer(SDL_Window * window, Uint32 flags) #endif return renderer; - -error: - if (changed_window) { - /* Uh oh, better try to put it back... */ - SDL_RecreateWindow(window, window_flags); - } - return NULL; }} SDL_RenderDriver METAL_RenderDriver = {