[tepl] FileMetadata: disallow some operations during saving
- From: Sébastien Wilmet <swilmet src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [tepl] FileMetadata: disallow some operations during saving
- Date: Sat, 18 Apr 2020 17:16:49 +0000 (UTC)
commit fa4a52052f8fc384408b42d3f9953c85602467a8
Author: Sébastien Wilmet <swilmet gnome org>
Date: Thu Apr 9 17:50:44 2020 +0200
FileMetadata: disallow some operations during saving
tepl/tepl-file-metadata.c | 15 +++++++++++++++
1 file changed, 15 insertions(+)
---
diff --git a/tepl/tepl-file-metadata.c b/tepl/tepl-file-metadata.c
index 3e200c1..9965d08 100644
--- a/tepl/tepl-file-metadata.c
+++ b/tepl/tepl-file-metadata.c
@@ -73,6 +73,8 @@ struct _TeplFileMetadataPrivate
*/
GFileInfo *file_info_modified;
+ guint is_saving : 1;
+
#if 0
guint use_gvfs_metadata : 1;
#endif
@@ -225,6 +227,7 @@ tepl_file_metadata_set (TeplFileMetadata *metadata,
g_return_if_fail (value == NULL || g_utf8_validate (value, -1, NULL));
priv = tepl_file_metadata_get_instance_private (metadata);
+ g_return_if_fail (!priv->is_saving);
if (priv->file_info_modified == NULL)
{
@@ -340,12 +343,16 @@ tepl_file_metadata_load_async (TeplFileMetadata *metadata,
GAsyncReadyCallback callback,
gpointer user_data)
{
+ TeplFileMetadataPrivate *priv;
GTask *task;
g_return_if_fail (TEPL_IS_FILE_METADATA (metadata));
g_return_if_fail (G_IS_FILE (location));
g_return_if_fail (cancellable == NULL || G_IS_CANCELLABLE (cancellable));
+ priv = tepl_file_metadata_get_instance_private (metadata);
+ g_return_if_fail (!priv->is_saving);
+
task = g_task_new (metadata, cancellable, callback, user_data);
g_task_set_priority (task, io_priority);
@@ -453,6 +460,9 @@ tepl_file_metadata_save_async (TeplFileMetadata *metadata,
g_return_if_fail (cancellable == NULL || G_IS_CANCELLABLE (cancellable));
priv = tepl_file_metadata_get_instance_private (metadata);
+ g_return_if_fail (!priv->is_saving);
+
+ priv->is_saving = TRUE;
task = g_task_new (metadata, cancellable, callback, user_data);
g_task_set_priority (task, io_priority);
@@ -493,10 +503,15 @@ tepl_file_metadata_save_finish (TeplFileMetadata *metadata,
GAsyncResult *result,
GError **error)
{
+ TeplFileMetadataPrivate *priv;
+
g_return_val_if_fail (TEPL_IS_FILE_METADATA (metadata), FALSE);
g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
g_return_val_if_fail (g_task_is_valid (result, metadata), FALSE);
+ priv = tepl_file_metadata_get_instance_private (metadata);
+ priv->is_saving = FALSE;
+
return g_task_propagate_boolean (G_TASK (result), error);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]