[gnome-software] Keep a GCancellable reference in the GsShell panels



commit d7543126c872766204cb86ec8b11d848c8bcd9ba
Author: Richard Hughes <richard hughsie com>
Date:   Fri Aug 23 09:47:35 2013 +0100

    Keep a GCancellable reference in the GsShell panels

 src/gs-shell-installed.c |   13 ++++++++-----
 src/gs-shell-installed.h |    6 +++---
 src/gs-shell-overview.c  |   14 +++++++++-----
 src/gs-shell-overview.h  |    6 +++---
 src/gs-shell-updates.c   |   12 +++++++-----
 src/gs-shell-updates.h   |    6 +++---
 src/gs-shell.c           |   15 +++++++++------
 7 files changed, 42 insertions(+), 30 deletions(-)
---
diff --git a/src/gs-shell-installed.c b/src/gs-shell-installed.c
index 61dfaf3..37cb24e 100644
--- a/src/gs-shell-installed.c
+++ b/src/gs-shell-installed.c
@@ -36,6 +36,7 @@ struct GsShellInstalledPrivate
 {
        GsPluginLoader          *plugin_loader;
        GtkBuilder              *builder;
+       GCancellable            *cancellable;
        GtkListBox              *list_box_installed;
        GtkSizeGroup            *sizegroup_image;
        GtkSizeGroup            *sizegroup_name;
@@ -216,7 +217,7 @@ gs_shell_installed_app_remove_cb (GsAppWidget *app_widget,
                helper->app_widget = g_object_ref (app_widget);
                gs_plugin_loader_app_remove (priv->plugin_loader,
                                             app,
-                                            NULL, /* cancellable */
+                                            priv->cancellable,
                                             gs_shell_installed_finished_func,
                                             helper);
        }
@@ -283,8 +284,7 @@ out: ;
  * gs_shell_installed_refresh:
  **/
 void
-gs_shell_installed_refresh (GsShellInstalled *shell_installed,
-                           GCancellable *cancellable)
+gs_shell_installed_refresh (GsShellInstalled *shell_installed)
 {
        GsShellInstalledPrivate *priv = shell_installed->priv;
         GtkWidget *widget;
@@ -307,7 +307,7 @@ gs_shell_installed_refresh (GsShellInstalled *shell_installed,
 
        /* get popular apps */
        gs_plugin_loader_get_installed_async (priv->plugin_loader,
-                                             cancellable,
+                                             priv->cancellable,
                                              gs_shell_installed_get_installed_cb,
                                              shell_installed);
        priv->waiting = TRUE;
@@ -454,7 +454,8 @@ gs_shell_installed_pending_apps_changed_cb (GsPluginLoader *plugin_loader,
 void
 gs_shell_installed_setup (GsShellInstalled *shell_installed,
                          GsPluginLoader *plugin_loader,
-                         GtkBuilder *builder)
+                         GtkBuilder *builder,
+                         GCancellable *cancellable)
 {
        GsShellInstalledPrivate *priv = shell_installed->priv;
        GtkWidget *widget;
@@ -467,6 +468,7 @@ gs_shell_installed_setup (GsShellInstalled *shell_installed,
                          shell_installed);
 
        priv->builder = g_object_ref (builder);
+       priv->cancellable = g_object_ref (cancellable);
 
        /* refilter on search box changing */
        widget = GTK_WIDGET (gtk_builder_get_object (priv->builder, "entry_search"));
@@ -530,6 +532,7 @@ gs_shell_installed_finalize (GObject *object)
 
        g_object_unref (priv->builder);
        g_object_unref (priv->plugin_loader);
+       g_object_unref (priv->cancellable);
 
        G_OBJECT_CLASS (gs_shell_installed_parent_class)->finalize (object);
 }
diff --git a/src/gs-shell-installed.h b/src/gs-shell-installed.h
index 9de429e..aefc50a 100644
--- a/src/gs-shell-installed.h
+++ b/src/gs-shell-installed.h
@@ -53,10 +53,10 @@ GType                gs_shell_installed_get_type    (void);
 
 GsShellInstalled *gs_shell_installed_new       (void);
 void            gs_shell_installed_invalidate  (GsShellInstalled       *shell_installed);
-void            gs_shell_installed_refresh     (GsShellInstalled       *shell_installed,
-                                                GCancellable           *cancellable);
+void            gs_shell_installed_refresh     (GsShellInstalled       *shell_installed);
 void            gs_shell_installed_setup       (GsShellInstalled       *shell_installed,
                                                 GsPluginLoader         *plugin_loader,
-                                                GtkBuilder             *builder);
+                                                GtkBuilder             *builder,
+                                                GCancellable           *cancellable);
 
 #endif /* __GS_SHELL_INSTALLED_H */
diff --git a/src/gs-shell-overview.c b/src/gs-shell-overview.c
index b2eea9c..33eac50 100644
--- a/src/gs-shell-overview.c
+++ b/src/gs-shell-overview.c
@@ -34,6 +34,7 @@ struct GsShellOverviewPrivate
 {
        GsPluginLoader          *plugin_loader;
        GtkBuilder              *builder;
+       GCancellable            *cancellable;
        gboolean                 cache_valid;
 };
 
@@ -419,7 +420,7 @@ out:
  * gs_shell_overview_refresh:
  **/
 void
-gs_shell_overview_refresh (GsShellOverview *shell_overview, GCancellable *cancellable)
+gs_shell_overview_refresh (GsShellOverview *shell_overview)
 {
        GsShellOverviewPrivate *priv = shell_overview->priv;
        /* FIXME get real categories */
@@ -451,13 +452,13 @@ gs_shell_overview_refresh (GsShellOverview *shell_overview, GCancellable *cancel
 
        /* get popular apps */
        gs_plugin_loader_get_popular_async (priv->plugin_loader,
-                                           cancellable,
+                                           priv->cancellable,
                                            gs_shell_overview_get_popular_cb,
                                            shell_overview);
 
        /* get featured apps */
        gs_plugin_loader_get_featured_async (priv->plugin_loader,
-                                            cancellable,
+                                            priv->cancellable,
                                             gs_shell_overview_get_featured_cb,
                                             shell_overview);
        priv->cache_valid = TRUE;
@@ -468,8 +469,9 @@ gs_shell_overview_refresh (GsShellOverview *shell_overview, GCancellable *cancel
  */
 void
 gs_shell_overview_setup (GsShellOverview *shell_overview,
-                   GsPluginLoader *plugin_loader,
-                   GtkBuilder *builder)
+                        GsPluginLoader *plugin_loader,
+                        GtkBuilder *builder,
+                        GCancellable *cancellable)
 {
        GsShellOverviewPrivate *priv = shell_overview->priv;
 
@@ -477,6 +479,7 @@ gs_shell_overview_setup (GsShellOverview *shell_overview,
 
        priv->plugin_loader = g_object_ref (plugin_loader);
        priv->builder = g_object_ref (builder);
+       priv->cancellable = g_object_ref (cancellable);
 }
 
 /**
@@ -518,6 +521,7 @@ gs_shell_overview_finalize (GObject *object)
 
        g_object_unref (priv->builder);
        g_object_unref (priv->plugin_loader);
+       g_object_unref (priv->cancellable);
 
        G_OBJECT_CLASS (gs_shell_overview_parent_class)->finalize (object);
 }
diff --git a/src/gs-shell-overview.h b/src/gs-shell-overview.h
index 37bf841..851ecae 100644
--- a/src/gs-shell-overview.h
+++ b/src/gs-shell-overview.h
@@ -57,11 +57,11 @@ GType                gs_shell_overview_get_type     (void);
 
 GsShellOverview        *gs_shell_overview_new          (void);
 void            gs_shell_overview_invalidate   (GsShellOverview        *shell_overview);
-void            gs_shell_overview_refresh      (GsShellOverview        *shell_overview,
-                                                GCancellable           *cancellable);
+void            gs_shell_overview_refresh      (GsShellOverview        *shell_overview);
 void            gs_shell_overview_setup        (GsShellOverview        *shell_overview,
                                                 GsPluginLoader         *plugin_loader,
-                                                GtkBuilder             *builder);
+                                                GtkBuilder             *builder,
+                                                GCancellable           *cancellable);
 void            gs_shell_overview_set_category (GsShellOverview        *shell_overview,
                                                 const gchar            *category);
 
diff --git a/src/gs-shell-updates.c b/src/gs-shell-updates.c
index 17d0475..3c06928 100644
--- a/src/gs-shell-updates.c
+++ b/src/gs-shell-updates.c
@@ -37,6 +37,7 @@ struct GsShellUpdatesPrivate
 {
        GsPluginLoader          *plugin_loader;
        GtkBuilder              *builder;
+       GCancellable            *cancellable;
        GtkListBox              *list_box_updates;
        gboolean                 cache_valid;
        gboolean                 waiting;
@@ -145,7 +146,7 @@ out:
  * gs_shell_updates_refresh:
  **/
 void
-gs_shell_updates_refresh (GsShellUpdates *shell_updates, GCancellable *cancellable)
+gs_shell_updates_refresh (GsShellUpdates *shell_updates)
 {
        GsShellUpdatesPrivate *priv = shell_updates->priv;
         GtkWidget *widget;
@@ -173,7 +174,7 @@ gs_shell_updates_refresh (GsShellUpdates *shell_updates, GCancellable *cancellab
        _gtk_container_remove_all (GTK_CONTAINER (priv->list_box_updates));
 
        gs_plugin_loader_get_updates_async (priv->plugin_loader,
-                                           cancellable,
+                                           priv->cancellable,
                                            (GAsyncReadyCallback) gs_shell_updates_get_updates_cb,
                                            shell_updates);
        priv->waiting = TRUE;
@@ -279,8 +280,6 @@ gs_shell_updates_unselect_treeview_cb (gpointer user_data)
 static void
 show_update_details (GsAppWidget *app_widget, GsShellUpdates *shell_updates)
 {
-
-
        GsApp *app = gs_app_widget_get_app (app_widget);
        GsApp *app_related;
        GsAppKind kind;
@@ -438,7 +437,8 @@ gs_shell_updates_button_update_all_cb (GtkButton      *button,
 void
 gs_shell_updates_setup (GsShellUpdates *shell_updates,
                        GsPluginLoader *plugin_loader,
-                       GtkBuilder *builder)
+                       GtkBuilder *builder,
+                       GCancellable *cancellable)
 {
        GsShellUpdatesPrivate *priv = shell_updates->priv;
        GtkCellRenderer *renderer;
@@ -453,6 +453,7 @@ gs_shell_updates_setup (GsShellUpdates *shell_updates,
                          G_CALLBACK (gs_shell_updates_pending_apps_changed_cb),
                          shell_updates);
        priv->builder = g_object_ref (builder);
+       priv->cancellable = g_object_ref (cancellable);
 
        /* setup updates */
        priv->list_box_updates = GTK_LIST_BOX (gtk_list_box_new ());
@@ -543,6 +544,7 @@ gs_shell_updates_finalize (GObject *object)
 
        g_object_unref (priv->builder);
        g_object_unref (priv->plugin_loader);
+       g_object_unref (priv->cancellable);
 
        G_OBJECT_CLASS (gs_shell_updates_parent_class)->finalize (object);
 }
diff --git a/src/gs-shell-updates.h b/src/gs-shell-updates.h
index 859976b..5cdf42f 100644
--- a/src/gs-shell-updates.h
+++ b/src/gs-shell-updates.h
@@ -53,10 +53,10 @@ GType                gs_shell_updates_get_type      (void);
 
 GsShellUpdates *gs_shell_updates_new           (void);
 void            gs_shell_updates_invalidate    (GsShellUpdates         *shell_updates);
-void            gs_shell_updates_refresh       (GsShellUpdates         *shell_updates,
-                                                GCancellable           *cancellable);
+void            gs_shell_updates_refresh       (GsShellUpdates         *shell_updates);
 void            gs_shell_updates_setup         (GsShellUpdates         *shell_updates,
                                                 GsPluginLoader         *plugin_loader,
-                                                GtkBuilder             *builder);
+                                                GtkBuilder             *builder,
+                                                GCancellable           *cancellable);
 
 #endif /* __GS_SHELL_UPDATES_H */
diff --git a/src/gs-shell.c b/src/gs-shell.c
index f37fb5d..e26eb14 100644
--- a/src/gs-shell.c
+++ b/src/gs-shell.c
@@ -202,13 +202,13 @@ gs_shell_set_overview_mode (GsShell *shell, GsShellMode mode, GsApp *app, const
        priv->mode = mode;
        switch (mode) {
        case GS_SHELL_MODE_OVERVIEW:
-               gs_shell_overview_refresh (priv->shell_overview, priv->cancellable);
+               gs_shell_overview_refresh (priv->shell_overview);
                break;
        case GS_SHELL_MODE_INSTALLED:
-               gs_shell_installed_refresh (priv->shell_installed, priv->cancellable);
+               gs_shell_installed_refresh (priv->shell_installed);
                break;
        case GS_SHELL_MODE_UPDATES:
-               gs_shell_updates_refresh (priv->shell_updates, priv->cancellable);
+               gs_shell_updates_refresh (priv->shell_updates);
                break;
        case GS_SHELL_MODE_DETAILS:
                tmp = gs_app_get_name (app);
@@ -394,13 +394,16 @@ gs_shell_setup (GsShell *shell, GsPluginLoader *plugin_loader, GCancellable *can
 
        gs_shell_updates_setup (priv->shell_updates,
                                priv->plugin_loader,
-                               priv->builder);
+                               priv->builder,
+                               priv->cancellable);
        gs_shell_installed_setup (priv->shell_installed,
                                  priv->plugin_loader,
-                                 priv->builder);
+                                 priv->builder,
+                                 priv->cancellable);
        gs_shell_overview_setup (priv->shell_overview,
                                 priv->plugin_loader,
-                                priv->builder);
+                                priv->builder,
+                                priv->cancellable);
        g_signal_connect (priv->shell_overview, "set-overview-mode",
                          G_CALLBACK (gs_shell_set_overview_mode_cb), shell);
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]