diff options
author | Aleksander Morgado <aleksander@aleksander.es> | 2021-07-01 15:01:11 +0200 |
---|---|---|
committer | Aleksander Morgado <aleksander@aleksander.es> | 2021-07-01 15:18:44 +0200 |
commit | afc7e5f9022ecec2e1ec388c9f8c48fb7c16a2b9 (patch) | |
tree | 6906659d3fdd4906ca74e8f0c24a26bb574f7c40 /libmm-glib/mm-modem-firmware.c | |
parent | 30c9fc65dacd2fb5df3913032a420e750a6ae054 (diff) |
libmm-glib: use single mutex in each type to sync access
There is truly no need for a per-property mutex, using a global one
for the whole object is equally fine.
Diffstat (limited to 'libmm-glib/mm-modem-firmware.c')
-rw-r--r-- | libmm-glib/mm-modem-firmware.c | 28 |
1 files changed, 10 insertions, 18 deletions
diff --git a/libmm-glib/mm-modem-firmware.c b/libmm-glib/mm-modem-firmware.c index 593fb7ab..1aca87c8 100644 --- a/libmm-glib/mm-modem-firmware.c +++ b/libmm-glib/mm-modem-firmware.c @@ -41,7 +41,9 @@ G_DEFINE_TYPE (MMModemFirmware, mm_modem_firmware, MM_GDBUS_TYPE_MODEM_FIRMWARE_PROXY) struct _MMModemFirmwarePrivate { - GMutex update_settings_mutex; + /* Common mutex to sync access */ + GMutex mutex; + guint update_settings_id; MMFirmwareUpdateSettings *update_settings; }; @@ -98,7 +100,7 @@ static void update_settings_updated (MMModemFirmware *self, GParamSpec *pspec) { - g_mutex_lock (&self->priv->update_settings_mutex); + g_mutex_lock (&self->priv->mutex); { GVariant *variant; @@ -114,14 +116,14 @@ update_settings_updated (MMModemFirmware *self, } } } - g_mutex_unlock (&self->priv->update_settings_mutex); + g_mutex_unlock (&self->priv->mutex); } static void ensure_internal_update_settings (MMModemFirmware *self, MMFirmwareUpdateSettings **dupl) { - g_mutex_lock (&self->priv->update_settings_mutex); + g_mutex_lock (&self->priv->mutex); { /* If this is the first time ever asking for the object, setup the * update listener and the initial object, if any. */ @@ -151,7 +153,7 @@ ensure_internal_update_settings (MMModemFirmware *self, if (dupl && self->priv->update_settings) *dupl = g_object_ref (self->priv->update_settings); } - g_mutex_unlock (&self->priv->update_settings_mutex); + g_mutex_unlock (&self->priv->mutex); } /** @@ -533,7 +535,7 @@ static void mm_modem_firmware_init (MMModemFirmware *self) { self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, MM_TYPE_MODEM_FIRMWARE, MMModemFirmwarePrivate); - g_mutex_init (&self->priv->update_settings_mutex); + g_mutex_init (&self->priv->mutex); } static void @@ -541,19 +543,11 @@ finalize (GObject *object) { MMModemFirmware *self = MM_MODEM_FIRMWARE (object); - g_mutex_clear (&self->priv->update_settings_mutex); - - G_OBJECT_CLASS (mm_modem_firmware_parent_class)->finalize (object); -} - -static void -dispose (GObject *object) -{ - MMModemFirmware *self = MM_MODEM_FIRMWARE (object); + g_mutex_clear (&self->priv->mutex); g_clear_object (&self->priv->update_settings); - G_OBJECT_CLASS (mm_modem_firmware_parent_class)->dispose (object); + G_OBJECT_CLASS (mm_modem_firmware_parent_class)->finalize (object); } static void @@ -563,7 +557,5 @@ mm_modem_firmware_class_init (MMModemFirmwareClass *modem_class) g_type_class_add_private (object_class, sizeof (MMModemFirmwarePrivate)); - /* Virtual methods */ - object_class->dispose = dispose; object_class->finalize = finalize; } |