static void ide_omni_bar__build_manager__build_started (IdeOmniBar *self, IdeBuildPipeline *build_pipeline, IdeBuildManager *build_manager) { g_assert (IDE_IS_OMNI_BAR (self)); g_assert (IDE_IS_BUILD_PIPELINE (build_pipeline)); g_assert (IDE_IS_BUILD_MANAGER (build_manager)); self->did_build = TRUE; self->seen_count = 0; self->message_handler = g_signal_connect_object (build_pipeline, "notify::message", G_CALLBACK (ide_omni_bar_notify_message), self, G_CONNECT_SWAPPED); gtk_revealer_set_reveal_child (self->popover_details_revealer, TRUE); gtk_label_set_label (self->popover_build_result_label, _("Building")); gtk_label_set_attributes (self->popover_build_result_label, NULL); dzl_gtk_widget_remove_style_class (GTK_WIDGET (self->popover_build_result_label), "error"); dzl_gtk_widget_remove_style_class (GTK_WIDGET (self->popover_build_result_label), "success"); dzl_gtk_widget_add_style_class (GTK_WIDGET (self), "building"); }
static void ide_omni_bar__build_manager__build_finished (IdeOmniBar *self, IdeBuildPipeline *build_pipeline, IdeBuildManager *build_manager) { g_assert (IDE_IS_OMNI_BAR (self)); g_assert (IDE_IS_BUILD_PIPELINE (build_pipeline)); g_assert (IDE_IS_BUILD_MANAGER (build_manager)); gtk_label_set_label (self->popover_build_message, NULL); dzl_clear_signal_handler (build_pipeline, &self->message_handler); gtk_label_set_label (self->popover_build_result_label, _("Success")); dzl_gtk_widget_add_style_class (GTK_WIDGET (self->popover_build_result_label), "success"); dzl_gtk_widget_remove_style_class (GTK_WIDGET (self), "building"); }
static void gbp_flatpak_dependency_updater_update_cb (GObject *object, GAsyncResult *result, gpointer user_data) { IdeBuildManager *manager = (IdeBuildManager *)object; g_autoptr(GTask) task = user_data; g_autoptr(GError) error = NULL; g_assert (IDE_IS_BUILD_MANAGER (manager)); g_assert (G_IS_ASYNC_RESULT (result)); g_assert (G_IS_TASK (task)); if (!ide_build_manager_rebuild_finish (manager, result, &error)) g_task_return_error (task, g_steal_pointer (&error)); else g_task_return_boolean (task, TRUE); }
static void ide_run_manager_install_cb (GObject *object, GAsyncResult *result, gpointer user_data) { IdeBuildManager *build_manager = (IdeBuildManager *)object; g_autoptr(GTask) task = user_data; IdeRunManager *self; IdeBuildTarget *build_target; GCancellable *cancellable; GError *error = NULL; IDE_ENTRY; g_assert (IDE_IS_BUILD_MANAGER (build_manager)); g_assert (G_IS_TASK (task)); if (!ide_build_manager_build_finish (build_manager, result, &error)) { g_task_return_error (task, error); IDE_EXIT; } self = g_task_get_source_object (task); g_assert (IDE_IS_RUN_MANAGER (self)); build_target = ide_run_manager_get_build_target (self); if (build_target == NULL) { cancellable = g_task_get_cancellable (task); g_assert (!cancellable || G_IS_CANCELLABLE (cancellable)); ide_run_manager_discover_default_target_async (self, cancellable, ide_run_manager_run_discover_cb, g_steal_pointer (&task)); IDE_EXIT; } g_task_set_task_data (task, g_object_ref (build_target), g_object_unref); do_run_async (self, g_steal_pointer (&task)); }
static void gbp_flatpak_dependency_updater_update_async (IdeDependencyUpdater *updater, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { GbpFlatpakDependencyUpdater *self = (GbpFlatpakDependencyUpdater *)updater; GbpFlatpakDownloadStage *stage = NULL; g_autoptr(GTask) task = NULL; IdeBuildPipeline *pipeline; IdeBuildManager *manager; IdeContext *context; g_assert (GBP_IS_FLATPAK_DEPENDENCY_UPDATER (self)); g_assert (!cancellable || G_IS_CANCELLABLE (cancellable)); task = g_task_new (self, cancellable, callback, user_data); g_task_set_source_tag (task, gbp_flatpak_dependency_updater_update_async); g_task_set_priority (task, G_PRIORITY_LOW); context = ide_object_get_context (IDE_OBJECT (self)); g_assert (IDE_IS_CONTEXT (context)); manager = ide_context_get_build_manager (context); g_assert (IDE_IS_BUILD_MANAGER (manager)); pipeline = ide_build_manager_get_pipeline (manager); g_assert (!pipeline || IDE_IS_BUILD_PIPELINE (pipeline)); if (pipeline == NULL) { g_task_return_new_error (task, G_IO_ERROR, G_IO_ERROR_FAILED, "Cannot update flatpak dependencies until build pipeline is initialized"); return; } /* Find the downloads stage and tell it to download updates one time */ ide_build_pipeline_foreach_stage (pipeline, find_download_stage_cb, &stage); if (stage == NULL) { /* Synthesize success if they weren't using flatpak. */ g_task_return_boolean (task, TRUE); return; } gbp_flatpak_download_stage_force_update (stage); /* Ensure downloads and everything past it is invalidated */ ide_build_pipeline_invalidate_phase (pipeline, IDE_BUILD_PHASE_DOWNLOADS); /* Start building all the way up to the project configure so that * the user knows if the updates broke their configuration or anything. */ ide_build_manager_rebuild_async (manager, IDE_BUILD_PHASE_CONFIGURE, NULL, gbp_flatpak_dependency_updater_update_cb, g_steal_pointer (&task)); }