[gnome-software] Disconnect from GsApp notify::state in a few more places



commit 76114a2b616262c1b19f4658d572dc2c113ae766
Author: Kalev Lember <kalevlember gmail com>
Date:   Fri Sep 12 11:47:07 2014 +0200

    Disconnect from GsApp notify::state in a few more places

 src/gs-app-addon-row.c |    3 +++
 src/gs-app-row.c       |    3 +++
 src/gs-popular-tile.c  |    6 ++++++
 3 files changed, 12 insertions(+), 0 deletions(-)
---
diff --git a/src/gs-app-addon-row.c b/src/gs-app-addon-row.c
index 81ad708..23cd511 100644
--- a/src/gs-app-addon-row.c
+++ b/src/gs-app-addon-row.c
@@ -181,6 +181,9 @@ gs_app_addon_row_destroy (GtkWidget *object)
        GsAppAddonRow *row = GS_APP_ADDON_ROW (object);
        GsAppAddonRowPrivate *priv = row->priv;
 
+       if (priv->app)
+               g_signal_handlers_disconnect_by_func (priv->app, gs_app_addon_row_notify_props_changed_cb, 
row);
+
        g_clear_object (&priv->app);
 
        GTK_WIDGET_CLASS (gs_app_addon_row_parent_class)->destroy (object);
diff --git a/src/gs-app-row.c b/src/gs-app-row.c
index 12f1dbe..195f514 100644
--- a/src/gs-app-row.c
+++ b/src/gs-app-row.c
@@ -350,6 +350,9 @@ gs_app_row_destroy (GtkWidget *object)
        GsAppRow *app_row = GS_APP_ROW (object);
        GsAppRowPrivate *priv = app_row->priv;
 
+       if (priv->app)
+               g_signal_handlers_disconnect_by_func (priv->app, gs_app_row_notify_props_changed_cb, app_row);
+
        g_clear_object (&priv->app);
        if (priv->pending_refresh_id != 0) {
                g_source_remove (priv->pending_refresh_id);
diff --git a/src/gs-popular-tile.c b/src/gs-popular-tile.c
index bbabb02..8f4768e 100644
--- a/src/gs-popular-tile.c
+++ b/src/gs-popular-tile.c
@@ -111,6 +111,9 @@ gs_popular_tile_set_app (GsPopularTile *tile, GsApp *app)
 
        priv = gs_popular_tile_get_instance_private (tile);
 
+       if (priv->app)
+               g_signal_handlers_disconnect_by_func (priv->app, app_state_changed, tile);
+
        g_clear_object (&priv->app);
        if (!app)
                return;
@@ -144,6 +147,9 @@ gs_popular_tile_destroy (GtkWidget *widget)
 
        priv = gs_popular_tile_get_instance_private (tile);
 
+       if (priv->app)
+               g_signal_handlers_disconnect_by_func (priv->app, app_state_changed, tile);
+
        g_clear_object (&priv->app);
 
        GTK_WIDGET_CLASS (gs_popular_tile_parent_class)->destroy (widget);


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