Moved Quartz SDL_GL_LoadLibrary() to SDL_loadso interface.
authorRyan C. Gordon <icculus@icculus.org>
Wed, 23 Nov 2005 07:23:48 +0000
changeset 1189 c96b326b90ba
parent 1188 f31856cf29ae
child 1190 173c063d4f55
Moved Quartz SDL_GL_LoadLibrary() to SDL_loadso interface.
src/video/quartz/SDL_QuartzGL.m
src/video/quartz/SDL_QuartzVideo.h
src/video/quartz/SDL_QuartzVideo.m
--- 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;
 }