[tepl] MetadataStore: add is_loading() private function



commit d7c1d70a3bfece7a70864db18de6a37c1999365f
Author: Sébastien Wilmet <swilmet gnome org>
Date:   Wed Apr 15 21:40:28 2020 +0200

    MetadataStore: add is_loading() private function

 tepl/tepl-metadata-store.c | 14 ++++++++++++++
 tepl/tepl-metadata-store.h |  3 +++
 2 files changed, 17 insertions(+)
---
diff --git a/tepl/tepl-metadata-store.c b/tepl/tepl-metadata-store.c
index 7411a2c..4d43437 100644
--- a/tepl/tepl-metadata-store.c
+++ b/tepl/tepl-metadata-store.c
@@ -93,6 +93,7 @@ struct _TeplMetadataStorePrivate
        guint max_number_of_locations;
 
        guint is_loaded : 1;
+       guint is_loading : 1;
        guint modified : 1;
 };
 
@@ -741,9 +742,12 @@ _tepl_metadata_store_load_async (TeplMetadataStore   *store,
 
        g_return_if_fail (TEPL_IS_METADATA_STORE (store));
        g_return_if_fail (cancellable == NULL || G_IS_CANCELLABLE (cancellable));
+       g_return_if_fail (!_tepl_metadata_store_is_loading (store));
        g_return_if_fail (!_tepl_metadata_store_is_loaded (store));
        g_return_if_fail (store->priv->xml_file != NULL);
 
+       store->priv->is_loading = TRUE;
+
        task = g_task_new (store, cancellable, callback, user_data);
        g_task_set_priority (task, io_priority);
 
@@ -777,14 +781,24 @@ _tepl_metadata_store_load_finish (TeplMetadataStore  *store,
        g_return_val_if_fail (TEPL_IS_METADATA_STORE (store), FALSE);
        g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
        g_return_val_if_fail (g_task_is_valid (result, store), FALSE);
+       g_return_val_if_fail (_tepl_metadata_store_is_loading (store), FALSE);
        g_return_val_if_fail (!_tepl_metadata_store_is_loaded (store), FALSE);
 
+       store->priv->is_loading = FALSE;
        store->priv->is_loaded = TRUE;
        g_object_notify_by_pspec (G_OBJECT (store), properties[PROP_LOADED]);
 
        return g_task_propagate_boolean (G_TASK (result), error);
 }
 
+gboolean
+_tepl_metadata_store_is_loading (TeplMetadataStore *store)
+{
+       g_return_val_if_fail (TEPL_IS_METADATA_STORE (store), FALSE);
+
+       return store->priv->is_loading;
+}
+
 /*
  * _tepl_metadata_store_is_loaded:
  * @store: the #TeplMetadataStore.
diff --git a/tepl/tepl-metadata-store.h b/tepl/tepl-metadata-store.h
index 44145bc..e8d5521 100644
--- a/tepl/tepl-metadata-store.h
+++ b/tepl/tepl-metadata-store.h
@@ -85,6 +85,9 @@ gboolean              _tepl_metadata_store_load_finish                (TeplMetadataStore  
*store,
                                                                         GAsyncResult       *result,
                                                                         GError            **error);
 
+G_GNUC_INTERNAL
+gboolean               _tepl_metadata_store_is_loading                 (TeplMetadataStore *store);
+
 G_GNUC_INTERNAL
 gboolean               _tepl_metadata_store_is_loaded                  (TeplMetadataStore *store);
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]