diff src/video/x11/SDL_x11dyn.c @ 1659:14717b52abc0 SDL-1.3

Merge trunk-1.3-3
author Sam Lantinga <slouken@libsdl.org>
date Wed, 17 May 2006 08:18:28 +0000
parents 9f59d4c5aaea
children 782fd950bd46 9e85b267f8f3
line wrap: on
line diff
--- a/src/video/x11/SDL_x11dyn.c	Mon May 01 06:58:33 2006 +0000
+++ b/src/video/x11/SDL_x11dyn.c	Wed May 17 08:18:28 2006 +0000
@@ -61,30 +61,27 @@
     { NULL, SDL_VIDEO_DRIVER_X11_DYNAMIC_XRANDR },
 };
 
-static void *X11_GetSym(const char *fnname, int *rc)
+static void X11_GetSym(const char *fnname, int *rc, void **fn)
 {
 	int i;
-	void *fn = NULL;
 	for (i = 0; i < SDL_TABLESIZE(x11libs); i++) {
 		if (x11libs[i].lib != NULL)
 		{
-			fn = SDL_LoadFunction(x11libs[i].lib, fnname);
-			if (fn != NULL)
+			*fn = SDL_LoadFunction(x11libs[i].lib, fnname);
+			if (*fn != NULL)
 				break;
 		}
 	}
 
 	#if DEBUG_DYNAMIC_X11
-	if (fn != NULL)
-		printf("X11: Found '%s' in %s (%p)\n", fnname, x11libs[i].libname, fn);
+	if (*fn != NULL)
+		printf("X11: Found '%s' in %s (%p)\n", fnname, x11libs[i].libname, *fn);
 	else
 		printf("X11: Symbol '%s' NOT FOUND!\n", fnname);
 	#endif
 
-	if (fn == NULL)
+	if (*fn == NULL)
 		*rc = 0;  /* kill this module. */
-
-	return fn;
 }
 
 
@@ -159,13 +156,13 @@
 			}
 		}
 		#define SDL_X11_MODULE(modname) thismod = &SDL_X11_HAVE_##modname;
-		#define SDL_X11_SYM(a,fn,x,y,z) p##fn = X11_GetSym(#fn,thismod);
+		#define SDL_X11_SYM(a,fn,x,y,z) X11_GetSym(#fn,thismod,(void**)&p##fn);
 		#include "SDL_x11sym.h"
 		#undef SDL_X11_MODULE
 		#undef SDL_X11_SYM
 
 		#ifdef X_HAVE_UTF8_STRING
-		pXCreateIC = X11_GetSym("XCreateIC",&SDL_X11_HAVE_UTF8);
+		X11_GetSym("XCreateIC",&SDL_X11_HAVE_UTF8,(void **)&pXCreateIC);
 		#endif
 
 		if (!SDL_X11_HAVE_BASEXLIB) {  /* some required symbol didn't load. */