From c5419557ec86b40d4d7300352e01ee83d445a902 Mon Sep 17 00:00:00 2001 From: Marek Kasik Date: Fri, 4 Apr 2014 15:45:01 +0200 Subject: service: Don't hang during shutdown Remember whether a signal was signalled to dconf-service so we don't call g_application_release() more than once. https://bugzilla.gnome.org/show_bug.cgi?id=727549 --- service/dconf-service.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/service/dconf-service.c b/service/dconf-service.c index 8302bed..9127472 100644 --- a/service/dconf-service.c +++ b/service/dconf-service.c @@ -39,6 +39,8 @@ typedef struct DConfBlame *blame; GHashTable *writers; GArray *subtree_ids; + + gboolean released; } DConfService; G_DEFINE_TYPE (DConfService, dconf_service, G_TYPE_APPLICATION) @@ -48,7 +50,10 @@ dconf_service_signalled (gpointer user_data) { DConfService *service = user_data; - g_application_release (G_APPLICATION (service)); + if (!service->released) + g_application_release (G_APPLICATION (service)); + + service->released = TRUE; return G_SOURCE_REMOVE; } -- cgit v1.2.1