[gnome-builder] libide: unregister auto-save on save buffer



commit dd11bc662e9e5eda19ea0bfe7ed3e9c19534a0fd
Author: Gennady Kovalev <gik bigur ru>
Date:   Sun Apr 2 23:45:59 2017 +0300

    libide: unregister auto-save on save buffer
    
    Unregister auto-save timer on save file by user.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=780847

 libide/buffers/ide-buffer-manager.c |   23 +++++++++++++++--------
 1 files changed, 15 insertions(+), 8 deletions(-)
---
diff --git a/libide/buffers/ide-buffer-manager.c b/libide/buffers/ide-buffer-manager.c
index 2341319..c1aa9c9 100644
--- a/libide/buffers/ide-buffer-manager.c
+++ b/libide/buffers/ide-buffer-manager.c
@@ -335,6 +335,7 @@ static gboolean
 ide_buffer_manager_auto_save_cb (gpointer data)
 {
   AutoSave *state = data;
+  gboolean saved = FALSE;
 
   g_assert (state);
   g_assert (IDE_IS_BUFFER_MANAGER (state->self));
@@ -346,16 +347,20 @@ ide_buffer_manager_auto_save_cb (gpointer data)
       IdeFile *file = ide_buffer_get_file (state->buffer);
 
       if (file != NULL)
-        ide_buffer_manager_save_file_async (state->self,
-                                            state->buffer,
-                                            file,
-                                            NULL,
-                                            NULL,
-                                            NULL,
-                                            NULL);
+        {
+          ide_buffer_manager_save_file_async (state->self,
+                                              state->buffer,
+                                              file,
+                                              NULL,
+                                              NULL,
+                                              NULL,
+                                              NULL);
+          saved = TRUE;
+        }
     }
 
-  unregister_auto_save (state->self, state->buffer);
+  if (!saved)
+    unregister_auto_save (state->self, state->buffer);
 
   return G_SOURCE_REMOVE;
 }
@@ -1150,6 +1155,8 @@ ide_buffer_manager_save_file_async (IdeBufferManager     *self,
                                 cancellable,
                                 ide_buffer_manager_save_file__load_settings_cb,
                                 g_object_ref (task));
+
+  unregister_auto_save (self, state->buffer);
 }
 
 /**


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