From 3d9b82d9f87ad8f6a14675a0ed2ca644f47df45c Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Fri, 12 Jul 2013 23:30:26 -0400 Subject: [PATCH] Implement SDL_GL_SHARE_WITH_CURRENT_CONTEXT for iOS. Fixes Bugzilla #1947. --- src/video/uikit/SDL_uikitopengles.m | 8 +++++++- src/video/uikit/SDL_uikitopenglview.h | 3 ++- src/video/uikit/SDL_uikitopenglview.m | 5 +++-- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/video/uikit/SDL_uikitopengles.m b/src/video/uikit/SDL_uikitopengles.m index b27b3ca93..0401ff8e5 100644 --- a/src/video/uikit/SDL_uikitopengles.m +++ b/src/video/uikit/SDL_uikitopengles.m @@ -104,6 +104,11 @@ SDL_GLContext UIKit_GL_CreateContext(_THIS, SDL_Window * window) SDL_DisplayData *displaydata = display->driverdata; SDL_DisplayModeData *displaymodedata = display->current_mode.driverdata; UIWindow *uiwindow = data->uiwindow; + EAGLSharegroup *share_group = nil; + + if (_this->gl_config.share_with_current_context) { + share_group = [((SDL_uikitopenglview *) SDL_GL_GetCurrentContext() sharegroup]; + } /* construct our view, passing in SDL's OpenGL configuration data */ CGRect frame; @@ -121,7 +126,8 @@ SDL_GLContext UIKit_GL_CreateContext(_THIS, SDL_Window * window) aBits: _this->gl_config.alpha_size depthBits: _this->gl_config.depth_size stencilBits: _this->gl_config.stencil_size - majorVersion: _this->gl_config.major_version]; + majorVersion: _this->gl_config.major_version + shareGroup: share_group]; if (!view) { return NULL; } diff --git a/src/video/uikit/SDL_uikitopenglview.h b/src/video/uikit/SDL_uikitopenglview.h index b29cca2c5..344ad6a5e 100644 --- a/src/video/uikit/SDL_uikitopenglview.h +++ b/src/video/uikit/SDL_uikitopenglview.h @@ -67,7 +67,8 @@ aBits:(int)aBits depthBits:(int)depthBits stencilBits:(int)stencilBits - majorVersion:(int)majorVersion; + majorVersion:(int)majorVersion + shareGroup:(EAGLSharegroup*)shareGroup; - (void)updateFrame; diff --git a/src/video/uikit/SDL_uikitopenglview.m b/src/video/uikit/SDL_uikitopenglview.m index 6ca5162d9..9f3dc136a 100644 --- a/src/video/uikit/SDL_uikitopenglview.m +++ b/src/video/uikit/SDL_uikitopenglview.m @@ -47,6 +47,7 @@ depthBits:(int)depthBits stencilBits:(int)stencilBits majorVersion:(int)majorVersion + shareGroup:(EAGLSharegroup*)shareGroup { depthBufferFormat = 0; @@ -71,9 +72,9 @@ [NSNumber numberWithBool: retained], kEAGLDrawablePropertyRetainedBacking, colorFormat, kEAGLDrawablePropertyColorFormat, nil]; if (majorVersion > 1) { - context = [[EAGLContext alloc] initWithAPI: kEAGLRenderingAPIOpenGLES2]; + context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2 sharegroup:shareGroup]; } else { - context = [[EAGLContext alloc] initWithAPI: kEAGLRenderingAPIOpenGLES1]; + context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES1 sharegroup:shareGroup]; } if (!context || ![EAGLContext setCurrentContext:context]) { [self release];