Răsfoiți Sursa

macOS: Fixed MoltenVK dynamic library loading code.

Alex Szpakowski 6 ani în urmă
părinte
comite
d8022d19b4
1 a modificat fișierele cu 11 adăugiri și 12 ștergeri
  1. 11 12
      src/video/cocoa/SDL_cocoavulkan.m

+ 11 - 12
src/video/cocoa/SDL_cocoavulkan.m

@@ -58,8 +58,7 @@ int Cocoa_Vulkan_LoadLibrary(_THIS, const char *path)
     PFN_vkGetInstanceProcAddr vkGetInstanceProcAddr = NULL;
 
     if (_this->vulkan_config.loader_handle) {
-        SDL_SetError("Vulkan/MoltenVK already loaded");
-        return -1;
+        return SDL_SetError("Vulkan/MoltenVK already loaded");
     }
 
     /* Load the Vulkan loader library */
@@ -80,6 +79,7 @@ int Cocoa_Vulkan_LoadLibrary(_THIS, const char *path)
         _this->vulkan_config.loader_handle = DEFAULT_HANDLE;
     } else {
         const char** paths;
+        const char *foundPath = NULL;
         int numPaths;
         int i;
 
@@ -92,18 +92,17 @@ int Cocoa_Vulkan_LoadLibrary(_THIS, const char *path)
             paths = defaultPaths;
             numPaths = SDL_arraysize(defaultPaths);
         }
-        
-        for (i=0; i < numPaths; i++) {
-            _this->vulkan_config.loader_handle = SDL_LoadObject(paths[i]);
-            if (_this->vulkan_config.loader_handle)
-                break;
-            else
-                continue;
+
+        for (i = 0; i < numPaths && _this->vulkan_config.loader_handle == NULL; i++) {
+            foundPath = paths[i];
+            _this->vulkan_config.loader_handle = SDL_LoadObject(foundPath);
+        }
+
+        if (_this->vulkan_config.loader_handle == NULL) {
+            return SDL_SetError("Failed to load Vulkan/MoltenVK library");
         }
-        if (i == numPaths)
-            return -1;
 
-        SDL_strlcpy(_this->vulkan_config.loader_path, paths[i],
+        SDL_strlcpy(_this->vulkan_config.loader_path, foundPath,
                     SDL_arraysize(_this->vulkan_config.loader_path));
         vkGetInstanceProcAddr = (PFN_vkGetInstanceProcAddr)SDL_LoadFunction(
             _this->vulkan_config.loader_handle, "vkGetInstanceProcAddr");