[gtksourceview/wip/loader-saver] FileSaver: can be used several times



commit 7f2c007d0d97692d3ffb2a0e5f79d15894045005
Author: Sébastien Wilmet <swilmet gnome org>
Date:   Wed Mar 26 15:59:14 2014 +0100

    FileSaver: can be used several times

 gtksourceview/gtksourcefilesaver.c |   13 ++++++++++++-
 1 files changed, 12 insertions(+), 1 deletions(-)
---
diff --git a/gtksourceview/gtksourcefilesaver.c b/gtksourceview/gtksourcefilesaver.c
index 498bfc5..5cd230c 100644
--- a/gtksourceview/gtksourcefilesaver.c
+++ b/gtksourceview/gtksourcefilesaver.c
@@ -135,6 +135,7 @@ gtk_source_file_saver_set_property (GObject      *object,
                        break;
 
                case PROP_ENCODING:
+                       g_return_if_fail (saver->priv->task == NULL);
                        saver->priv->encoding = g_value_get_boxed (value);
                        if (saver->priv->encoding == NULL)
                        {
@@ -144,18 +145,22 @@ gtk_source_file_saver_set_property (GObject      *object,
                        break;
 
                case PROP_NEWLINE_TYPE:
+                       g_return_if_fail (saver->priv->task == NULL);
                        saver->priv->newline_type = g_value_get_enum (value);
                        break;
 
                case PROP_COMPRESSION_TYPE:
+                       g_return_if_fail (saver->priv->task == NULL);
                        saver->priv->compression_type = g_value_get_enum (value);
                        break;
 
                case PROP_ENSURE_TRAILING_NEWLINE:
+                       g_return_if_fail (saver->priv->task == NULL);
                        saver->priv->ensure_trailing_newline = g_value_get_boolean (value);
                        break;
 
                case PROP_CREATE_BACKUP:
+                       g_return_if_fail (saver->priv->task == NULL);
                        saver->priv->create_backup = g_value_get_boolean (value);
                        break;
 
@@ -892,11 +897,17 @@ gtk_source_file_saver_save_finish (GtkSourceFileSaver  *saver,
                                   GAsyncResult        *result,
                                   GError             **error)
 {
+       gboolean ok;
+
        g_return_val_if_fail (GTK_SOURCE_IS_FILE_SAVER (saver), FALSE);
        g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
        g_return_val_if_fail (g_task_is_valid (result, saver), FALSE);
 
-       return g_task_propagate_boolean (G_TASK (result), error);
+       ok = g_task_propagate_boolean (G_TASK (result), error);
+
+       g_clear_object (&saver->priv->task);
+
+       return ok;
 }
 
 /**


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