From b7826c5f9a0c7ccf0de5e04bc155f1f57fd384e0 Mon Sep 17 00:00:00 2001 From: Manuel Date: Wed, 14 Feb 2024 20:07:24 +0100 Subject: [PATCH] Add count parameter to sfVulkan_getGraphicsRequiredInstanceExtensions Based on `sfSoundRecorder_getAvailableDevices()` Fixes #227 Co-authored-by: kimci86 --- include/SFML/Window/Vulkan.h | 5 ++++- src/SFML/Window/Vulkan.cpp | 9 +++++++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/include/SFML/Window/Vulkan.h b/include/SFML/Window/Vulkan.h index c2d8041..4f894bd 100644 --- a/include/SFML/Window/Vulkan.h +++ b/include/SFML/Window/Vulkan.h @@ -26,6 +26,7 @@ // Headers //////////////////////////////////////////////////////////// #include +#include typedef struct VkInstance_T* VkInstance; @@ -76,7 +77,9 @@ CSFML_WINDOW_API sfVulkanFunctionPointer sfVulkan_getFunction(const char* name); //////////////////////////////////////////////////////////// /// \brief Get Vulkan instance extensions required for graphics /// +/// \param count Pointer to a variable that will be filled with the number of instance extensions in the array +/// /// \return Vulkan instance extensions required for graphics /// //////////////////////////////////////////////////////////// -CSFML_WINDOW_API const char* const* sfVulkan_getGraphicsRequiredInstanceExtensions(void); +CSFML_WINDOW_API const char* const* sfVulkan_getGraphicsRequiredInstanceExtensions(size_t* count); diff --git a/src/SFML/Window/Vulkan.cpp b/src/SFML/Window/Vulkan.cpp index 7b02b34..177a491 100644 --- a/src/SFML/Window/Vulkan.cpp +++ b/src/SFML/Window/Vulkan.cpp @@ -48,7 +48,12 @@ sfVulkanFunctionPointer sfVulkan_getFunction(const char* name) //////////////////////////////////////////////////////////// -const char* const* sfVulkan_getGraphicsRequiredInstanceExtensions() +const char* const* sfVulkan_getGraphicsRequiredInstanceExtensions(size_t* count) { - return &sf::Vulkan::getGraphicsRequiredInstanceExtensions()[0]; + static std::vector extensions = sf::Vulkan::getGraphicsRequiredInstanceExtensions(); + + if (count) + *count = extensions.size(); + + return !extensions.empty() ? &extensions[0] : NULL; }