Commit fb169991 authored by Christian Hergert's avatar Christian Hergert
Browse files

build-pipeline: allow delayed initialization of pipeline

This allows us to create the object, and then delay the initialization
until later as needed by the build manager to locate the build runtime.
parent 8614c1b8
......@@ -184,6 +184,11 @@ struct _IdeBuildPipeline
*/
guint seqnum;
/*
* If GInitableIface.init has been called.
*/
guint initialized : 1;
/*
* If we failed to build, this should be set.
*/
......@@ -834,6 +839,8 @@ ide_build_pipeline_initable_init (GInitable *initable,
g_assert (IDE_IS_BUILD_PIPELINE (self));
g_assert (IDE_IS_CONFIGURATION (self->configuration));
self->initialized = TRUE;
g_signal_connect_object (self->configuration,
"notify::ready",
G_CALLBACK (ide_build_pipeline_notify_ready),
......@@ -845,6 +852,8 @@ ide_build_pipeline_initable_init (GInitable *initable,
else
g_message ("Configuration not ready, delaying pipeline setup");
ide_build_pipeline_queue_flush (self);
IDE_RETURN (TRUE);
}
......@@ -1262,6 +1271,12 @@ ide_build_pipeline_do_flush (gpointer data)
g_assert (IDE_IS_BUILD_PIPELINE (self));
/*
* If we have not yet initialized, there is nothing we can do.
*/
if (!self->initialized)
IDE_RETURN (G_SOURCE_REMOVE);
/*
* If the busy bit is set, there is nothing to do right now.
*/
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment