diff options
author | Ray Strode <rstrode@redhat.com> | 2023-02-20 14:57:57 -0500 |
---|---|---|
committer | Ray Strode <rstrode@redhat.com> | 2023-02-22 15:02:19 -0500 |
commit | 3fbd0b9982ea70a5a914e480271a67376668a20d (patch) | |
tree | 4ec52623006626fffd6100ffb6a5ad8de8f1a76f | |
parent | 7a09a948a6435af00783c0e44582333600a792b3 (diff) | |
download | gnome-online-accounts-3fbd0b9982ea70a5a914e480271a67376668a20d.tar.gz |
goakerberosidentitymanager: Ensure identity-expired signal is emitted from main loop thread
Right now most of the the identity manager signals get emitted from the
main thread. This makes sense, and is what a caller would typically
expect (given they connect their callbacks in the main thread as well).
The one exception is "identity-expired" which gets emitted from the
worker thread. This commit fixes that.
-rw-r--r-- | src/goaidentity/goakerberosidentitymanager.c | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/src/goaidentity/goakerberosidentitymanager.c b/src/goaidentity/goakerberosidentitymanager.c index f2d0157..e6bcd29 100644 --- a/src/goaidentity/goakerberosidentitymanager.c +++ b/src/goaidentity/goakerberosidentitymanager.c @@ -282,11 +282,28 @@ identity_signal_work_free (IdentitySignalWork *work) } static void +do_identity_signal_expired_work (IdentitySignalWork *work) +{ + GoaKerberosIdentityManager *self = work->manager; + GoaIdentity *identity = work->identity; + + g_debug ("GoaKerberosIdentityManager: identity expired"); + _goa_identity_manager_emit_identity_expired (GOA_IDENTITY_MANAGER (self), identity); +} + +static void on_identity_expired (GoaIdentity *identity, GoaKerberosIdentityManager *self) { - _goa_identity_manager_emit_identity_expired (GOA_IDENTITY_MANAGER (self), - identity); + IdentitySignalWork *work; + + work = identity_signal_work_new (self, identity); + goa_kerberos_identify_manager_send_to_context (g_main_context_default (), + (GSourceFunc) + do_identity_signal_expired_work, + work, + (GDestroyNotify) + identity_signal_work_free); } static void |