[gnome-builder/wip/chergert/pipeline-merge] flatpak: reload runtimes when performing runtime installation
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder/wip/chergert/pipeline-merge] flatpak: reload runtimes when performing runtime installation
- Date: Sat, 11 Feb 2017 07:03:48 +0000 (UTC)
commit 08fd5cf448e6126e9493bb242c64f50cd0c249fb
Author: Christian Hergert <chergert redhat com>
Date: Fri Feb 10 23:03:29 2017 -0800
flatpak: reload runtimes when performing runtime installation
plugins/flatpak/gbp-flatpak-runtime-provider.c | 45 ++++++++++++++++++-----
plugins/flatpak/gbp-flatpak-runtime-provider.h | 2 +
2 files changed, 37 insertions(+), 10 deletions(-)
---
diff --git a/plugins/flatpak/gbp-flatpak-runtime-provider.c b/plugins/flatpak/gbp-flatpak-runtime-provider.c
index a98ab52..e65eca6 100644
--- a/plugins/flatpak/gbp-flatpak-runtime-provider.c
+++ b/plugins/flatpak/gbp-flatpak-runtime-provider.c
@@ -189,6 +189,24 @@ gbp_flatpak_runtime_provider_load_refs (GbpFlatpakRuntimeProvider *self,
return TRUE;
}
+void
+gbp_flatpak_runtime_provider_reload (GbpFlatpakRuntimeProvider *self)
+{
+ IdeRuntimeManager *manager;
+
+ IDE_ENTRY;
+
+ g_assert (GBP_IS_FLATPAK_RUNTIME_PROVIDER (self));
+
+ /* Save a pointer to manager before unload() wipes it out */
+ manager = self->manager;
+
+ gbp_flatpak_runtime_provider_unload (IDE_RUNTIME_PROVIDER (self), manager);
+ gbp_flatpak_runtime_provider_load (IDE_RUNTIME_PROVIDER (self), manager);
+
+ IDE_EXIT;
+}
+
static void
on_flatpak_installation_changed (GbpFlatpakRuntimeProvider *self,
GFile *file,
@@ -196,19 +214,13 @@ on_flatpak_installation_changed (GbpFlatpakRuntimeProvider *self,
GFileMonitorEvent event_type,
GFileMonitor *monitor)
{
- IdeRuntimeManager *manager;
-
IDE_ENTRY;
g_assert (GBP_IS_FLATPAK_RUNTIME_PROVIDER (self));
g_assert (!file || G_IS_FILE (file));
g_assert (!other_file || G_IS_FILE (other_file));
- /* Save a pointer to manager before unload() wipes it out */
- manager = self->manager;
-
- gbp_flatpak_runtime_provider_unload (IDE_RUNTIME_PROVIDER (self), manager);
- gbp_flatpak_runtime_provider_load (IDE_RUNTIME_PROVIDER (self), manager);
+ gbp_flatpak_runtime_provider_reload (self);
IDE_EXIT;
}
@@ -422,6 +434,7 @@ gbp_flatpak_runtime_provider_install_cb (GObject *object,
gpointer user_data)
{
IdeTransferManager *transfer_manager = (IdeTransferManager *)object;
+ GbpFlatpakRuntimeProvider *self;
g_autoptr(GTask) task = user_data;
g_autoptr(GError) error = NULL;
@@ -430,10 +443,22 @@ gbp_flatpak_runtime_provider_install_cb (GObject *object,
g_assert (IDE_IS_TRANSFER_MANAGER (transfer_manager));
g_assert (G_IS_ASYNC_RESULT (result));
+ self = g_task_get_source_object (task);
+
+ g_assert (GBP_IS_FLATPAK_RUNTIME_PROVIDER (self));
+
if (!ide_transfer_manager_execute_finish (transfer_manager, result, &error))
- g_task_return_error (task, g_steal_pointer (&error));
- else
- g_task_return_boolean (task, TRUE);
+ {
+ g_task_return_error (task, g_steal_pointer (&error));
+ IDE_EXIT;
+ }
+
+ /*
+ * TODO: This needs to be done with an async pair so we know when it has completed.
+ */
+ gbp_flatpak_runtime_provider_reload (self);
+
+ g_task_return_boolean (task, TRUE);
IDE_EXIT;
}
diff --git a/plugins/flatpak/gbp-flatpak-runtime-provider.h b/plugins/flatpak/gbp-flatpak-runtime-provider.h
index 6adef34..4712dfc 100644
--- a/plugins/flatpak/gbp-flatpak-runtime-provider.h
+++ b/plugins/flatpak/gbp-flatpak-runtime-provider.h
@@ -27,6 +27,8 @@ G_BEGIN_DECLS
G_DECLARE_FINAL_TYPE (GbpFlatpakRuntimeProvider, gbp_flatpak_runtime_provider, GBP,
FLATPAK_RUNTIME_PROVIDER, GObject)
+void gbp_flatpak_runtime_provider_reload (GbpFlatpakRuntimeProvider *self);
+
G_END_DECLS
#endif /* GBP_FLATPAK_RUNTIME_PROVIDER_H */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]