[libsecret/wip/dueno/backend: 4/5] secret-backend: Add a way to uncache singleton instance
- From: Daiki Ueno <dueno src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [libsecret/wip/dueno/backend: 4/5] secret-backend: Add a way to uncache singleton instance
- Date: Mon, 1 Jul 2019 16:32:17 +0000 (UTC)
commit 71f0acb89ac369d1a4f2248433ada9a0ec418058
Author: Daiki Ueno <dueno src gnome org>
Date: Mon Jul 1 17:29:10 2019 +0200
secret-backend: Add a way to uncache singleton instance
This is ugly, but necessary to handle disconnect in SecretService.
libsecret/secret-backend.c | 14 ++++++++++++++
libsecret/secret-backend.h | 2 ++
libsecret/secret-service.c | 2 ++
3 files changed, 18 insertions(+)
---
diff --git a/libsecret/secret-backend.c b/libsecret/secret-backend.c
index 71d2bad..b0b0dce 100644
--- a/libsecret/secret-backend.c
+++ b/libsecret/secret-backend.c
@@ -112,6 +112,20 @@ backend_get_instance (void)
return instance;
}
+void
+_secret_backend_uncache_instance (void)
+{
+ SecretBackend *instance = NULL;
+
+ G_LOCK (backend_instance);
+ instance = backend_instance;
+ backend_instance = NULL;
+ G_UNLOCK (backend_instance);
+
+ if (instance != NULL)
+ g_object_unref (instance);
+}
+
static GType
backend_get_impl_type (void)
{
diff --git a/libsecret/secret-backend.h b/libsecret/secret-backend.h
index 7dae506..3dadffa 100644
--- a/libsecret/secret-backend.h
+++ b/libsecret/secret-backend.h
@@ -97,6 +97,8 @@ struct _SecretBackendInterface
void _secret_backend_ensure_extension_point
(void);
+void _secret_backend_uncache_instance
+ (void);
void secret_backend_get (SecretBackendFlags flags,
GCancellable *cancellable,
diff --git a/libsecret/secret-service.c b/libsecret/secret-service.c
index 490991a..a41fdf0 100644
--- a/libsecret/secret-service.c
+++ b/libsecret/secret-service.c
@@ -183,6 +183,8 @@ service_uncache_instance (SecretService *which)
watch = service_watch;
service_watch = 0;
matched = TRUE;
+ if (instance != NULL)
+ _secret_backend_uncache_instance ();
}
G_UNLOCK (service_instance);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]