Mercurial > sdl-ios-xcode
changeset 1189:c96b326b90ba
Moved Quartz SDL_GL_LoadLibrary() to SDL_loadso interface.
author | Ryan C. Gordon <icculus@icculus.org> |
---|---|
date | Wed, 23 Nov 2005 07:23:48 +0000 |
parents | f31856cf29ae |
children | 173c063d4f55 |
files | src/video/quartz/SDL_QuartzGL.m src/video/quartz/SDL_QuartzVideo.h src/video/quartz/SDL_QuartzVideo.m |
diffstat | 3 files changed, 15 insertions(+), 45 deletions(-) [+] |
line wrap: on
line diff
--- a/src/video/quartz/SDL_QuartzGL.m Wed Nov 23 07:07:19 2005 +0000 +++ b/src/video/quartz/SDL_QuartzGL.m Wed Nov 23 07:23:48 2005 +0000 @@ -166,63 +166,33 @@ /* SDL OpenGL functions */ +static const char *DEFAULT_OPENGL_LIB_NAME = + "/System/Library/Frameworks/OpenGL.framework/Libraries/libGL.dylib"; int QZ_GL_LoadLibrary (_THIS, const char *location) { - CFURLRef bundleURL; - CFStringRef cfstr; - if ( gl_context != NULL ) { SDL_SetError("OpenGL context already created"); return -1; } - if (opengl_bundle != NULL) - CFRelease(opengl_bundle); - - opengl_bundle = NULL; - this->gl_config.driver_loaded = 0; + if (opengl_library != NULL) + SDL_UnloadObject(opengl_library); if (location == NULL) - location = "/System/Library/Frameworks/OpenGL.framework"; - - cfstr = CFStringCreateWithCString(kCFAllocatorDefault, location, - kCFStringEncodingUTF8); - if (cfstr == NULL) { - SDL_OutOfMemory(); - return -1; - } - - bundleURL = CFURLCreateWithFileSystemPath (kCFAllocatorDefault, - cfstr, kCFURLPOSIXPathStyle, true); + location = DEFAULT_OPENGL_LIB_NAME; - CFRelease(cfstr); - - if (bundleURL == NULL) { - SDL_OutOfMemory(); - return -1; - } - - opengl_bundle = CFBundleCreate (kCFAllocatorDefault, bundleURL); - - CFRelease(bundleURL); - - if (opengl_bundle != NULL) { + opengl_library = SDL_LoadObject(location); + if (opengl_library != NULL) { this->gl_config.driver_loaded = 1; return 0; } - /* not exactly descriptive, but okay... */ - SDL_SetError("Could not load OpenGL library"); + this->gl_config.driver_loaded = 0; return -1; } void* QZ_GL_GetProcAddress (_THIS, const char *proc) { - CFStringRef funcName = CFStringCreateWithCString - (kCFAllocatorDefault, proc, kCFStringEncodingASCII); - - void *func = CFBundleGetFunctionPointerForName(opengl_bundle, funcName); - CFRelease (funcName); - return func; + return SDL_LoadFunction(opengl_library, proc); } int QZ_GL_GetAttribute (_THIS, SDL_GLattr attrib, int* value) {
--- a/src/video/quartz/SDL_QuartzVideo.h Wed Nov 23 07:07:19 2005 +0000 +++ b/src/video/quartz/SDL_QuartzVideo.h Wed Nov 23 07:23:48 2005 +0000 @@ -64,6 +64,7 @@ #include "SDL_sysvideo.h" #include "SDL_pixels_c.h" #include "SDL_events_c.h" +#include "SDL_loadso.h" /* This is a workaround to directly access NSOpenGLContext's CGL context @@ -117,7 +118,7 @@ Sint16 yuv_width, yuv_height; CGrafPtr yuv_port; - CFBundleRef opengl_bundle; /* dynamically loaded OpenGL library. */ + void *opengl_library; /* dynamically loaded OpenGL library. */ } SDL_PrivateVideoData; #define _THIS SDL_VideoDevice *this @@ -155,7 +156,7 @@ #define current_buffer (this->hidden->current_buffer) #define quit_thread (this->hidden->quit_thread) #define system_version (this->hidden->system_version) -#define opengl_bundle (this->hidden->opengl_bundle) +#define opengl_library (this->hidden->opengl_library) /* grab states - the input is in one of these states */ enum {
--- a/src/video/quartz/SDL_QuartzVideo.m Wed Nov 23 07:07:19 2005 +0000 +++ b/src/video/quartz/SDL_QuartzVideo.m Wed Nov 23 07:23:48 2005 +0000 @@ -23,7 +23,6 @@ #include "SDL_QuartzVideo.h" #include "SDL_QuartzWindow.h" - /* Add methods to get at private members of NSScreen. Since there is a bug in Apple's screen switching code @@ -1495,9 +1494,9 @@ QZ_UnsetVideoMode (this); CGPaletteRelease (palette); - if (opengl_bundle) { - CFRelease(opengl_bundle); - opengl_bundle = NULL; + if (opengl_library) { + SDL_UnloadObject(opengl_library); + opengl_library = NULL; } this->gl_config.driver_loaded = 0; }