[gnome-builder] code-index: avoid indexing on un-prepared pipelines



commit 3e15ee9ee40541d86982e024c6edc266667d759e
Author: Christian Hergert <chergert redhat com>
Date:   Thu Mar 14 10:13:49 2019 -0700

    code-index: avoid indexing on un-prepared pipelines
    
    If the current build pipeline has not configured, or we don't
    have a project, refuse to begin indexing the project.
    
    This fixes a warning about builddir from the pipeline when it
    races to be setup. Also, it reduced the chances we do indexing
    immediately at startup for un-prepared build systems.

 src/plugins/code-index/gbp-code-index-service.c | 17 +++++++++++++----
 1 file changed, 13 insertions(+), 4 deletions(-)
---
diff --git a/src/plugins/code-index/gbp-code-index-service.c b/src/plugins/code-index/gbp-code-index-service.c
index f419325c7..6cb14f3f1 100644
--- a/src/plugins/code-index/gbp-code-index-service.c
+++ b/src/plugins/code-index/gbp-code-index-service.c
@@ -238,6 +238,9 @@ static gboolean
 gbp_code_index_service_queue_index_cb (gpointer user_data)
 {
   GbpCodeIndexService *self = user_data;
+  g_autoptr(IdeContext) context = NULL;
+  IdeBuildManager *build_manager;
+  IdePipeline *pipeline;
 
   IDE_ENTRY;
 
@@ -250,10 +253,16 @@ gbp_code_index_service_queue_index_cb (gpointer user_data)
   g_clear_object (&self->cancellable);
   self->cancellable = g_cancellable_new ();
 
-  gbp_code_index_service_index_async (self,
-                                      self->cancellable,
-                                      gbp_code_index_service_index_cb,
-                                      NULL);
+  if (!ide_object_in_destruction (IDE_OBJECT (self)) &&
+      (context = ide_object_ref_context (IDE_OBJECT (self))) &&
+      ide_context_has_project (context) &&
+      (build_manager = ide_build_manager_from_context (context)) &&
+      (pipeline = ide_build_manager_get_pipeline (build_manager)) &&
+      ide_pipeline_has_configured (pipeline))
+    gbp_code_index_service_index_async (self,
+                                        self->cancellable,
+                                        gbp_code_index_service_index_cb,
+                                        NULL);
 
   IDE_RETURN (G_SOURCE_REMOVE);
 }


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