Commit 2dac6bf57eb554a0689039f85bcad28c7c1ab408

Alex Szpakowski 2014-08-07T00:44:16

Fixed opengl context share groups on iOS.

diff --git a/src/video/uikit/SDL_uikitopengles.m b/src/video/uikit/SDL_uikitopengles.m
index 475a38d..7d82809 100644
--- a/src/video/uikit/SDL_uikitopengles.m
+++ b/src/video/uikit/SDL_uikitopengles.m
@@ -129,8 +129,8 @@ UIKit_GL_CreateContext(_THIS, SDL_Window * window)
         }
 
         if (_this->gl_config.share_with_current_context) {
-            SDL_uikitopenglview *view = (__bridge SDL_uikitopenglview *) SDL_GL_GetCurrentContext();
-            share_group = [view.context sharegroup];
+            EAGLContext *context = (__bridge EAGLContext *) SDL_GL_GetCurrentContext();
+            share_group = context.sharegroup;
         }
 
         /* construct our view, passing in SDL's OpenGL configuration data */
@@ -174,6 +174,7 @@ UIKit_GL_CreateContext(_THIS, SDL_Window * window)
             SDL_SetKeyboardFocus(window);
         }
 
+        /* We return a +1'd context. The window's driverdata owns the view. */
         return (SDL_GLContext) CFBridgingRetain(context);
     }
 }
@@ -182,8 +183,9 @@ void
 UIKit_GL_DeleteContext(_THIS, SDL_GLContext context)
 {
     @autoreleasepool {
-        SDL_Window *window;
+        /* Transfer ownership the +1'd context to ARC. */
         EAGLContext *eaglcontext = (EAGLContext *) CFBridgingRelease(context);
+        SDL_Window *window;
 
         /* Find the view associated with this context */
         for (window = _this->windows; window; window = window->next) {