From 92cdae3aa64a4e3748ff62cd413d51ef51cdfcea Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Wed, 13 Jun 2007 08:00:10 +0000 Subject: [PATCH] Actually, this is a better fix...clear the error state once if everything we need loaded; it's more efficient, and works even if the last unnecessary xrandr symbol failed to load. Otherwise, leave the original loadso error, so the end user can find out what symbol failed. --- src/video/x11/SDL_x11dyn.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/src/video/x11/SDL_x11dyn.c b/src/video/x11/SDL_x11dyn.c index c8f29213e..e7f235d2f 100644 --- a/src/video/x11/SDL_x11dyn.c +++ b/src/video/x11/SDL_x11dyn.c @@ -73,11 +73,6 @@ static void X11_GetSym(const char *fnname, int *rc, void **fn) } } - if (*fn != NULL) - SDL_ClearError(); - else - SDL_SetError("Failed to load function %s from x11libs", fnname); - #if DEBUG_DYNAMIC_X11 if (*fn != NULL) printf("X11: Found '%s' in %s (%p)\n", fnname, x11libs[i].libname, *fn); @@ -170,7 +165,9 @@ int SDL_X11_LoadSymbols(void) X11_GetSym("XCreateIC",&SDL_X11_HAVE_UTF8,(void **)&pXCreateIC); #endif - if (!SDL_X11_HAVE_BASEXLIB) { /* some required symbol didn't load. */ + if (SDL_X11_HAVE_BASEXLIB) { /* all required symbols loaded. */ + SDL_ClearError(); + } else { SDL_X11_UnloadSymbols(); /* in case something got loaded... */ rc = 0; }