summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarek Kasik <mkasik@redhat.com>2014-04-04 15:45:01 +0200
committerMarek Kasik <mkasik@redhat.com>2014-04-04 16:21:37 +0200
commit504094e271ff412c39896574a345d90d8129c458 (patch)
treef0db957db9e6bdef27b912e664b8772a7c356c15
parent9de5938f2cf80e895a95b4987e9dce33bd4fa412 (diff)
downloaddconf-504094e271ff412c39896574a345d90d8129c458.tar.gz
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
-rw-r--r--service/dconf-service.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/service/dconf-service.c b/service/dconf-service.c
index 9c9c88a..1ce8235 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;
}