diff options
author | Marek Kasik <mkasik@redhat.com> | 2014-04-04 15:45:01 +0200 |
---|---|---|
committer | Marek Kasik <mkasik@redhat.com> | 2014-04-04 16:21:37 +0200 |
commit | 504094e271ff412c39896574a345d90d8129c458 (patch) | |
tree | f0db957db9e6bdef27b912e664b8772a7c356c15 | |
parent | 9de5938f2cf80e895a95b4987e9dce33bd4fa412 (diff) | |
download | dconf-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.c | 7 |
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; } |