[gnome-software] Make search cancelling quicker
- From: Kalev Lember <klember src gnome org>
- To: commits-list gnome org
- Cc: 
- Subject: [gnome-software] Make search cancelling quicker
- Date: Sun,  5 Oct 2014 15:52:09 +0000 (UTC)
commit ed48662f293947ab7d206d7bd59abc9c64bb4ad1
Author: Kalev Lember <kalevlember gmail com>
Date:   Sun Oct 5 16:36:29 2014 +0200
    Make search cancelling quicker
    
    Sprinkle g_cancellable_set_error_if_cancelled() checks in search loops
    to exit earlier if the search gets cancelled.
    
    This should make find-as-you-type search more responsive.
 src/plugins/gs-plugin-appstream.c |    9 ++++++++-
 src/plugins/gs-plugin-epiphany.c  |    3 +++
 2 files changed, 11 insertions(+), 1 deletions(-)
---
diff --git a/src/plugins/gs-plugin-appstream.c b/src/plugins/gs-plugin-appstream.c
index bc37efb..71ad8ea 100644
--- a/src/plugins/gs-plugin-appstream.c
+++ b/src/plugins/gs-plugin-appstream.c
@@ -944,6 +944,7 @@ gs_plugin_add_search_item (GsPlugin *plugin,
                           GList **list,
                           AsApp *app,
                           gchar **values,
+                          GCancellable *cancellable,
                           GError **error)
 {
        AsApp *item;
@@ -971,6 +972,9 @@ gs_plugin_add_search_item (GsPlugin *plugin,
 
        /* add the thing that we extend, not the addon itself */
        for (i = 0; i < extends->len; i++) {
+               if (g_cancellable_set_error_if_cancelled (cancellable, error))
+                       goto out;
+
                id = g_ptr_array_index (extends, i);
                item = as_store_get_app_by_id (plugin->priv->store, id);
                if (item == NULL)
@@ -1014,8 +1018,11 @@ gs_plugin_add_search (GsPlugin *plugin,
        gs_profile_start (plugin->profile, "appstream::search");
        array = as_store_get_apps (plugin->priv->store);
        for (i = 0; i < array->len; i++) {
+               if (g_cancellable_set_error_if_cancelled (cancellable, error))
+                       goto out;
+
                item = g_ptr_array_index (array, i);
-               ret = gs_plugin_add_search_item (plugin, list, item, values, error);
+               ret = gs_plugin_add_search_item (plugin, list, item, values, cancellable, error);
                if (!ret)
                        goto out;
        }
diff --git a/src/plugins/gs-plugin-epiphany.c b/src/plugins/gs-plugin-epiphany.c
index 353cfda..31f7295 100644
--- a/src/plugins/gs-plugin-epiphany.c
+++ b/src/plugins/gs-plugin-epiphany.c
@@ -297,6 +297,9 @@ gs_plugin_add_search (GsPlugin *plugin,
 
        /* add any matching apps */
        for (l = plugin->priv->list; l != NULL; l = l->next) {
+               if (g_cancellable_set_error_if_cancelled (cancellable, error))
+                       goto out;
+
                app = GS_APP (l->data);
                if (gs_plugin_epiphany_match_app (app, values))
                        gs_plugin_add_app (list, app);
[
Date Prev][
Date Next]   [
Thread Prev][
Thread Next]   
[
Thread Index]
[
Date Index]
[
Author Index]