[gnome-builder] flatpak: Only get the list of flatpak installations once
- From: Matthew Leeds <mwleeds src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder] flatpak: Only get the list of flatpak installations once
- Date: Sun, 23 Apr 2017 20:50:56 +0000 (UTC)
commit 35bbe5da3b6dfc690879c7feead4d926ee3e9e2b
Author: Matthew Leeds <mleeds redhat com>
Date: Sun Apr 23 12:45:41 2017 -0500
flatpak: Only get the list of flatpak installations once
Rather than looking for flatpak installations in both
GbpFlatpakApplicationAddin and GbpFlatpakPreferencesAddin, access the
former list from the latter to reduce duplication of effort. This also
means the preferences pane will show runtimes from multiple system
installations if they exist.
plugins/flatpak/gbp-flatpak-application-addin.c | 27 +++++++++++++++++++++++
plugins/flatpak/gbp-flatpak-application-addin.h | 1 +
plugins/flatpak/gbp-flatpak-preferences-addin.c | 22 +++++++-----------
3 files changed, 37 insertions(+), 13 deletions(-)
---
diff --git a/plugins/flatpak/gbp-flatpak-application-addin.c b/plugins/flatpak/gbp-flatpak-application-addin.c
index a684171..c8a554a 100644
--- a/plugins/flatpak/gbp-flatpak-application-addin.c
+++ b/plugins/flatpak/gbp-flatpak-application-addin.c
@@ -366,6 +366,33 @@ gbp_flatpak_application_addin_get_runtimes (GbpFlatpakApplicationAddin *self)
IDE_RETURN (ret);
}
+/**
+ * gbp_flatpak_application_addin_get_installations:
+ *
+ * Gets an array of flatpak installations on the system.
+ *
+ * Returns: (transfer container) (element-type Flatpak.Installation): Array of installations
+ */
+GPtrArray *
+gbp_flatpak_application_addin_get_installations (GbpFlatpakApplicationAddin *self)
+{
+ GPtrArray *ret;
+
+ IDE_ENTRY;
+
+ g_assert (GBP_IS_FLATPAK_APPLICATION_ADDIN (self));
+
+ ret = g_ptr_array_new_with_free_func (g_object_unref);
+
+ for (guint i = 0; i < self->installations->len; i++)
+ {
+ InstallInfo *info = g_ptr_array_index (self->installations, i);
+ g_ptr_array_add (ret, g_object_ref (info->installation));
+ }
+
+ IDE_RETURN (ret);
+}
+
GbpFlatpakApplicationAddin *
gbp_flatpak_application_addin_get_default (void)
{
diff --git a/plugins/flatpak/gbp-flatpak-application-addin.h b/plugins/flatpak/gbp-flatpak-application-addin.h
index d429945..bfc682e 100644
--- a/plugins/flatpak/gbp-flatpak-application-addin.h
+++ b/plugins/flatpak/gbp-flatpak-application-addin.h
@@ -30,6 +30,7 @@ G_DECLARE_FINAL_TYPE (GbpFlatpakApplicationAddin, gbp_flatpak_application_addin,
GbpFlatpakApplicationAddin *gbp_flatpak_application_addin_get_default (void);
GPtrArray *gbp_flatpak_application_addin_get_runtimes (GbpFlatpakApplicationAddin
*self);
+GPtrArray *gbp_flatpak_application_addin_get_installations (GbpFlatpakApplicationAddin
*self);
gboolean gbp_flatpak_application_addin_has_runtime (GbpFlatpakApplicationAddin
*self,
const gchar
*id,
const gchar
*arch,
diff --git a/plugins/flatpak/gbp-flatpak-preferences-addin.c b/plugins/flatpak/gbp-flatpak-preferences-addin.c
index dd74053..1473c61 100644
--- a/plugins/flatpak/gbp-flatpak-preferences-addin.c
+++ b/plugins/flatpak/gbp-flatpak-preferences-addin.c
@@ -197,11 +197,9 @@ gbp_flatpak_preferences_addin_reload_worker (GTask *task,
GCancellable *cancellable)
{
GbpFlatpakPreferencesAddin *self = (GbpFlatpakPreferencesAddin *)source_object;
- g_autoptr(FlatpakInstallation) system = NULL;
- g_autoptr(FlatpakInstallation) user = NULL;
- g_autoptr(GFile) file = NULL;
+ g_autoptr(GPtrArray) installations = NULL;
g_autoptr(GPtrArray) runtimes = NULL;
- g_autofree gchar *path = NULL;
+ GbpFlatpakApplicationAddin *app_addin;
IDE_ENTRY;
@@ -210,15 +208,13 @@ gbp_flatpak_preferences_addin_reload_worker (GTask *task,
runtimes = g_ptr_array_new_with_free_func (g_object_unref);
- path = g_build_filename (g_get_home_dir (), ".local", "share", "flatpak", NULL);
- file = g_file_new_for_path (path);
- user = flatpak_installation_new_for_path (file, TRUE, NULL, NULL);
- if (user != NULL)
- populate_runtimes (self, user, runtimes);
-
- system = flatpak_installation_new_system (NULL, NULL);
- if (system != NULL)
- populate_runtimes (self, system, runtimes);
+ app_addin = gbp_flatpak_application_addin_get_default ();
+ installations = gbp_flatpak_application_addin_get_installations (app_addin);
+ for (guint i = 0; i < installations->len; i++)
+ {
+ FlatpakInstallation *installation = g_ptr_array_index (installations, i);
+ populate_runtimes (self, installation, runtimes);
+ }
g_ptr_array_sort (runtimes, compare_refs);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]