summaryrefslogtreecommitdiff
path: root/libmm-glib
diff options
context:
space:
mode:
authorAleksander Morgado <aleksander@aleksander.es>2021-07-01 23:03:36 +0200
committerAleksander Morgado <aleksander@aleksander.es>2021-07-01 23:38:04 +0200
commit434d7be3f27d04437a357f0a79aeaddc4ad39f24 (patch)
treebd356a58ff051673dc1bfc4a5f93a5532411d09f /libmm-glib
parentccefbbc0c67bd3a2a1538ced6b2ce84a742b9877 (diff)
libmm-glib,modem-messaging: use helper macros to manage the monitored properties
Diffstat (limited to 'libmm-glib')
-rw-r--r--libmm-glib/mm-modem-messaging.c105
1 files changed, 8 insertions, 97 deletions
diff --git a/libmm-glib/mm-modem-messaging.c b/libmm-glib/mm-modem-messaging.c
index ed4cb2e7..30e8c060 100644
--- a/libmm-glib/mm-modem-messaging.c
+++ b/libmm-glib/mm-modem-messaging.c
@@ -45,9 +45,7 @@ struct _MMModemMessagingPrivate {
/* Common mutex to sync access */
GMutex mutex;
- /* Supported Storage */
- guint supported_storages_id;
- GArray *supported_storages;
+ PROPERTY_ARRAY_DECLARE (supported_storages)
};
/*****************************************************************************/
@@ -98,73 +96,6 @@ mm_modem_messaging_dup_path (MMModemMessaging *self)
/*****************************************************************************/
-static void
-supported_storages_updated (MMModemMessaging *self,
- GParamSpec *pspec)
-{
- g_mutex_lock (&self->priv->mutex);
- {
- GVariant *dictionary;
-
- if (self->priv->supported_storages)
- g_array_unref (self->priv->supported_storages);
-
- dictionary = mm_gdbus_modem_messaging_get_supported_storages (MM_GDBUS_MODEM_MESSAGING (self));
- self->priv->supported_storages = (dictionary ?
- mm_common_sms_storages_variant_to_garray (dictionary) :
- NULL);
- }
- g_mutex_unlock (&self->priv->mutex);
-}
-
-static gboolean
-ensure_internal_supported_storages (MMModemMessaging *self,
- MMSmsStorage **dup_storages,
- guint *dup_storages_n)
-{
- gboolean ret;
-
- g_mutex_lock (&self->priv->mutex);
- {
- /* If this is the first time ever asking for the array, setup the
- * update listener and the initial array, if any. */
- if (!self->priv->supported_storages_id) {
- GVariant *dictionary;
-
- dictionary = mm_gdbus_modem_messaging_dup_supported_storages (MM_GDBUS_MODEM_MESSAGING (self));
- if (dictionary) {
- self->priv->supported_storages = mm_common_sms_storages_variant_to_garray (dictionary);
- g_variant_unref (dictionary);
- }
-
- /* No need to clear this signal connection when freeing self */
- self->priv->supported_storages_id =
- g_signal_connect (self,
- "notify::supported-storages",
- G_CALLBACK (supported_storages_updated),
- NULL);
- }
-
- if (!self->priv->supported_storages)
- ret = FALSE;
- else {
- ret = TRUE;
-
- if (dup_storages && dup_storages_n) {
- *dup_storages_n = self->priv->supported_storages->len;
- if (self->priv->supported_storages->len > 0) {
- *dup_storages = g_malloc (sizeof (MMSmsStorage) * self->priv->supported_storages->len);
- memcpy (*dup_storages, self->priv->supported_storages->data, sizeof (MMSmsStorage) * self->priv->supported_storages->len);
- } else
- *dup_storages = NULL;
- }
- }
- }
- g_mutex_unlock (&self->priv->mutex);
-
- return ret;
-}
-
/**
* mm_modem_messaging_get_supported_storages:
* @self: A #MMModem.
@@ -179,17 +110,6 @@ ensure_internal_supported_storages (MMModemMessaging *self,
*
* Since: 1.0
*/
-gboolean
-mm_modem_messaging_get_supported_storages (MMModemMessaging *self,
- MMSmsStorage **storages,
- guint *n_storages)
-{
- g_return_val_if_fail (MM_IS_MODEM_MESSAGING (self), FALSE);
- g_return_val_if_fail (storages != NULL, FALSE);
- g_return_val_if_fail (n_storages != NULL, FALSE);
-
- return ensure_internal_supported_storages (self, storages, n_storages);
-}
/**
* mm_modem_messaging_peek_supported_storages:
@@ -204,22 +124,11 @@ mm_modem_messaging_get_supported_storages (MMModemMessaging *self,
*
* Since: 1.0
*/
-gboolean
-mm_modem_messaging_peek_supported_storages (MMModemMessaging *self,
- const MMSmsStorage **storages,
- guint *n_storages)
-{
- g_return_val_if_fail (MM_IS_MODEM_MESSAGING (self), FALSE);
- g_return_val_if_fail (storages != NULL, FALSE);
- g_return_val_if_fail (n_storages != NULL, FALSE);
- if (!ensure_internal_supported_storages (self, NULL, NULL))
- return FALSE;
-
- *n_storages = self->priv->supported_storages->len;
- *storages = (MMSmsStorage *)self->priv->supported_storages->data;
- return TRUE;
-}
+PROPERTY_ARRAY_DEFINE (supported_storages,
+ ModemMessaging, modem_messaging, MODEM_MESSAGING,
+ MMSmsStorage,
+ mm_common_sms_storages_variant_to_garray)
/*****************************************************************************/
@@ -738,6 +647,8 @@ mm_modem_messaging_init (MMModemMessaging *self)
{
self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, MM_TYPE_MODEM_MESSAGING, MMModemMessagingPrivate);
g_mutex_init (&self->priv->mutex);
+
+ PROPERTY_INITIALIZE (supported_storages, "supported-storages")
}
static void
@@ -747,7 +658,7 @@ finalize (GObject *object)
g_mutex_clear (&self->priv->mutex);
- g_clear_pointer (&self->priv->supported_storages, g_array_unref);
+ PROPERTY_ARRAY_FINALIZE (supported_storages)
G_OBJECT_CLASS (mm_modem_messaging_parent_class)->finalize (object);
}