From 612102fdbc3f813bf9d3406165692b5f742e51a6 Mon Sep 17 00:00:00 2001 From: Matthew Waters Date: Thu, 18 Mar 2021 19:52:53 +1100 Subject: [PATCH] gst: don't use volatile to mean atomic volatile is not sufficient to provide atomic guarantees and real atomics should be used instead. GCC 11 has started warning about using volatile with atomic operations. https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719 Discovered in https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/868 Part-of: --- ext/jack/gstjack.c | 6 +++--- ext/jack/gstjackaudiosink.c | 2 +- ext/jack/gstjackaudiosrc.c | 2 +- ext/pulse/pulsesink.h | 2 +- ext/qt/gstqsgtexture.cc | 2 +- ext/qt/gstqtglutility.cc | 2 +- ext/qt/qtglrenderer.cc | 6 +++--- ext/qt/qtitem.cc | 2 +- ext/qt/qtwindow.cc | 4 ++-- ext/vpx/gstvpxdec.c | 2 +- ext/vpx/gstvpxenc.c | 16 ++++++++-------- gst/audioparsers/gstac3parse.h | 2 +- sys/rpicamsrc/gstrpicamsrc.c | 2 +- sys/ximage/ximageutil.c | 2 +- 14 files changed, 26 insertions(+), 26 deletions(-) diff --git a/ext/jack/gstjack.c b/ext/jack/gstjack.c index ca98dc4059..fdd507d872 100644 --- a/ext/jack/gstjack.c +++ b/ext/jack/gstjack.c @@ -28,7 +28,7 @@ GType gst_jack_connect_get_type (void) { - static volatile gsize jack_connect_type = 0; + static gsize jack_connect_type = 0; if (g_once_init_enter (&jack_connect_type)) { static const GEnumValue jack_connect_enums[] = { @@ -50,7 +50,7 @@ gst_jack_connect_get_type (void) GType gst_jack_transport_get_type (void) { - static volatile gsize type = 0; + static gsize type = 0; if (g_once_init_enter (&type)) { static const GFlagsValue flag_values[] = { @@ -84,7 +84,7 @@ gst_jack_client_free (gpointer jclient) GType gst_jack_client_get_type (void) { - static volatile gsize jack_client_type = 0; + static gsize jack_client_type = 0; if (g_once_init_enter (&jack_client_type)) { /* hackish, but makes it show up nicely in gst-inspect */ diff --git a/ext/jack/gstjackaudiosink.c b/ext/jack/gstjackaudiosink.c index ee7cea8c06..6e8d04ae5b 100644 --- a/ext/jack/gstjackaudiosink.c +++ b/ext/jack/gstjackaudiosink.c @@ -131,7 +131,7 @@ gst_jack_audio_sink_free_channels (GstJackAudioSink * sink) static GType gst_jack_ring_buffer_get_type (void) { - static volatile gsize ringbuffer_type = 0; + static gsize ringbuffer_type = 0; if (g_once_init_enter (&ringbuffer_type)) { static const GTypeInfo ringbuffer_info = { diff --git a/ext/jack/gstjackaudiosrc.c b/ext/jack/gstjackaudiosrc.c index 1d2cf82ee6..d43a447a76 100644 --- a/ext/jack/gstjackaudiosrc.c +++ b/ext/jack/gstjackaudiosrc.c @@ -151,7 +151,7 @@ gst_jack_audio_src_free_channels (GstJackAudioSrc * src) static GType gst_jack_ring_buffer_get_type (void) { - static volatile gsize ringbuffer_type = 0; + static gsize ringbuffer_type = 0; if (g_once_init_enter (&ringbuffer_type)) { static const GTypeInfo ringbuffer_info = { sizeof (GstJackRingBufferClass), diff --git a/ext/pulse/pulsesink.h b/ext/pulse/pulsesink.h index 86f3dcdbb7..51ec86a25a 100644 --- a/ext/pulse/pulsesink.h +++ b/ext/pulse/pulsesink.h @@ -72,7 +72,7 @@ struct _GstPulseSink GstStructure *properties; pa_proplist *proplist; - volatile gint format_lost; + gint format_lost; GstClockTime format_lost_time; }; diff --git a/ext/qt/gstqsgtexture.cc b/ext/qt/gstqsgtexture.cc index 1f0a2e6e15..00e2ddad0e 100644 --- a/ext/qt/gstqsgtexture.cc +++ b/ext/qt/gstqsgtexture.cc @@ -35,7 +35,7 @@ GST_DEBUG_CATEGORY_STATIC (GST_CAT_DEFAULT); GstQSGTexture::GstQSGTexture () { - static volatile gsize _debug; + static gsize _debug; initializeOpenGLFunctions(); diff --git a/ext/qt/gstqtglutility.cc b/ext/qt/gstqtglutility.cc index acb89b6e1e..d2c092202b 100644 --- a/ext/qt/gstqtglutility.cc +++ b/ext/qt/gstqtglutility.cc @@ -66,7 +66,7 @@ gst_qt_get_gl_display () { GstGLDisplay *display = NULL; QGuiApplication *app = static_cast (QCoreApplication::instance ()); - static volatile gsize _debug; + static gsize _debug; g_assert (app != NULL); diff --git a/ext/qt/qtglrenderer.cc b/ext/qt/qtglrenderer.cc index 2ad5601fc3..52965fd0bd 100644 --- a/ext/qt/qtglrenderer.cc +++ b/ext/qt/qtglrenderer.cc @@ -22,7 +22,7 @@ GST_DEBUG_CATEGORY_STATIC (GST_CAT_DEFAULT); static void init_debug (void) { - static volatile gsize _debug; + static gsize _debug; if (g_once_init_enter (&_debug)) { GST_DEBUG_CATEGORY_INIT (GST_CAT_DEFAULT, "qtglrenderer", 0, @@ -115,7 +115,7 @@ typedef enum struct SharedRenderData { - volatile int refcount; + int refcount; SharedRenderDataState state; GMutex lock; GCond cond; @@ -130,7 +130,7 @@ shared_render_data_new (void) { struct SharedRenderData *ret = g_new0 (struct SharedRenderData, 1); - ret->refcount = 1; + g_atomic_int_set (&ret->refcount, 1); g_mutex_init (&ret->lock); return ret; diff --git a/ext/qt/qtitem.cc b/ext/qt/qtitem.cc index 2869ea92b0..da2b701908 100644 --- a/ext/qt/qtitem.cc +++ b/ext/qt/qtitem.cc @@ -112,7 +112,7 @@ void InitializeSceneGraph::run() QtGLVideoItem::QtGLVideoItem() { - static volatile gsize _debug; + static gsize _debug; if (g_once_init_enter (&_debug)) { GST_DEBUG_CATEGORY_INIT (GST_CAT_DEFAULT, "qtglwidget", 0, "Qt GL Widget"); diff --git a/ext/qt/qtwindow.cc b/ext/qt/qtwindow.cc index 9360c3337f..7c44ac54eb 100644 --- a/ext/qt/qtwindow.cc +++ b/ext/qt/qtwindow.cc @@ -103,7 +103,7 @@ QtGLWindow::QtGLWindow ( QWindow * parent, QQuickWindow *src ) : QQuickWindow( parent ), source (src) { QGuiApplication *app = static_cast (QCoreApplication::instance ()); - static volatile gsize _debug; + static gsize _debug; g_assert (app != NULL); @@ -152,7 +152,7 @@ QtGLWindow::beforeRendering() g_mutex_lock (&this->priv->lock); - static volatile gsize once = 0; + static gsize once = 0; if (g_once_init_enter(&once)) { this->priv->start = QDateTime::currentDateTime().toMSecsSinceEpoch(); g_once_init_leave(&once,1); diff --git a/ext/vpx/gstvpxdec.c b/ext/vpx/gstvpxdec.c index 19a24870c4..adf842813b 100644 --- a/ext/vpx/gstvpxdec.c +++ b/ext/vpx/gstvpxdec.c @@ -79,7 +79,7 @@ gst_vpx_dec_post_processing_flags_get_type (void) {C_FLAGS (VP8_MFQE), "Multi-frame quality enhancement", "mfqe"}, {0, NULL, NULL} }; - static volatile GType id = 0; + static GType id = 0; if (g_once_init_enter ((gsize *) & id)) { GType _id; diff --git a/ext/vpx/gstvpxenc.c b/ext/vpx/gstvpxenc.c index 29c2e5902a..0ccaf27022 100644 --- a/ext/vpx/gstvpxenc.c +++ b/ext/vpx/gstvpxenc.c @@ -169,7 +169,7 @@ gst_vpx_enc_end_usage_get_type (void) {VPX_CQ, "Constant Quality Mode (CQ) mode", "cq"}, {0, NULL, NULL} }; - static volatile GType id = 0; + static GType id = 0; if (g_once_init_enter ((gsize *) & id)) { GType _id; @@ -192,7 +192,7 @@ gst_vpx_enc_multipass_mode_get_type (void) {VPX_RC_LAST_PASS, "Last pass of multipass encoding", "last-pass"}, {0, NULL, NULL} }; - static volatile GType id = 0; + static GType id = 0; if (g_once_init_enter ((gsize *) & id)) { GType _id; @@ -214,7 +214,7 @@ gst_vpx_enc_kf_mode_get_type (void) {VPX_KF_DISABLED, "Don't automatically place keyframes", "disabled"}, {0, NULL, NULL} }; - static volatile GType id = 0; + static GType id = 0; if (g_once_init_enter ((gsize *) & id)) { GType _id; @@ -236,7 +236,7 @@ gst_vpx_enc_tuning_get_type (void) {VP8_TUNE_SSIM, "Tune for SSIM", "ssim"}, {0, NULL, NULL} }; - static volatile GType id = 0; + static GType id = 0; if (g_once_init_enter ((gsize *) & id)) { GType _id; @@ -260,7 +260,7 @@ gst_vpx_enc_scaling_mode_get_type (void) {VP8E_ONETWO, "1:2", "1:2"}, {0, NULL, NULL} }; - static volatile GType id = 0; + static GType id = 0; if (g_once_init_enter ((gsize *) & id)) { GType _id; @@ -284,7 +284,7 @@ gst_vpx_enc_token_partitions_get_type (void) {VP8_EIGHT_TOKENPARTITION, "Eight token partitions", "8"}, {0, NULL, NULL} }; - static volatile GType id = 0; + static GType id = 0; if (g_once_init_enter ((gsize *) & id)) { GType _id; @@ -307,7 +307,7 @@ gst_vpx_enc_er_flags_get_type (void) "Allow partitions to be decoded independently", "partitions"}, {0, NULL, NULL} }; - static volatile GType id = 0; + static GType id = 0; if (g_once_init_enter ((gsize *) & id)) { GType _id; @@ -336,7 +336,7 @@ gst_vpx_enc_ts_layer_flags_get_type (void) {VP8_EFLAG_NO_UPD_ENTROPY, "Disable entropy update", "no-upd-entropy"}, {0, NULL, NULL} }; - static volatile GType id = 0; + static GType id = 0; if (g_once_init_enter ((gsize *) & id)) { GType _id; diff --git a/gst/audioparsers/gstac3parse.h b/gst/audioparsers/gstac3parse.h index 0e7af5acd7..81e2104d5e 100644 --- a/gst/audioparsers/gstac3parse.h +++ b/gst/audioparsers/gstac3parse.h @@ -62,7 +62,7 @@ struct _GstAc3Parse { gint blocks; gboolean eac; gboolean sent_codec_tag; - volatile gint align; + gint align; GstPadChainFunction baseparse_chainfunc; }; diff --git a/sys/rpicamsrc/gstrpicamsrc.c b/sys/rpicamsrc/gstrpicamsrc.c index 2aa28f4883..6ab6016314 100644 --- a/sys/rpicamsrc/gstrpicamsrc.c +++ b/sys/rpicamsrc/gstrpicamsrc.c @@ -292,7 +292,7 @@ gst_rpi_cam_src_sensor_mode_get_type (void) "640x480 4:3 60.1-90fps", "640x480-fast"}, {0, NULL, NULL} }; - static volatile GType id = 0; + static GType id = 0; if (g_once_init_enter ((gsize *) & id)) { GType _id; _id = g_enum_register_static ("GstRpiCamSrcSensorMode", values); diff --git a/sys/ximage/ximageutil.c b/sys/ximage/ximageutil.c index 57c9392c79..018b605156 100644 --- a/sys/ximage/ximageutil.c +++ b/sys/ximage/ximageutil.c @@ -26,7 +26,7 @@ GType gst_meta_ximage_api_get_type (void) { - static volatile GType type; + static GType type; static const gchar *tags[] = { "memory", NULL }; if (g_once_init_enter (&type)) {