summaryrefslogtreecommitdiff
path: root/ext/wpe/WPEThreadedView.cpp
diff options
context:
space:
mode:
authorThibault Saunier <tsaunier@igalia.com>2021-04-15 13:28:42 -0400
committerThibault Saunier <tsaunier@igalia.com>2021-04-15 13:29:43 -0400
commitf9ce3946a1942e974c9d5b645550219c14b79cf6 (patch)
treea80c84abe37adf8df3c5d981ca32855ed519fa1b /ext/wpe/WPEThreadedView.cpp
parent41879b20c248ed795e7ba195313cdfae3a104391 (diff)
downloadgstreamer-plugins-bad-f9ce3946a1942e974c9d5b645550219c14b79cf6.tar.gz
wpe: Make threaded view singleton creation thread safe
It was leading to interesting failures. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2165>
Diffstat (limited to 'ext/wpe/WPEThreadedView.cpp')
-rw-r--r--ext/wpe/WPEThreadedView.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/ext/wpe/WPEThreadedView.cpp b/ext/wpe/WPEThreadedView.cpp
index ec30741fe..b2c81da46 100644
--- a/ext/wpe/WPEThreadedView.cpp
+++ b/ext/wpe/WPEThreadedView.cpp
@@ -66,9 +66,14 @@ static WPEContextThread *s_view = NULL;
WPEContextThread& WPEContextThread::singleton()
{
- if (!s_view)
+ static gsize initialized = 0;
+
+ if (g_once_init_enter (&initialized)) {
s_view = new WPEContextThread;
+ g_once_init_leave (&initialized, 1);
+ }
+
return *s_view;
}