[gnome-software] Only refine with PackageKit when the action will be required
- From: Richard Hughes <rhughes src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-software] Only refine with PackageKit when the action will be required
- Date: Mon, 21 Oct 2013 13:43:39 +0000 (UTC)
commit 19a8a696df60fa9b933088c3317e3ab184d1df2f
Author: Richard Hughes <richard hughsie com>
Date: Mon Oct 21 14:21:18 2013 +0100
Only refine with PackageKit when the action will be required
This reduces the cost of a default refine down to less than 10ms.
src/gs-plugin.h | 1 +
src/gs-shell-details.c | 3 ++-
src/gs-shell-installed.c | 1 +
src/gs-shell-search.c | 1 +
src/plugins/gs-plugin-packagekit-refine.c | 4 +++-
5 files changed, 8 insertions(+), 2 deletions(-)
---
diff --git a/src/gs-plugin.h b/src/gs-plugin.h
index 7cf8242..cd35904 100644
--- a/src/gs-plugin.h
+++ b/src/gs-plugin.h
@@ -85,6 +85,7 @@ typedef enum {
GS_PLUGIN_REFINE_FLAGS_REQUIRE_RATING = 1 << 5,
GS_PLUGIN_REFINE_FLAGS_REQUIRE_VERSION = 1 << 6,
GS_PLUGIN_REFINE_FLAGS_REQUIRE_HISTORY = 1 << 7,
+ GS_PLUGIN_REFINE_FLAGS_REQUIRE_SETUP_ACTION = 1 << 8,
GS_PLUGIN_REFINE_FLAGS_LAST
} GsPluginRefineFlags;
diff --git a/src/gs-shell-details.c b/src/gs-shell-details.c
index f4f1593..9d4e557 100644
--- a/src/gs-shell-details.c
+++ b/src/gs-shell-details.c
@@ -597,7 +597,8 @@ gs_shell_details_set_app (GsShellDetails *shell_details, GsApp *app)
GS_PLUGIN_REFINE_FLAGS_REQUIRE_SIZE |
GS_PLUGIN_REFINE_FLAGS_REQUIRE_RATING |
GS_PLUGIN_REFINE_FLAGS_REQUIRE_VERSION |
- GS_PLUGIN_REFINE_FLAGS_REQUIRE_HISTORY|
+ GS_PLUGIN_REFINE_FLAGS_REQUIRE_HISTORY |
+ GS_PLUGIN_REFINE_FLAGS_REQUIRE_SETUP_ACTION |
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 c26e535..7816fd4 100644
--- a/src/gs-shell-installed.c
+++ b/src/gs-shell-installed.c
@@ -323,6 +323,7 @@ gs_shell_installed_refresh (GsShellInstalled *shell_installed, gboolean scroll_u
gs_plugin_loader_get_installed_async (priv->plugin_loader,
GS_PLUGIN_REFINE_FLAGS_DEFAULT |
GS_PLUGIN_REFINE_FLAGS_REQUIRE_HISTORY |
+ GS_PLUGIN_REFINE_FLAGS_REQUIRE_SETUP_ACTION |
GS_PLUGIN_REFINE_FLAGS_REQUIRE_VERSION,
priv->cancellable,
gs_shell_installed_get_installed_cb,
diff --git a/src/gs-shell-search.c b/src/gs-shell-search.c
index 7c5846b..a7b9d8b 100644
--- a/src/gs-shell-search.c
+++ b/src/gs-shell-search.c
@@ -324,6 +324,7 @@ gs_shell_search_refresh (GsShellSearch *shell_search, const gchar *value, gboole
GS_PLUGIN_REFINE_FLAGS_DEFAULT |
GS_PLUGIN_REFINE_FLAGS_REQUIRE_VERSION |
GS_PLUGIN_REFINE_FLAGS_REQUIRE_HISTORY |
+ GS_PLUGIN_REFINE_FLAGS_REQUIRE_SETUP_ACTION |
GS_PLUGIN_REFINE_FLAGS_REQUIRE_RATING,
priv->cancellable,
gs_shell_search_get_search_cb,
diff --git a/src/plugins/gs-plugin-packagekit-refine.c b/src/plugins/gs-plugin-packagekit-refine.c
index 297fbf9..49b9ad7 100644
--- a/src/plugins/gs-plugin-packagekit-refine.c
+++ b/src/plugins/gs-plugin-packagekit-refine.c
@@ -599,9 +599,11 @@ gs_plugin_refine (GsPlugin *plugin,
}
gs_profile_stop_full (plugin->profile, "packagekit-refine[name->id]");
- /* add any missing ratings data */
+ /* set the package-id for an installed desktop file */
gs_profile_start_full (plugin->profile, "packagekit-refine[desktop-filename->id]");
for (l = list; l != NULL; l = l->next) {
+ if ((flags & GS_PLUGIN_REFINE_FLAGS_REQUIRE_SETUP_ACTION) == 0)
+ continue;
app = GS_APP (l->data);
if (gs_app_get_metadata_item (app, "PackageKit::package-id") != NULL)
continue;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]