diff options
author | Ray Strode <rstrode@redhat.com> | 2008-03-09 21:22:50 +0000 |
---|---|---|
committer | Ray Strode <halfline@src.gnome.org> | 2008-03-09 21:22:50 +0000 |
commit | 46717caa337a69c4f8225d1dd17294f322fc0a55 (patch) | |
tree | d195793cb16a1c0cb3bcd5a165b4645ad316bc75 | |
parent | 6576fdd070b1081adea828b049ee9716e3f63a1e (diff) | |
download | gdm-46717caa337a69c4f8225d1dd17294f322fc0a55.tar.gz |
STRING,INT):
2008-03-09 Ray Strode <rstrode@redhat.com>
* common/gdm-marshal.list (VOID:STRING,INT):
* daemon/gdm-greeter-server.c:
(send_dbus_string_and_int_signal):
* gui/simple-greeter/gdm-greeter-client.c
(emit_string_and_int_signal_for_message),
(send_dbus_bool_method),
(send_dbus_bool_method):
Add some helper functions that will be useful later
svn path=/trunk/; revision=5967
-rw-r--r-- | ChangeLog | 11 | ||||
-rw-r--r-- | common/gdm-marshal.list | 1 | ||||
-rw-r--r-- | daemon/gdm-greeter-server.c | 34 | ||||
-rw-r--r-- | gui/simple-greeter/gdm-greeter-client.c | 75 |
4 files changed, 121 insertions, 0 deletions
@@ -1,3 +1,14 @@ +2008-03-09 Ray Strode <rstrode@redhat.com> + + * common/gdm-marshal.list (VOID:STRING,INT): + * daemon/gdm-greeter-server.c: + (send_dbus_string_and_int_signal): + * gui/simple-greeter/gdm-greeter-client.c + (emit_string_and_int_signal_for_message), + (send_dbus_bool_method), + (send_dbus_bool_method): + Add some helper functions that will be useful later + 2008-03-08 William Jon McCann <jmccann@redhat.com> * common/Makefile.am: diff --git a/common/gdm-marshal.list b/common/gdm-marshal.list index 9393840e..8b0b971e 100644 --- a/common/gdm-marshal.list +++ b/common/gdm-marshal.list @@ -3,3 +3,4 @@ VOID:STRING,STRING,STRING,STRING VOID:STRING,STRING,STRING VOID:STRING,STRING VOID:UINT,UINT +VOID:STRING,INT diff --git a/daemon/gdm-greeter-server.c b/daemon/gdm-greeter-server.c index 91291cce..abb28b7e 100644 --- a/daemon/gdm-greeter-server.c +++ b/daemon/gdm-greeter-server.c @@ -118,6 +118,40 @@ send_dbus_message (DBusConnection *connection, } static void +send_dbus_string_and_int_signal (GdmGreeterServer *greeter_server, + const char *name, + const char *text, + int number) +{ + DBusMessage *message; + DBusMessageIter iter; + const char *str; + + if (text != NULL) { + str = text; + } else { + str = ""; + } + + g_return_if_fail (greeter_server != NULL); + + message = dbus_message_new_signal (GDM_GREETER_SERVER_DBUS_PATH, + GDM_GREETER_SERVER_DBUS_INTERFACE, + name); + + dbus_message_iter_init_append (message, &iter); + dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &str); + dbus_message_iter_append_basic (&iter, DBUS_TYPE_INT32, &number); + + g_debug ("GreeterServer: Sending %s (%s %d)", name, str, number); + if (! send_dbus_message (greeter_server->priv->greeter_connection, message)) { + g_debug ("GreeterServer: Could not send %s signal", name); + } + + dbus_message_unref (message); +} + +static void send_dbus_string_signal (GdmGreeterServer *greeter_server, const char *name, const char *text) diff --git a/gui/simple-greeter/gdm-greeter-client.c b/gui/simple-greeter/gdm-greeter-client.c index 662c5f88..8bf65200 100644 --- a/gui/simple-greeter/gdm-greeter-client.c +++ b/gui/simple-greeter/gdm-greeter-client.c @@ -99,6 +99,36 @@ gdm_greeter_client_get_display_is_local (GdmGreeterClient *client) } static void +emit_string_and_int_signal_for_message (GdmGreeterClient *client, + const char *name, + DBusMessage *message, + int signal) +{ + DBusError error; + const char *text; + int number; + dbus_bool_t res; + + dbus_error_init (&error); + res = dbus_message_get_args (message, + &error, + DBUS_TYPE_STRING, &text, + DBUS_TYPE_INT32, &number, + DBUS_TYPE_INVALID); + if (res) { + + g_debug ("GdmGreeterClient: Received %s (%s %d)", name, text, number); + + g_signal_emit (client, + gdm_greeter_client_signals[signal], + 0, text, number); + } else { + g_warning ("Unable to get arguments: %s", error.message); + dbus_error_free (&error); + } +} + +static void emit_string_signal_for_message (GdmGreeterClient *client, const char *name, DBusMessage *message, @@ -250,6 +280,51 @@ send_dbus_string_method (DBusConnection *connection, return TRUE; } +static gboolean +send_dbus_bool_method (DBusConnection *connection, + const char *method, + gboolean payload) +{ + DBusError error; + DBusMessage *message; + DBusMessage *reply; + DBusMessageIter iter; + + g_debug ("GdmGreeterClient: Calling %s", method); + message = dbus_message_new_method_call (NULL, + GREETER_SERVER_DBUS_PATH, + GREETER_SERVER_DBUS_INTERFACE, + method); + if (message == NULL) { + g_warning ("Couldn't allocate the D-Bus message"); + return FALSE; + } + + dbus_message_iter_init_append (message, &iter); + dbus_message_iter_append_basic (&iter, + DBUS_TYPE_BOOLEAN, + &payload); + + dbus_error_init (&error); + reply = dbus_connection_send_with_reply_and_block (connection, + message, + -1, + &error); + + dbus_message_unref (message); + + if (dbus_error_is_set (&error)) { + g_warning ("%s %s raised: %s\n", + method, + error.name, + error.message); + return FALSE; + } + dbus_message_unref (reply); + dbus_connection_flush (connection); + + return TRUE; +} static gboolean send_dbus_void_method (DBusConnection *connection, |