secret-backend: Add a way to uncache singleton instance

This is ugly, but necessary to handle instance uncaching in
SecretBackend when the backend instance is gone.
This commit is contained in:
Daiki Ueno 2019-07-01 17:29:10 +02:00 committed by Daiki Ueno
parent 71a19a95ae
commit b37d2b8d20
3 changed files with 18 additions and 0 deletions

View File

@ -122,6 +122,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)
{

View File

@ -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,

View File

@ -191,6 +191,8 @@ service_uncache_instance (SecretService *which)
if (watch != 0)
g_bus_unwatch_name (watch);
_secret_backend_uncache_instance ();
return matched;
}