[gnome-software] Only refine with PackageKit when the state or version number is unknown and required
- From: Richard Hughes <rhughes src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-software] Only refine with PackageKit when the state or version number is unknown and required
- Date: Mon, 21 Oct 2013 13:43:18 +0000 (UTC)
commit 7ac9f493da98c103941ea1dd2773fa9ea3326be8
Author: Richard Hughes <richard hughsie com>
Date: Mon Oct 21 13:24:11 2013 +0100
Only refine with PackageKit when the state or version number is unknown and required
src/gs-plugin.h | 1 +
src/gs-shell-details.c | 1 +
src/gs-shell-installed.c | 3 +-
src/gs-shell-search.c | 1 +
src/gs-shell-updates.c | 4 ++-
src/plugins/gs-plugin-packagekit-refine.c | 35 +++++++++++++++++++++-------
6 files changed, 34 insertions(+), 11 deletions(-)
---
diff --git a/src/gs-plugin.h b/src/gs-plugin.h
index 4794b65..4c1906a 100644
--- a/src/gs-plugin.h
+++ b/src/gs-plugin.h
@@ -83,6 +83,7 @@ typedef enum {
GS_PLUGIN_REFINE_FLAGS_REQUIRE_DESCRIPTION = 1 << 3,
GS_PLUGIN_REFINE_FLAGS_REQUIRE_SIZE = 1 << 4,
GS_PLUGIN_REFINE_FLAGS_REQUIRE_RATING = 1 << 5,
+ GS_PLUGIN_REFINE_FLAGS_REQUIRE_VERSION = 1 << 6,
GS_PLUGIN_REFINE_FLAGS_LAST
} GsPluginRefineFlags;
diff --git a/src/gs-shell-details.c b/src/gs-shell-details.c
index 9ad128d..a3df389 100644
--- a/src/gs-shell-details.c
+++ b/src/gs-shell-details.c
@@ -596,6 +596,7 @@ gs_shell_details_set_app (GsShellDetails *shell_details, GsApp *app)
GS_PLUGIN_REFINE_FLAGS_REQUIRE_LICENCE |
GS_PLUGIN_REFINE_FLAGS_REQUIRE_SIZE |
GS_PLUGIN_REFINE_FLAGS_REQUIRE_RATING |
+ GS_PLUGIN_REFINE_FLAGS_REQUIRE_VERSION |
GS_PLUGIN_REFINE_FLAGS_REQUIRE_URL,
priv->cancellable,
gs_shell_details_app_refine_cb,
diff --git a/src/gs-shell-installed.c b/src/gs-shell-installed.c
index 3169440..2cb4de7 100644
--- a/src/gs-shell-installed.c
+++ b/src/gs-shell-installed.c
@@ -321,7 +321,8 @@ gs_shell_installed_refresh (GsShellInstalled *shell_installed, gboolean scroll_u
/* get popular apps */
gs_plugin_loader_get_installed_async (priv->plugin_loader,
- GS_PLUGIN_REFINE_FLAGS_DEFAULT,
+ GS_PLUGIN_REFINE_FLAGS_DEFAULT |
+ GS_PLUGIN_REFINE_FLAGS_REQUIRE_VERSION,
priv->cancellable,
gs_shell_installed_get_installed_cb,
shell_installed);
diff --git a/src/gs-shell-search.c b/src/gs-shell-search.c
index f37a9f2..072a5e5 100644
--- a/src/gs-shell-search.c
+++ b/src/gs-shell-search.c
@@ -322,6 +322,7 @@ gs_shell_search_refresh (GsShellSearch *shell_search, const gchar *value, gboole
gs_plugin_loader_search_async (priv->plugin_loader,
value,
GS_PLUGIN_REFINE_FLAGS_DEFAULT |
+ GS_PLUGIN_REFINE_FLAGS_REQUIRE_VERSION |
GS_PLUGIN_REFINE_FLAGS_REQUIRE_RATING,
priv->cancellable,
gs_shell_search_get_search_cb,
diff --git a/src/gs-shell-updates.c b/src/gs-shell-updates.c
index 8113fcd..8b360ff 100644
--- a/src/gs-shell-updates.c
+++ b/src/gs-shell-updates.c
@@ -194,7 +194,9 @@ gs_shell_updates_refresh (GsShellUpdates *shell_updates,
gs_container_remove_all (GTK_CONTAINER (priv->list_box_updates));
gs_plugin_loader_get_updates_async (priv->plugin_loader,
- show_historical ? GS_PLUGIN_REFINE_FLAGS_USE_HISTORY :
GS_PLUGIN_REFINE_FLAGS_DEFAULT,
+ GS_PLUGIN_REFINE_FLAGS_REQUIRE_VERSION |
+ show_historical ?
+ GS_PLUGIN_REFINE_FLAGS_USE_HISTORY :
GS_PLUGIN_REFINE_FLAGS_DEFAULT,
priv->cancellable,
(GAsyncReadyCallback) gs_shell_updates_get_updates_cb,
shell_updates);
diff --git a/src/plugins/gs-plugin-packagekit-refine.c b/src/plugins/gs-plugin-packagekit-refine.c
index ce986e1..297fbf9 100644
--- a/src/plugins/gs-plugin-packagekit-refine.c
+++ b/src/plugins/gs-plugin-packagekit-refine.c
@@ -108,10 +108,10 @@ gs_plugin_packagekit_progress_cb (PkProgress *progress,
}
static gboolean
-gs_plugin_packagekit_refine_packages (GsPlugin *plugin,
- GList *list,
- GCancellable *cancellable,
- GError **error)
+gs_plugin_packagekit_resolve_packages (GsPlugin *plugin,
+ GList *list,
+ GCancellable *cancellable,
+ GError **error)
{
const gchar *pkgname;
gboolean ret = TRUE;
@@ -544,6 +544,19 @@ out:
}
/**
+ * gs_plugin_refine_requires_version:
+ */
+static gboolean
+gs_plugin_refine_requires_version (GsApp *app, GsPluginRefineFlags flags)
+{
+ const gchar *tmp;
+ tmp = gs_app_get_version (app);
+ if (tmp != NULL)
+ return FALSE;
+ return (flags & GS_PLUGIN_REFINE_FLAGS_REQUIRE_VERSION) > 0;
+}
+
+/**
* gs_plugin_refine:
*/
gboolean
@@ -569,14 +582,18 @@ gs_plugin_refine (GsPlugin *plugin,
if (gs_app_get_id_kind (app) == GS_APP_ID_KIND_WEBAPP)
continue;
tmp = gs_app_get_source (app);
- if (tmp != NULL)
+ if (tmp == NULL)
+ continue;
+ if (gs_app_get_state (app) == GS_APP_STATE_UNKNOWN ||
+ gs_plugin_refine_requires_version (app, flags)) {
resolve_all = g_list_prepend (resolve_all, app);
+ }
}
if (resolve_all != NULL) {
- ret = gs_plugin_packagekit_refine_packages (plugin,
- resolve_all,
- cancellable,
- error);
+ ret = gs_plugin_packagekit_resolve_packages (plugin,
+ resolve_all,
+ cancellable,
+ error);
if (!ret)
goto out;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]