68 lines
2.5 KiB
Diff
68 lines
2.5 KiB
Diff
From 7840cb97902c952c34831cc63dcba00ececabd0c Mon Sep 17 00:00:00 2001
|
|
From: Stef Walter <stefw@gnome.org>
|
|
Date: Fri, 16 Oct 2015 22:46:07 +0200
|
|
Subject: [PATCH] dbus: Fix object path regression from GDBus port
|
|
|
|
Previously objects were only explicitly exported on the bus when
|
|
they were ready. However now due to GDBus handler connections
|
|
they are exported earlier.
|
|
|
|
Make sure to export a prompt object before something is exported
|
|
at the same object path to take its place.
|
|
|
|
https://bugzilla.gnome.org/show_bug.cgi?id=756032
|
|
---
|
|
daemon/dbus/gkd-secret-create.c | 1 +
|
|
daemon/dbus/gkd-secret-prompt.c | 10 ++++++++++
|
|
daemon/dbus/gkd-secret-prompt.h | 3 +++
|
|
3 files changed, 14 insertions(+)
|
|
|
|
diff --git a/daemon/dbus/gkd-secret-create.c b/daemon/dbus/gkd-secret-create.c
|
|
index 0f2b573..cd5587b 100644
|
|
--- a/daemon/dbus/gkd-secret-create.c
|
|
+++ b/daemon/dbus/gkd-secret-create.c
|
|
@@ -176,6 +176,7 @@ unlock_or_complete_this_prompt (GkdSecretCreate *self)
|
|
|
|
g_object_ref (self);
|
|
prompt = GKD_SECRET_PROMPT (self);
|
|
+ gkd_secret_prompt_unexport (prompt);
|
|
|
|
unlock = gkd_secret_unlock_new (gkd_secret_prompt_get_service (prompt),
|
|
gkd_secret_prompt_get_caller (prompt),
|
|
diff --git a/daemon/dbus/gkd-secret-prompt.c b/daemon/dbus/gkd-secret-prompt.c
|
|
index 207cc8a..f0a6d63 100644
|
|
--- a/daemon/dbus/gkd-secret-prompt.c
|
|
+++ b/daemon/dbus/gkd-secret-prompt.c
|
|
@@ -202,6 +202,16 @@ gkd_secret_prompt_constructed (GObject *obj)
|
|
G_CALLBACK (prompt_method_prompt), self);
|
|
}
|
|
|
|
+void
|
|
+gkd_secret_prompt_unexport (GkdSecretPrompt *self)
|
|
+{
|
|
+ g_return_if_fail (self->pv->skeleton != NULL);
|
|
+ g_dbus_interface_skeleton_unexport (G_DBUS_INTERFACE_SKELETON (self->pv->skeleton));
|
|
+ g_signal_handlers_disconnect_by_func (self->pv->skeleton, prompt_method_dismiss, self);
|
|
+ g_signal_handlers_disconnect_by_func (self->pv->skeleton, prompt_method_prompt, self);
|
|
+ g_clear_object (&self->pv->skeleton);
|
|
+}
|
|
+
|
|
static void
|
|
gkd_secret_prompt_init (GkdSecretPrompt *self)
|
|
{
|
|
diff --git a/daemon/dbus/gkd-secret-prompt.h b/daemon/dbus/gkd-secret-prompt.h
|
|
index 0b52ea0..a133f25 100644
|
|
--- a/daemon/dbus/gkd-secret-prompt.h
|
|
+++ b/daemon/dbus/gkd-secret-prompt.h
|
|
@@ -77,4 +77,7 @@ void gkd_secret_prompt_dismiss (GkdSecretPrompt *
|
|
void gkd_secret_prompt_dismiss_with_error (GkdSecretPrompt *self,
|
|
GError *error);
|
|
|
|
+/* Used by derived classes */
|
|
+void gkd_secret_prompt_unexport (GkdSecretPrompt *self);
|
|
+
|
|
#endif /* __GKD_SECRET_PROMPT_H__ */
|
|
--
|
|
2.5.0
|
|
|