diff --git a/subprojects/gst-plugins-bad/gst-libs/gst/d3d11/gstd3d11_private.h b/subprojects/gst-plugins-bad/gst-libs/gst/d3d11/gstd3d11_private.h index 8b34760f54..066648859d 100644 --- a/subprojects/gst-plugins-bad/gst-libs/gst/d3d11/gstd3d11_private.h +++ b/subprojects/gst-plugins-bad/gst-libs/gst/d3d11/gstd3d11_private.h @@ -145,6 +145,8 @@ gboolean gst_d3d11_color_primaries_matrix_unorm (const GstVideoColorPrima G_END_DECLS #ifdef __cplusplus +#include + class GstD3D11DeviceLockGuard { public: @@ -162,6 +164,13 @@ public: GstD3D11DeviceLockGuard& operator=(const GstD3D11DeviceLockGuard&) = delete; private: - GstD3D11Device *device_; + GstD3D11Device *device_; }; -#endif + +#define GST_D3D11_CALL_ONCE_BEGIN \ + static std::once_flag __once_flag; \ + std::call_once (__once_flag, [&]() + +#define GST_D3D11_CALL_ONCE_END ) + +#endif /* __cplusplus */ diff --git a/subprojects/gst-plugins-bad/gst-libs/gst/d3d11/gstd3d11compile.cpp b/subprojects/gst-plugins-bad/gst-libs/gst/d3d11/gstd3d11compile.cpp index 144cb0ca14..51937bd30d 100644 --- a/subprojects/gst-plugins-bad/gst-libs/gst/d3d11/gstd3d11compile.cpp +++ b/subprojects/gst-plugins-bad/gst-libs/gst/d3d11/gstd3d11compile.cpp @@ -24,6 +24,7 @@ #include "gstd3d11compile.h" #include "gstd3d11device.h" #include "gstd3d11utils.h" +#include "gstd3d11_private.h" #include #include #include @@ -37,18 +38,13 @@ using namespace Microsoft::WRL; static GstDebugCategory * ensure_debug_category (void) { - static gsize cat_gonce = 0; + static GstDebugCategory *cat = nullptr; - if (g_once_init_enter (&cat_gonce)) { - gsize cat_done; + GST_D3D11_CALL_ONCE_BEGIN { + cat = _gst_debug_category_new ("d3d11compile", 0, "d3d11compile"); + } GST_D3D11_CALL_ONCE_END; - cat_done = (gsize) _gst_debug_category_new ("d3d11compile", 0, - "d3d11compile"); - - g_once_init_leave (&cat_gonce, cat_done); - } - - return (GstDebugCategory *) cat_gonce; + return cat; } #else #define ensure_debug_category() /* NOOP */ @@ -67,9 +63,7 @@ static pD3DCompile GstD3DCompileFunc = nullptr; gboolean gst_d3d11_compile_init (void) { - static gsize init_once = 0; - - if (g_once_init_enter (&init_once)) { + GST_D3D11_CALL_ONCE_BEGIN { #if GST_D3D11_WINAPI_ONLY_APP /* Assuming that d3d compiler library is available */ GstD3DCompileFunc = D3DCompile; @@ -103,9 +97,8 @@ gst_d3d11_compile_init (void) if (!GstD3DCompileFunc) GST_WARNING ("D3D11 compiler library is unavailable"); #endif - - g_once_init_leave (&init_once, 1); } + GST_D3D11_CALL_ONCE_END; if (!GstD3DCompileFunc) return FALSE; diff --git a/subprojects/gst-plugins-bad/gst-libs/gst/d3d11/gstd3d11converter.cpp b/subprojects/gst-plugins-bad/gst-libs/gst/d3d11/gstd3d11converter.cpp index 0d62996f66..e17c22214e 100644 --- a/subprojects/gst-plugins-bad/gst-libs/gst/d3d11/gstd3d11converter.cpp +++ b/subprojects/gst-plugins-bad/gst-libs/gst/d3d11/gstd3d11converter.cpp @@ -42,7 +42,7 @@ DEFINE_ENUM_FLAG_OPERATORS (GstD3D11ConverterBackend); GType gst_d3d11_converter_backend_get_type (void) { - static gsize type = 0; + static GType type = 0; static const GFlagsValue values[] = { {GST_D3D11_CONVERTER_BACKEND_SHADER, "GST_D3D11_CONVERTER_BACKEND_SHADER", "shader"}, @@ -51,12 +51,11 @@ gst_d3d11_converter_backend_get_type (void) {0, nullptr, nullptr} }; - if (g_once_init_enter (&type)) { - GType tmp = g_flags_register_static ("GstD3D11ConverterBackend", values); - g_once_init_leave (&type, tmp); - } + GST_D3D11_CALL_ONCE_BEGIN { + type = g_flags_register_static ("GstD3D11ConverterBackend", values); + } GST_D3D11_CALL_ONCE_END; - return (GType) type; + return type; } /* *INDENT-OFF* */ diff --git a/subprojects/gst-plugins-bad/gst-libs/gst/d3d11/gstd3d11device.cpp b/subprojects/gst-plugins-bad/gst-libs/gst/d3d11/gstd3d11device.cpp index 1b2daa3856..41df9187e5 100644 --- a/subprojects/gst-plugins-bad/gst-libs/gst/d3d11/gstd3d11device.cpp +++ b/subprojects/gst-plugins-bad/gst-libs/gst/d3d11/gstd3d11device.cpp @@ -54,7 +54,6 @@ using namespace Microsoft::WRL; #if HAVE_D3D11SDKLAYERS_H #include -static GModule *d3d11_debug_module = NULL; /* mingw header does not define D3D11_RLDO_IGNORE_INTERNAL * D3D11_RLDO_SUMMARY = 0x1, @@ -68,8 +67,7 @@ static GModule *d3d11_debug_module = NULL; #include typedef HRESULT (WINAPI * DXGIGetDebugInterface_t) (REFIID riid, void **ppDebug); -static GModule *dxgi_debug_module = NULL; -static DXGIGetDebugInterface_t GstDXGIGetDebugInterface = NULL; +static DXGIGetDebugInterface_t GstDXGIGetDebugInterface = nullptr; #endif @@ -134,17 +132,14 @@ struct _GstD3D11DevicePrivate static void debug_init_once (void) { - static gsize init_once = 0; - - if (g_once_init_enter (&init_once)) { + GST_D3D11_CALL_ONCE_BEGIN { GST_DEBUG_CATEGORY_INIT (gst_d3d11_device_debug, "d3d11device", 0, "d3d11 device object"); #if defined(HAVE_D3D11SDKLAYERS_H) || defined(HAVE_DXGIDEBUG_H) GST_DEBUG_CATEGORY_INIT (gst_d3d11_debug_layer_debug, "d3d11debuglayer", 0, "native d3d11 and dxgi debug"); #endif - g_once_init_leave (&init_once, 1); - } + } GST_D3D11_CALL_ONCE_END; } #define gst_d3d11_device_parent_class parent_class @@ -160,26 +155,24 @@ static void gst_d3d11_device_finalize (GObject * object); static gboolean gst_d3d11_device_enable_d3d11_debug (void) { - static gsize _init = 0; - + static GModule *d3d11_debug_module = nullptr; /* If all below libraries are unavailable, d3d11 device would fail with * D3D11_CREATE_DEVICE_DEBUG flag */ - if (g_once_init_enter (&_init)) { - d3d11_debug_module = - g_module_open ("d3d11sdklayers.dll", G_MODULE_BIND_LAZY); + static const gchar *sdk_dll_names[] = { + "d3d11sdklayers.dll", + "d3d11_1sdklayers.dll", + "d3d11_2sdklayers.dll", + "d3d11_3sdklayers.dll", + }; - if (!d3d11_debug_module) - d3d11_debug_module = - g_module_open ("d3d11_1sdklayers.dll", G_MODULE_BIND_LAZY); - if (!d3d11_debug_module) - d3d11_debug_module = - g_module_open ("d3d11_2sdklayers.dll", G_MODULE_BIND_LAZY); - if (!d3d11_debug_module) - d3d11_debug_module = - g_module_open ("d3d11_3sdklayers.dll", G_MODULE_BIND_LAZY); - - g_once_init_leave (&_init, 1); + GST_D3D11_CALL_ONCE_BEGIN { + for (guint i = 0; i < G_N_ELEMENTS (sdk_dll_names); i++) { + d3d11_debug_module = g_module_open (sdk_dll_names[i], G_MODULE_BIND_LAZY); + if (d3d11_debug_module) + return; + } } + GST_D3D11_CALL_ONCE_END; if (d3d11_debug_module) return TRUE; @@ -265,27 +258,24 @@ gst_d3d11_device_d3d11_debug (GstD3D11Device * device, static gboolean gst_d3d11_device_enable_dxgi_debug (void) { - static gsize _init = 0; - gboolean ret = FALSE; + static GModule *dxgi_debug_module = nullptr; - /* If all below libraries are unavailable, d3d11 device would fail with - * D3D11_CREATE_DEVICE_DEBUG flag */ - if (g_once_init_enter (&_init)) { + GST_D3D11_CALL_ONCE_BEGIN { #if (!GST_D3D11_WINAPI_ONLY_APP) dxgi_debug_module = g_module_open ("dxgidebug.dll", G_MODULE_BIND_LAZY); if (dxgi_debug_module) g_module_symbol (dxgi_debug_module, "DXGIGetDebugInterface", (gpointer *) & GstDXGIGetDebugInterface); - if (GstDXGIGetDebugInterface) - ret = TRUE; #else - ret = TRUE; + GstDXGIGetDebugInterface = DXGIGetDebugInterface1; #endif - g_once_init_leave (&_init, 1); - } + } GST_D3D11_CALL_ONCE_END; - return ret; + if (!GstDXGIGetDebugInterface) + return FALSE; + + return TRUE; } static HRESULT @@ -429,19 +419,16 @@ gst_d3d11_device_init (GstD3D11Device * self) static gboolean is_windows_8_or_greater (void) { - static gsize version_once = 0; static gboolean ret = FALSE; - if (g_once_init_enter (&version_once)) { + GST_D3D11_CALL_ONCE_BEGIN { #if (!GST_D3D11_WINAPI_ONLY_APP) if (IsWindows8OrGreater ()) ret = TRUE; #else ret = TRUE; #endif - - g_once_init_leave (&version_once, 1); - } + } GST_D3D11_CALL_ONCE_END; return ret; } diff --git a/subprojects/gst-plugins-bad/gst-libs/gst/d3d11/gstd3d11format.cpp b/subprojects/gst-plugins-bad/gst-libs/gst/d3d11/gstd3d11format.cpp index ae8b3c5a63..f79ad5ce23 100644 --- a/subprojects/gst-plugins-bad/gst-libs/gst/d3d11/gstd3d11format.cpp +++ b/subprojects/gst-plugins-bad/gst-libs/gst/d3d11/gstd3d11format.cpp @@ -34,18 +34,13 @@ static GstDebugCategory * ensure_debug_category (void) { - static gsize cat_gonce = 0; + static GstDebugCategory *cat = nullptr; - if (g_once_init_enter (&cat_gonce)) { - gsize cat_done; + GST_D3D11_CALL_ONCE_BEGIN { + cat = _gst_debug_category_new ("d3d11format", 0, "d3d11 specific formats"); + } GST_D3D11_CALL_ONCE_END; - cat_done = (gsize) _gst_debug_category_new ("d3d11format", 0, - "d3d11 specific formats"); - - g_once_init_leave (&cat_gonce, cat_done); - } - - return (GstDebugCategory *) cat_gonce; + return cat; } #else #define ensure_debug_category() /* NOOP */ @@ -54,7 +49,7 @@ ensure_debug_category (void) GType gst_d3d11_format_support_get_type (void) { - static gsize support_type = 0; + static GType support_type = 0; static const GFlagsValue support_values[] = { {D3D11_FORMAT_SUPPORT_BUFFER, "BUFFER", "buffer"}, {D3D11_FORMAT_SUPPORT_IA_VERTEX_BUFFER, "IA_VERTEX_BUFFER", @@ -103,13 +98,12 @@ gst_d3d11_format_support_get_type (void) {0, nullptr, nullptr} }; - if (g_once_init_enter (&support_type)) { - GType tmp = g_flags_register_static ("GstD3D11FormatSupport", + GST_D3D11_CALL_ONCE_BEGIN { + support_type = g_flags_register_static ("GstD3D11FormatSupport", support_values); - g_once_init_leave (&support_type, tmp); - } + } GST_D3D11_CALL_ONCE_END; - return (GType) support_type; + return support_type; } /** diff --git a/subprojects/gst-plugins-bad/gst-libs/gst/d3d11/gstd3d11memory.cpp b/subprojects/gst-plugins-bad/gst-libs/gst/d3d11/gstd3d11memory.cpp index 13a84d2ae2..eade37eeee 100644 --- a/subprojects/gst-plugins-bad/gst-libs/gst/d3d11/gstd3d11memory.cpp +++ b/subprojects/gst-plugins-bad/gst-libs/gst/d3d11/gstd3d11memory.cpp @@ -36,7 +36,7 @@ static GstAllocator *_d3d11_memory_allocator; GType gst_d3d11_allocation_flags_get_type (void) { - static gsize type = 0; + static GType type = 0; static const GFlagsValue values[] = { {GST_D3D11_ALLOCATION_FLAG_DEFAULT, "GST_D3D11_ALLOCATION_FLAG_DEFAULT", "default"}, @@ -45,18 +45,17 @@ gst_d3d11_allocation_flags_get_type (void) {0, nullptr, nullptr} }; - if (g_once_init_enter (&type)) { - GType tmp = g_flags_register_static ("GstD3D11AllocationFlags", values); - g_once_init_leave (&type, tmp); - } + GST_D3D11_CALL_ONCE_BEGIN { + type = g_flags_register_static ("GstD3D11AllocationFlags", values); + } GST_D3D11_CALL_ONCE_END; - return (GType) type; + return type; } GType gst_d3d11_memory_transfer_get_type (void) { - static gsize type = 0; + static GType type = 0; static const GFlagsValue values[] = { {GST_D3D11_MEMORY_TRANSFER_NEED_DOWNLOAD, "GST_D3D11_MEMORY_TRANSFER_NEED_DOWNLOAD", "need-download"}, @@ -65,18 +64,17 @@ gst_d3d11_memory_transfer_get_type (void) {0, nullptr, nullptr} }; - if (g_once_init_enter (&type)) { - GType tmp = g_flags_register_static ("GstD3D11MemoryTransfer", values); - g_once_init_leave (&type, tmp); - } + GST_D3D11_CALL_ONCE_BEGIN { + type = g_flags_register_static ("GstD3D11MemoryTransfer", values); + } GST_D3D11_CALL_ONCE_END; - return (GType) type; + return type; } GType gst_d3d11_memory_native_type_get_type (void) { - static gsize type = 0; + static GType type = 0; static const GEnumValue values[] = { {GST_D3D11_MEMORY_NATIVE_TYPE_INVALID, "GST_D3D11_MEMORY_NATIVE_TYPE_INVALID", "invalid"}, @@ -87,12 +85,11 @@ gst_d3d11_memory_native_type_get_type (void) {0, nullptr, nullptr} }; - if (g_once_init_enter (&type)) { - GType tmp = g_enum_register_static ("GstD3D11MemoryNativeType", values); - g_once_init_leave (&type, tmp); - } + GST_D3D11_CALL_ONCE_BEGIN { + type = g_enum_register_static ("GstD3D11MemoryNativeType", values); + } GST_D3D11_CALL_ONCE_END; - return (GType) type; + return type; } /* GstD3D11AllocationParams */ @@ -650,10 +647,7 @@ gst_d3d11_memory_get_native_type (GstD3D11Memory * mem) void gst_d3d11_memory_init_once (void) { - static gsize _init = 0; - - if (g_once_init_enter (&_init)) { - + GST_D3D11_CALL_ONCE_BEGIN { GST_DEBUG_CATEGORY_INIT (gst_d3d11_allocator_debug, "d3d11allocator", 0, "Direct3D11 Texture Allocator"); @@ -662,8 +656,7 @@ gst_d3d11_memory_init_once (void) gst_object_ref_sink (_d3d11_memory_allocator); gst_allocator_register (GST_D3D11_MEMORY_NAME, _d3d11_memory_allocator); - g_once_init_leave (&_init, 1); - } + } GST_D3D11_CALL_ONCE_END; } /** diff --git a/subprojects/gst-plugins-bad/gst-libs/gst/d3d11/gstd3d11utils.cpp b/subprojects/gst-plugins-bad/gst-libs/gst/d3d11/gstd3d11utils.cpp index f5fe77e12c..a2b0a4156b 100644 --- a/subprojects/gst-plugins-bad/gst-libs/gst/d3d11/gstd3d11utils.cpp +++ b/subprojects/gst-plugins-bad/gst-libs/gst/d3d11/gstd3d11utils.cpp @@ -39,18 +39,13 @@ GST_DEBUG_CATEGORY_STATIC (GST_CAT_CONTEXT); static GstDebugCategory * ensure_debug_category (void) { - static gsize cat_gonce = 0; + static GstDebugCategory *cat = nullptr; - if (g_once_init_enter (&cat_gonce)) { - gsize cat_done; + GST_D3D11_CALL_ONCE_BEGIN { + cat = _gst_debug_category_new ("d3d11utils", 0, "d3d11 utility functions"); + } GST_D3D11_CALL_ONCE_END; - cat_done = (gsize) _gst_debug_category_new ("d3d11utils", 0, - "d3d11 utility functions"); - - g_once_init_leave (&cat_gonce, cat_done); - } - - return (GstDebugCategory *) cat_gonce; + return cat; } #else #define ensure_debug_category() /* NOOP */ @@ -59,12 +54,9 @@ ensure_debug_category (void) static void _init_context_debug (void) { - static gsize _init = 0; - - if (g_once_init_enter (&_init)) { + GST_D3D11_CALL_ONCE_BEGIN { GST_DEBUG_CATEGORY_GET (GST_CAT_CONTEXT, "GST_CONTEXT"); - g_once_init_leave (&_init, 1); - } + } GST_D3D11_CALL_ONCE_END; } /** diff --git a/subprojects/gst-plugins-bad/sys/d3d11/gstd3d11decoder.cpp b/subprojects/gst-plugins-bad/sys/d3d11/gstd3d11decoder.cpp index 9405b69f8f..eb74d193f1 100644 --- a/subprojects/gst-plugins-bad/sys/d3d11/gstd3d11decoder.cpp +++ b/subprojects/gst-plugins-bad/sys/d3d11/gstd3d11decoder.cpp @@ -387,14 +387,13 @@ gst_d3d11_decoder_is_configured (GstD3D11Decoder * decoder) static GQuark gst_d3d11_decoder_view_id_quark (void) { - static gsize id_quark = 0; + static GQuark id_quark = 0; - if (g_once_init_enter (&id_quark)) { - GQuark quark = g_quark_from_string ("GstD3D11DecoderViewId"); - g_once_init_leave (&id_quark, quark); - } + GST_D3D11_CALL_ONCE_BEGIN { + id_quark = g_quark_from_string ("GstD3D11DecoderViewId"); + } GST_D3D11_CALL_ONCE_END; - return (GQuark) id_quark; + return id_quark; } static gboolean diff --git a/subprojects/gst-plugins-bad/sys/d3d11/gstd3d11deinterlace.cpp b/subprojects/gst-plugins-bad/sys/d3d11/gstd3d11deinterlace.cpp index 366f0777d9..49b8830ea3 100644 --- a/subprojects/gst-plugins-bad/sys/d3d11/gstd3d11deinterlace.cpp +++ b/subprojects/gst-plugins-bad/sys/d3d11/gstd3d11deinterlace.cpp @@ -106,9 +106,9 @@ typedef enum static GType gst_d3d11_deinterlace_method_type (void) { - static gsize method_type = 0; + static GType method_type = 0; - if (g_once_init_enter (&method_type)) { + GST_D3D11_CALL_ONCE_BEGIN { static const GFlagsValue method_types[] = { {GST_D3D11_DEINTERLACE_METHOD_BLEND, "Blend: Blending top/bottom field pictures into one frame. " @@ -123,14 +123,14 @@ gst_d3d11_deinterlace_method_type (void) {GST_D3D11_DEINTERLACE_METHOD_MOTION_COMPENSATION, "Motion Compensation: Recreating missing lines by using motion vector. " "Framerate will be doubled (e,g, 60i -> 60p)", "mocomp"}, - {0, NULL, NULL}, + {0, nullptr, nullptr}, }; - GType tmp = g_flags_register_static ("GstD3D11DeinterlaceMethod", - method_types); - g_once_init_leave (&method_type, tmp); - } - return (GType) method_type; + method_type = g_flags_register_static ("GstD3D11DeinterlaceMethod", + method_types); + } GST_D3D11_CALL_ONCE_END; + + return method_type; } typedef struct diff --git a/subprojects/gst-plugins-bad/sys/d3d11/gstd3d11pluginutils.cpp b/subprojects/gst-plugins-bad/sys/d3d11/gstd3d11pluginutils.cpp index 02fa4b37bd..f86a41ee3f 100644 --- a/subprojects/gst-plugins-bad/sys/d3d11/gstd3d11pluginutils.cpp +++ b/subprojects/gst-plugins-bad/sys/d3d11/gstd3d11pluginutils.cpp @@ -36,9 +36,7 @@ static guint _gst_d3d11_texture_max_dimension = 16384; void gst_d3d11_plugin_utils_init (D3D_FEATURE_LEVEL feature_level) { - static gsize _init_once = 0; - - if (g_once_init_enter (&_init_once)) { + GST_D3D11_CALL_ONCE_BEGIN { /* https://docs.microsoft.com/en-us/windows/win32/direct3d11/overviews-direct3d-11-devices-downlevel-intro */ if (feature_level >= D3D_FEATURE_LEVEL_11_0) _gst_d3d11_texture_max_dimension = 16384; @@ -46,9 +44,8 @@ gst_d3d11_plugin_utils_init (D3D_FEATURE_LEVEL feature_level) _gst_d3d11_texture_max_dimension = 8192; else _gst_d3d11_texture_max_dimension = 4096; - - g_once_init_leave (&_init_once, 1); } + GST_D3D11_CALL_ONCE_END; } GstCaps * @@ -75,19 +72,16 @@ gst_d3d11_get_updated_template_caps (GstStaticCaps * template_caps) gboolean gst_d3d11_is_windows_8_or_greater (void) { - static gsize version_once = 0; static gboolean ret = FALSE; - if (g_once_init_enter (&version_once)) { + GST_D3D11_CALL_ONCE_BEGIN { #if (!GST_D3D11_WINAPI_ONLY_APP) if (IsWindows8OrGreater ()) ret = TRUE; #else ret = TRUE; #endif - - g_once_init_leave (&version_once, 1); - } + } GST_D3D11_CALL_ONCE_END; return ret; } diff --git a/subprojects/gst-plugins-bad/sys/d3d11/gstd3d11testsrc.cpp b/subprojects/gst-plugins-bad/sys/d3d11/gstd3d11testsrc.cpp index 5724e31cac..3dc322aa57 100644 --- a/subprojects/gst-plugins-bad/sys/d3d11/gstd3d11testsrc.cpp +++ b/subprojects/gst-plugins-bad/sys/d3d11/gstd3d11testsrc.cpp @@ -72,9 +72,9 @@ typedef enum static GType gst_d3d11_test_src_pattern_get_type (void) { - static gsize pattern_type = 0; + static GType pattern_type = 0; - if (g_once_init_enter (&pattern_type)) { + GST_D3D11_CALL_ONCE_BEGIN { static const GEnumValue pattern_types[] = { {GST_D3D11_TEST_SRC_SMPTE, "SMPTE 100% color bars", "smpte"}, {GST_D3D11_TEST_SRC_SNOW, "Random (television snow)", "snow"}, @@ -89,12 +89,12 @@ gst_d3d11_test_src_pattern_get_type (void) {GST_D3D11_TEST_SRC_CHECKERS8, "Checkers 8px", "checkers-8"}, {0, nullptr, nullptr}, }; - GType tmp = g_enum_register_static ("GstD3D11TestSrcPattern", - pattern_types); - g_once_init_leave (&pattern_type, tmp); - } - return (GType) pattern_type; + pattern_type = g_enum_register_static ("GstD3D11TestSrcPattern", + pattern_types); + } GST_D3D11_CALL_ONCE_END; + + return pattern_type; } typedef struct diff --git a/subprojects/gst-plugins-bad/sys/d3d11/gstd3d11window.cpp b/subprojects/gst-plugins-bad/sys/d3d11/gstd3d11window.cpp index 1222669101..0825c30334 100644 --- a/subprojects/gst-plugins-bad/sys/d3d11/gstd3d11window.cpp +++ b/subprojects/gst-plugins-bad/sys/d3d11/gstd3d11window.cpp @@ -74,9 +74,9 @@ static guint d3d11_window_signals[SIGNAL_LAST] = { 0, }; GType gst_d3d11_window_fullscreen_toggle_mode_type (void) { - static gsize mode_type = 0; + static GType mode_type = 0; - if (g_once_init_enter (&mode_type)) { + GST_D3D11_CALL_ONCE_BEGIN { static const GFlagsValue mode_types[] = { {GST_D3D11_WINDOW_FULLSCREEN_TOGGLE_MODE_NONE, "GST_D3D11_WINDOW_FULLSCREEN_TOGGLE_MODE_NONE", "none"}, @@ -84,14 +84,14 @@ gst_d3d11_window_fullscreen_toggle_mode_type (void) "GST_D3D11_WINDOW_FULLSCREEN_TOGGLE_MODE_ALT_ENTER", "alt-enter"}, {GST_D3D11_WINDOW_FULLSCREEN_TOGGLE_MODE_PROPERTY, "GST_D3D11_WINDOW_FULLSCREEN_TOGGLE_MODE_PROPERTY", "property"}, - {0, NULL, NULL}, + {0, nullptr, nullptr}, }; - GType tmp = g_flags_register_static ("GstD3D11WindowFullscreenToggleMode", - mode_types); - g_once_init_leave (&mode_type, tmp); - } - return (GType) mode_type; + mode_type = g_flags_register_static ("GstD3D11WindowFullscreenToggleMode", + mode_types); + } GST_D3D11_CALL_ONCE_END; + + return mode_type; } #define gst_d3d11_window_parent_class parent_class