[gnome-builder] flatpak: disconnect reload handler during unload
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder] flatpak: disconnect reload handler during unload
- Date: Sun, 20 Aug 2017 20:01:32 +0000 (UTC)
commit 4e92ef1619b9523735c5252a79fc3ec31ece8a44
Author: Christian Hergert <chergert redhat com>
Date: Sun Aug 20 13:01:22 2017 -0700
flatpak: disconnect reload handler during unload
We do not want to risk having this fire while we have been unloaded but
before we've been disposed.
plugins/flatpak/gbp-flatpak-preferences-addin.c | 21 +++++++++++++++------
1 files changed, 15 insertions(+), 6 deletions(-)
---
diff --git a/plugins/flatpak/gbp-flatpak-preferences-addin.c b/plugins/flatpak/gbp-flatpak-preferences-addin.c
index 30ff1f2..2ea3686 100644
--- a/plugins/flatpak/gbp-flatpak-preferences-addin.c
+++ b/plugins/flatpak/gbp-flatpak-preferences-addin.c
@@ -35,6 +35,8 @@ struct _GbpFlatpakPreferencesAddin
DzlPreferences *preferences;
GCancellable *cancellable;
+ gulong reload_handler;
+
guint show_all : 1;
};
@@ -369,7 +371,8 @@ app_addin_reload (GbpFlatpakPreferencesAddin *self,
g_assert (GBP_IS_FLATPAK_PREFERENCES_ADDIN (self));
g_assert (GBP_IS_FLATPAK_APPLICATION_ADDIN (app_addin));
- gbp_flatpak_preferences_addin_reload (self);
+ if (self->preferences != NULL)
+ gbp_flatpak_preferences_addin_reload (self);
}
static void
@@ -390,11 +393,13 @@ gbp_flatpak_preferences_addin_load (IdePreferencesAddin *addin,
dzl_preferences_add_list_group (preferences, "sdk", "flatpak-runtimes", _("Flatpak Runtimes"),
GTK_SELECTION_NONE, 0);
app_addin = gbp_flatpak_application_addin_get_default ();
- g_signal_connect_object (app_addin,
- "reload",
- G_CALLBACK (app_addin_reload),
- self,
- G_CONNECT_SWAPPED);
+
+ self->reload_handler =
+ g_signal_connect_object (app_addin,
+ "reload",
+ G_CALLBACK (app_addin_reload),
+ self,
+ G_CONNECT_SWAPPED);
gbp_flatpak_preferences_addin_reload (self);
@@ -406,12 +411,16 @@ gbp_flatpak_preferences_addin_unload (IdePreferencesAddin *addin,
DzlPreferences *preferences)
{
GbpFlatpakPreferencesAddin *self = (GbpFlatpakPreferencesAddin *)addin;
+ GbpFlatpakApplicationAddin *app_addin;
IDE_ENTRY;
g_assert (GBP_IS_FLATPAK_PREFERENCES_ADDIN (self));
g_assert (DZL_IS_PREFERENCES (preferences));
+ app_addin = gbp_flatpak_application_addin_get_default ();
+ ide_clear_signal_handler (app_addin, &self->reload_handler);
+
g_cancellable_cancel (self->cancellable);
g_clear_object (&self->cancellable);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]