[gnome-software] flatpak: Use new API to get the AppStream download progress
- From: Richard Hughes <rhughes src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-software] flatpak: Use new API to get the AppStream download progress
- Date: Mon, 22 May 2017 13:23:03 +0000 (UTC)
commit bdf95ba4f403efb6cc190db156197461826614d0
Author: Richard Hughes <richard hughsie com>
Date: Mon May 22 14:13:11 2017 +0100
flatpak: Use new API to get the AppStream download progress
plugins/flatpak/gs-flatpak.c | 46 ++++++++++++++++++++++++++++-------------
1 files changed, 31 insertions(+), 15 deletions(-)
---
diff --git a/plugins/flatpak/gs-flatpak.c b/plugins/flatpak/gs-flatpak.c
index a47862f..41201a5 100644
--- a/plugins/flatpak/gs-flatpak.c
+++ b/plugins/flatpak/gs-flatpak.c
@@ -447,6 +447,18 @@ gs_flatpak_setup (GsFlatpak *self, GCancellable *cancellable, GError **error)
return TRUE;
}
+static void
+gs_flatpak_progress_cb (const gchar *status,
+ guint progress,
+ gboolean estimating,
+ gpointer user_data)
+{
+ GsApp *app = GS_APP (user_data);
+ if (app == NULL)
+ return;
+ gs_app_set_progress (app, progress);
+}
+
static gboolean
gs_flatpak_refresh_appstream_remote (GsFlatpak *self,
const gchar *remote_name,
@@ -466,9 +478,21 @@ gs_flatpak_refresh_appstream_remote (GsFlatpak *self,
/* TRANSLATORS: status text when downloading new metadata */
str = g_strdup_printf (_("Getting flatpak metadata for %s…"), remote_name);
gs_app_set_summary_missing (app_dl, str);
- gs_app_set_progress (app_dl, 0); // FIXME
- gs_plugin_status_update (self->plugin, app_dl,
- GS_PLUGIN_STATUS_DOWNLOADING);
+ gs_plugin_status_update (self->plugin, app_dl, GS_PLUGIN_STATUS_DOWNLOADING);
+#if FLATPAK_CHECK_VERSION(0,9,4)
+ if (!flatpak_installation_update_appstream_full_sync (self->installation,
+ remote_name,
+ NULL, /* arch */
+ gs_flatpak_progress_cb,
+ app_dl,
+ NULL, /* out_changed */
+ cancellable,
+ error)) {
+ gs_plugin_flatpak_error_convert (error);
+ return FALSE;
+ }
+#else
+ gs_app_set_progress (app_dl, 0);
if (!flatpak_installation_update_appstream_sync (self->installation,
remote_name,
NULL,
@@ -478,6 +502,10 @@ gs_flatpak_refresh_appstream_remote (GsFlatpak *self,
gs_plugin_flatpak_error_convert (error);
return FALSE;
}
+#endif
+
+ /* success */
+ gs_app_set_progress (app_dl, 100);
return TRUE;
}
@@ -1123,18 +1151,6 @@ gs_flatpak_add_updates_pending (GsFlatpak *self, GsAppList *list,
return TRUE;
}
-static void
-gs_flatpak_progress_cb (const gchar *status,
- guint progress,
- gboolean estimating,
- gpointer user_data)
-{
- GsApp *app = GS_APP (user_data);
- if (app == NULL)
- return;
- gs_app_set_progress (app, progress);
-}
-
gboolean
gs_flatpak_refresh (GsFlatpak *self,
guint cache_age,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]