Moved Quartz SDL_GL_LoadLibrary() to SDL_loadso interface.
--- 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;
}