| From a1bf3d8d540a25268d612a489e1e836d6ea737b0 Mon Sep 17 00:00:00 2001 |
| From: Matthew Waters <matthew@centricular.com> |
| 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: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/941> |
| --- |
| 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 | 14 +++++++------- |
| gst/audioparsers/gstac3parse.h | 2 +- |
| sys/rpicamsrc/gstrpicamsrc.c | 2 +- |
| sys/ximage/ximageutil.c | 2 +- |
| 14 files changed, 25 insertions(+), 25 deletions(-) |
| |
| diff --git a/ext/jack/gstjack.c b/ext/jack/gstjack.c |
| index ca98dc405..fdd507d87 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 ee7cea8c0..6e8d04ae5 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 1d2cf82ee..d43a447a7 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 86f3dcdbb..51ec86a25 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 a05d26edd..bfa79cda0 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 acb89b6e1..d2c092202 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<QGuiApplication *> (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 2ad5601fc..52965fd0b 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 7659800b6..bc99639b4 100644 |
| --- a/ext/qt/qtitem.cc |
| +++ b/ext/qt/qtitem.cc |
| @@ -104,7 +104,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 9360c3337..7c44ac54e 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<QGuiApplication *> (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 e92aa85c7..74cc3c970 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 cd5b30d14..4b3b4f770 100644 |
| --- a/ext/vpx/gstvpxenc.c |
| +++ b/ext/vpx/gstvpxenc.c |
| @@ -165,7 +165,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; |
| @@ -188,7 +188,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; |
| @@ -210,7 +210,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; |
| @@ -232,7 +232,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; |
| @@ -256,7 +256,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; |
| @@ -280,7 +280,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; |
| @@ -303,7 +303,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; |
| diff --git a/gst/audioparsers/gstac3parse.h b/gst/audioparsers/gstac3parse.h |
| index 0e7af5acd..81e2104d5 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 a148d4106..f719acb4c 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 57c9392c7..018b60515 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)) { |
| -- |
| 2.31.1 |
| |