diff options
author | Marek Kasik <mkasik@redhat.com> | 2014-04-04 15:45:01 +0200 |
---|---|---|
committer | Marek Kasik <mkasik@redhat.com> | 2014-04-04 15:57:01 +0200 |
commit | c5419557ec86b40d4d7300352e01ee83d445a902 (patch) | |
tree | bb6ccdbda75e00dc78504dcfed3f2a515e1f9fd8 /service | |
parent | 3aab9aaf052cc12106ecaa4d21101bf89ee35646 (diff) | |
download | dconf-c5419557ec86b40d4d7300352e01ee83d445a902.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
Diffstat (limited to 'service')
-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 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; } |