summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRay Strode <rstrode@redhat.com>2008-03-09 21:22:50 +0000
committerRay Strode <halfline@src.gnome.org>2008-03-09 21:22:50 +0000
commit46717caa337a69c4f8225d1dd17294f322fc0a55 (patch)
treed195793cb16a1c0cb3bcd5a165b4645ad316bc75
parent6576fdd070b1081adea828b049ee9716e3f63a1e (diff)
downloadgdm-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--ChangeLog11
-rw-r--r--common/gdm-marshal.list1
-rw-r--r--daemon/gdm-greeter-server.c34
-rw-r--r--gui/simple-greeter/gdm-greeter-client.c75
4 files changed, 121 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 5efe3b3e..5350488e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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,