[Bf-blender-cvs] [653c6f2] master: SDL wrangler: Support loading SDL2 libraries of different names

Sergey Sharybin noreply at git.blender.org
Tue Jan 13 20:26:54 CET 2015


Commit: 653c6f2edd82bdb9b9c4f8357be1ae0ed528b824
Author: Sergey Sharybin
Date:   Wed Jan 14 00:25:35 2015 +0500
Branches: master
https://developer.blender.org/rB653c6f2edd82bdb9b9c4f8357be1ae0ed528b824

SDL wrangler: Support loading SDL2 libraries of different names

Seems different distros might have different naming rules, so need
to adopt our code for that.

===================================================================

M	extern/sdlew/src/sdlew.c

===================================================================

diff --git a/extern/sdlew/src/sdlew.c b/extern/sdlew/src/sdlew.c
index 6444e6b..3b19f0c 100644
--- a/extern/sdlew/src/sdlew.c
+++ b/extern/sdlew/src/sdlew.c
@@ -565,16 +565,20 @@ int sdlewInit(void) {
   /* Library paths. */
 #ifdef _WIN32
   /* Expected in c:/windows/system or similar, no path needed. */
-  const char *path = "SDL2.dll";
+  const char *paths[] = {"SDL2.dll", NULL};
 #elif defined(__APPLE__)
   /* Default installation path. */
-  const char *path = "/usr/local/cuda/lib/libSDL2.dylib";
+  const char *paths[] = {"/usr/local/cuda/lib/libSDL2.dylib", NULL};
 #else
-  const char *path = "libSDL2.so";
+  const char *paths[] = {"libSDL2.so",
+                         "libSDL2-2.0.so.0",
+                         "libSDL.so",
+                         NULL};
 #endif
   static int initialized = 0;
   static int result = 0;
-  int error;
+  int a, error;
+  SDL_version version;
 
   if (initialized) {
     return result;
@@ -589,7 +593,9 @@ int sdlewInit(void) {
   }
 
   /* Load library. */
-  lib = dynamic_library_open(path);
+  for (a = 0; paths[a] != NULL && lib == NULL; ++a) {
+    lib = dynamic_library_open(paths[a]);
+  }
 
   if (lib == NULL) {
     result = SDLEW_ERROR_OPEN_FAILED;
@@ -1089,7 +1095,18 @@ int sdlewInit(void) {
   SDL_LIBRARY_FIND(SDL_HasClipboardText);
   SDL_LIBRARY_FIND(SDL_GetWindowWMInfo);
 
-  result = SDLEW_SUCCESS;
+  if (SDL_GetVersion == NULL) {
+    result = SDLEW_ERROR_VERSION;
+  }
+  else {
+    SDL_GetVersion(&version);
+    if(version.major < 2) {
+      result = SDLEW_ERROR_VERSION;
+    }
+    else {
+      result = SDLEW_SUCCESS;
+    }
+  }
 
   return result;
 }




More information about the Bf-blender-cvs mailing list