[gnome-builder] build-panel: call perform save-all before executing build commands
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder] build-panel: call perform save-all before executing build commands
- Date: Mon, 21 Dec 2015 23:22:51 +0000 (UTC)
commit d27a639e709dd9fec35dd6a2a22f22bb66b0f709
Author: Christian Hergert <christian hergert me>
Date: Mon Dec 21 15:22:40 2015 -0800
build-panel: call perform save-all before executing build commands
plugins/build-tools/gbp-build-workbench-addin.c | 54 +++++++++++++++++++---
1 files changed, 46 insertions(+), 8 deletions(-)
---
diff --git a/plugins/build-tools/gbp-build-workbench-addin.c b/plugins/build-tools/gbp-build-workbench-addin.c
index cbca0bb..6cafeea 100644
--- a/plugins/build-tools/gbp-build-workbench-addin.c
+++ b/plugins/build-tools/gbp-build-workbench-addin.c
@@ -107,15 +107,52 @@ gbp_build_workbench_addin_build_cb (GObject *object,
}
static void
+gbp_build_workbench_addin_save_all_cb (GObject *object,
+ GAsyncResult *result,
+ gpointer user_data)
+{
+ IdeBufferManager *bufmgr = (IdeBufferManager *)object;
+ g_autoptr(IdeBuildResult) build_result = NULL;
+ struct {
+ GbpBuildWorkbenchAddin *self;
+ IdeBuilder *builder;
+ IdeBuilderBuildFlags flags;
+ } *state = user_data;
+
+ g_assert (IDE_IS_BUFFER_MANAGER (bufmgr));
+ g_assert (G_IS_ASYNC_RESULT (result));
+ g_assert (GBP_IS_BUILD_WORKBENCH_ADDIN (state->self));
+
+ ide_buffer_manager_save_all_finish (bufmgr, result, NULL);
+
+ ide_builder_build_async (state->builder,
+ state->flags,
+ &build_result,
+ state->self->cancellable,
+ gbp_build_workbench_addin_build_cb,
+ g_object_ref (state->self));
+
+ gbp_build_workbench_addin_set_result (state->self, build_result);
+
+ g_object_unref (state->self);
+ g_object_unref (state->builder);
+ g_slice_free1 (sizeof *state, state);
+}
+
+static void
gbp_build_workbench_addin_do_build (GbpBuildWorkbenchAddin *self,
IdeBuilderBuildFlags flags)
{
- g_autoptr(IdeBuildResult) build_result = NULL;
g_autoptr(IdeBuilder) builder = NULL;
g_autoptr(GError) error = NULL;
IdeBuildSystem *build_system;
IdeWorkbench *workbench;
IdeContext *context;
+ struct {
+ GbpBuildWorkbenchAddin *self;
+ IdeBuilder *builder;
+ IdeBuilderBuildFlags flags;
+ } *state;
g_assert (GBP_IS_BUILD_WORKBENCH_ADDIN (self));
@@ -135,14 +172,15 @@ gbp_build_workbench_addin_do_build (GbpBuildWorkbenchAddin *self,
g_clear_object (&self->cancellable);
self->cancellable = g_cancellable_new ();
- ide_builder_build_async (builder,
- flags,
- &build_result,
- self->cancellable,
- gbp_build_workbench_addin_build_cb,
- g_object_ref (self));
+ state = g_slice_alloc0 (sizeof *state);
+ state->self = g_object_ref (self);
+ state->builder = g_object_ref (builder);
+ state->flags = flags;
- gbp_build_workbench_addin_set_result (self, build_result);
+ ide_buffer_manager_save_all_async (ide_context_get_buffer_manager (context),
+ self->cancellable,
+ gbp_build_workbench_addin_save_all_cb,
+ state);
}
static void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]