mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-09-29 23:32:33 +00:00
meta: do metadata registration threadsafe
We need to use g_once to register the metadata implementations only once. See https://bugzilla.gnome.org/show_bug.cgi?id=685332
This commit is contained in:
parent
10c8586902
commit
ed19974e25
3 changed files with 9 additions and 6 deletions
|
@ -453,13 +453,14 @@ my_example_meta_get_info (void)
|
||||||
{
|
{
|
||||||
static const GstMetaInfo *meta_info = NULL;
|
static const GstMetaInfo *meta_info = NULL;
|
||||||
|
|
||||||
if (meta_info == NULL) {
|
if (g_once_init_enter (&meta_info)) {
|
||||||
meta_info = gst_meta_register (MY_EXAMPLE_META_API_TYPE,
|
const GstMetaInfo *mi = gst_meta_register (MY_EXAMPLE_META_API_TYPE,
|
||||||
"MyExampleMeta",
|
"MyExampleMeta",
|
||||||
sizeof (MyExampleMeta),
|
sizeof (MyExampleMeta),
|
||||||
my_example_meta_init,
|
my_example_meta_init,
|
||||||
my_example_meta_free,
|
my_example_meta_free,
|
||||||
my_example_meta_transform);
|
my_example_meta_transform);
|
||||||
|
g_once_init_leave (&meta_info, mi);
|
||||||
}
|
}
|
||||||
return meta_info;
|
return meta_info;
|
||||||
}
|
}
|
||||||
|
|
|
@ -82,12 +82,13 @@ gst_net_address_meta_get_info (void)
|
||||||
{
|
{
|
||||||
static const GstMetaInfo *meta_info = NULL;
|
static const GstMetaInfo *meta_info = NULL;
|
||||||
|
|
||||||
if (meta_info == NULL) {
|
if (g_once_init_enter (&meta_info)) {
|
||||||
meta_info = gst_meta_register (GST_NET_ADDRESS_META_API_TYPE,
|
const GstMetaInfo *mi = gst_meta_register (GST_NET_ADDRESS_META_API_TYPE,
|
||||||
"GstNetAddressMeta",
|
"GstNetAddressMeta",
|
||||||
sizeof (GstNetAddressMeta),
|
sizeof (GstNetAddressMeta),
|
||||||
net_address_meta_init,
|
net_address_meta_init,
|
||||||
net_address_meta_free, net_address_meta_transform);
|
net_address_meta_free, net_address_meta_transform);
|
||||||
|
g_once_init_leave (&meta_info, mi);
|
||||||
}
|
}
|
||||||
return meta_info;
|
return meta_info;
|
||||||
}
|
}
|
||||||
|
|
|
@ -139,11 +139,12 @@ gst_meta_test_get_info (void)
|
||||||
{
|
{
|
||||||
static const GstMetaInfo *meta_test_info = NULL;
|
static const GstMetaInfo *meta_test_info = NULL;
|
||||||
|
|
||||||
if (meta_test_info == NULL) {
|
if (g_once_init_enter (&meta_test_info)) {
|
||||||
meta_test_info = gst_meta_register (GST_META_TEST_API_TYPE,
|
const GstMetaInfo *mi = gst_meta_register (GST_META_TEST_API_TYPE,
|
||||||
"GstMetaTest",
|
"GstMetaTest",
|
||||||
sizeof (GstMetaTest),
|
sizeof (GstMetaTest),
|
||||||
test_init_func, test_free_func, test_transform_func);
|
test_init_func, test_free_func, test_transform_func);
|
||||||
|
g_once_init_leave (&meta_test_info, mi);
|
||||||
}
|
}
|
||||||
return meta_test_info;
|
return meta_test_info;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue