decklink: Correctly handle SDK strings on macOS
authorSebastian Dröge <sebastian@centricular.com>
Tue, 30 May 2023 10:22:44 +0000 (13:22 +0300)
committerGStreamer Marge Bot <gitlab-merge-bot@gstreamer-foundation.org>
Wed, 7 Jun 2023 05:46:12 +0000 (05:46 +0000)
They're CFStringRef* and not plain NUL-terminated char* C strings.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4786>

subprojects/gst-plugins-bad/sys/decklink/gstdecklink.h

index 06caa5f..13f76cb 100644 (file)
 #  define FREE_COM_STRING(s) G_STMT_START { delete[] s; } G_STMT_END
 #  define CONVERT_TO_COM_STRING(s) G_STMT_START { char * _s = (char *)s; s = _com_util::ConvertStringToBSTR(_s); g_free(_s); } G_STMT_END
 # endif /* __MINGW32__ */
-#else
+#elif defined(__APPLE__)
+
+#include <CoreFoundation/CoreFoundation.h>
+
+#define COMSTR_T CFStringRef
+#define CONVERT_COM_STRING(s) G_STMT_START { CFStringRef _s = (CFStringRef)s; s = (char*) malloc(100); CFStringGetCString(_s, s, 100, kCFStringEncodingUTF8); CFRelease(_s); } G_STMT_END
+#define FREE_COM_STRING(s) free(s);
+#define CONVERT_TO_COM_STRING(s) G_STMT_START { char * _s = (char *)s; s = CFStringCreateWithCString(kCFAllocatorDefault, _s, kCFStringEncodingUTF8); g_free(_s); } G_STMT_END
+#define WINAPI
+#else /* Linux */
 #define COMSTR_T const char*
 #define CONVERT_COM_STRING(s)
 #define CONVERT_TO_COM_STRING(s)