[gnome-keyring/wip/cosimoc/gdbus-fixes: 3/11] dbus: only emit 'Completed' signal to original caller



commit 4c4ab1149b0f71baaf88ff80e0a5d21fe253e9ab
Author: Cosimo Cecchi <cosimoc gnome org>
Date:   Fri Aug 28 22:02:33 2015 -0700

    dbus: only emit 'Completed' signal to original caller
    
    Matches the pre-GDBus behavior.

 daemon/dbus/gkd-secret-prompt.c |    9 +++++++--
 daemon/dbus/gkd-secret-unlock.c |   12 +++++++++---
 2 files changed, 16 insertions(+), 5 deletions(-)
---
diff --git a/daemon/dbus/gkd-secret-prompt.c b/daemon/dbus/gkd-secret-prompt.c
index 65ee413..207cc8a 100644
--- a/daemon/dbus/gkd-secret-prompt.c
+++ b/daemon/dbus/gkd-secret-prompt.c
@@ -72,8 +72,13 @@ emit_completed (GkdSecretPrompt *self, gboolean dismissed)
        g_return_if_fail (GKD_SECRET_PROMPT_GET_CLASS (self)->encode_result);
        variant = GKD_SECRET_PROMPT_GET_CLASS (self)->encode_result (self);
 
-       gkd_exported_prompt_emit_completed (self->pv->skeleton,
-                                           dismissed, variant);
+       /* Emit signal manually, so that we can set the caller as destination */
+       g_dbus_connection_emit_signal (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON 
(self->pv->skeleton)),
+                                      self->pv->caller,
+                                      g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON 
(self->pv->skeleton)),
+                                      "org.freedesktop.Secret.Prompt", "Completed",
+                                      g_variant_new ("(b v)", dismissed, variant),
+                                      NULL);
 }
 
 static void
diff --git a/daemon/dbus/gkd-secret-unlock.c b/daemon/dbus/gkd-secret-unlock.c
index 02f8cff..a1a551f 100644
--- a/daemon/dbus/gkd-secret-unlock.c
+++ b/daemon/dbus/gkd-secret-unlock.c
@@ -149,6 +149,7 @@ mark_as_complete (GkdSecretUnlock *self, gboolean dismissed)
        const char *value;
        gint i;
        GVariantBuilder builder;
+       GVariant *variant;
 
        if (self->completed)
                return FALSE;
@@ -160,9 +161,14 @@ mark_as_complete (GkdSecretUnlock *self, gboolean dismissed)
                g_variant_builder_add (&builder, "o", value);
        }
 
-       gkd_exported_prompt_emit_completed (self->skeleton,
-                                           dismissed,
-                                           g_variant_new_variant (g_variant_builder_end (&builder)));
+       /* Emit signal manually, so that we can set the caller as destination */
+       variant = g_variant_new_variant (g_variant_builder_end (&builder));
+       g_dbus_connection_emit_signal (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON 
(self->skeleton)),
+                                      self->caller,
+                                      g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON 
(self->skeleton)),
+                                      "org.freedesktop.Secret.Prompt", "Completed",
+                                      g_variant_new ("(b v)", dismissed, variant),
+                                      NULL);
 
        /* Fire off the next item in the unlock prompt queue */
        other = g_queue_pop_head (&unlock_prompt_queue);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]