[gnome-builder] context: reap old buffers before restoring
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder] context: reap old buffers before restoring
- Date: Thu, 25 Jan 2018 02:48:36 +0000 (UTC)
commit 6b59c8b312fb1343c31a967578581a7c59ceb1b0
Author: Christian Hergert <chergert redhat com>
Date: Wed Jan 24 18:47:23 2018 -0800
context: reap old buffers before restoring
When combined with the previous commit, we explicitly force reaping of
old buffers instead of relying on the initialization to (incorrectly)
do so.
src/libide/ide-context.c | 40 +++++++++++++++++++++++++++++++++++++++-
1 file changed, 39 insertions(+), 1 deletion(-)
---
diff --git a/src/libide/ide-context.c b/src/libide/ide-context.c
index eca239db0..fdddd796e 100644
--- a/src/libide/ide-context.c
+++ b/src/libide/ide-context.c
@@ -1125,6 +1125,42 @@ ide_context_init_runtimes (gpointer source_object,
g_task_return_boolean (task, TRUE);
}
+static void
+ide_context_reap_unsaved_files_cb (GObject *object,
+ GAsyncResult *result,
+ gpointer user_data)
+{
+ IdeUnsavedFiles *unsaved_files = (IdeUnsavedFiles *)object;
+ g_autoptr(GTask) task = user_data;
+ g_autoptr(GError) error = NULL;
+
+ g_assert (IDE_IS_UNSAVED_FILES (unsaved_files));
+
+ if (!ide_unsaved_files_reap_finish (unsaved_files, result, &error))
+ g_task_return_error (task, g_steal_pointer (&error));
+ else
+ g_task_return_boolean (task, TRUE);
+}
+
+static void
+ide_context_reap_unsaved_files (gpointer source_object,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ IdeContext *self = source_object;
+ g_autoptr(GTask) task = NULL;
+
+ g_return_if_fail (IDE_IS_CONTEXT (self));
+
+ task = g_task_new (self, cancellable, callback, user_data);
+ g_task_set_source_tag (task, ide_context_reap_unsaved_files);
+ ide_unsaved_files_reap_async (self->unsaved_files,
+ cancellable,
+ ide_context_reap_unsaved_files_cb,
+ g_steal_pointer (&task));
+}
+
static void
ide_context_init_unsaved_files_cb (GObject *object,
GAsyncResult *result,
@@ -1154,10 +1190,11 @@ ide_context_init_unsaved_files (gpointer source_object,
g_return_if_fail (IDE_IS_CONTEXT (self));
task = g_task_new (self, cancellable, callback, user_data);
+ g_task_set_source_tag (task, ide_context_init_unsaved_files);
ide_unsaved_files_restore_async (self->unsaved_files,
cancellable,
ide_context_init_unsaved_files_cb,
- g_object_ref (task));
+ g_steal_pointer (&task));
}
static void
@@ -1750,6 +1787,7 @@ ide_context_init_async (GAsyncInitable *initable,
ide_context_init_services,
ide_context_init_project_name,
ide_context_init_snippets,
+ ide_context_reap_unsaved_files,
ide_context_init_unsaved_files,
ide_context_init_add_recent,
ide_context_init_search_engine,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]