summaryrefslogtreecommitdiff
path: root/daemon/gdm-xdmcp-chooser-slave.c
diff options
context:
space:
mode:
authorGiovanni Campagna <gcampagna@src.gnome.org>2012-07-07 01:21:33 -0400
committerRay Strode <rstrode@redhat.com>2012-07-17 04:14:55 -0400
commit3eeec6eec9bcc52da9a788a6ab21b162c275c2b5 (patch)
treeec9103fce8335c9a82bf9d3796e97879897e089a /daemon/gdm-xdmcp-chooser-slave.c
parent15f3f5d548efda2d15c5d0477c197f85e6769719 (diff)
downloadgdm-3eeec6eec9bcc52da9a788a6ab21b162c275c2b5.tar.gz
daemon: Port GdmChooserServer to GDBus
GdmChooserServer is the slave-side object that handles communication with choosers. The chooser talks over a private peer-to-peer dbus connection to its slave via GdmChooserServer. A chooser is like a greeter, but instead of presenting a login screen it presents a list of hosts on the network that will offer login screens if asked. The user picks one of these hosts and their display is redirected to it. This commit makes GdmChooserServer use GDBus. This gets us one step closer to GDM running without dbus-glib. https://bugzilla.gnome.org/show_bug.cgi?id=6228
Diffstat (limited to 'daemon/gdm-xdmcp-chooser-slave.c')
-rw-r--r--daemon/gdm-xdmcp-chooser-slave.c29
1 files changed, 25 insertions, 4 deletions
diff --git a/daemon/gdm-xdmcp-chooser-slave.c b/daemon/gdm-xdmcp-chooser-slave.c
index 2dd6edce..45d04ad4 100644
--- a/daemon/gdm-xdmcp-chooser-slave.c
+++ b/daemon/gdm-xdmcp-chooser-slave.c
@@ -34,10 +34,6 @@
#include <glib/gstdio.h>
#include <glib-object.h>
-#define DBUS_API_SUBJECT_TO_CHANGE
-#include <dbus/dbus-glib.h>
-#include <dbus/dbus-glib-lowlevel.h>
-
#include <X11/Xlib.h> /* for Display */
#include "gdm-common.h"
@@ -70,6 +66,8 @@ struct GdmXdmcpChooserSlavePrivate
GdmChooserServer *chooser_server;
GdmChooserSession *chooser;
+
+ GdmDBusXdmcpChooserSlave *skeleton;
};
enum {
@@ -129,6 +127,9 @@ on_chooser_hostname_selected (GdmChooserServer *chooser_server,
{
g_debug ("GdmXdmcpChooserSlave: emitting hostname selected: %s", name);
g_signal_emit (slave, signals [HOSTNAME_SELECTED], 0, name);
+
+ gdm_dbus_xdmcp_chooser_slave_emit_hostname_selected (slave->priv->skeleton,
+ name);
}
static void
@@ -316,12 +317,32 @@ gdm_xdmcp_chooser_slave_stop (GdmSlave *slave)
return TRUE;
}
+static GObject *
+gdm_xdmcp_chooser_slave_constructor (GType type,
+ guint n_construct_properties,
+ GObjectConstructParam *construct_properties)
+{
+ GdmXdmcpChooserSlave *slave;
+
+ slave = GDM_XDMCP_CHOOSER_SLAVE (G_OBJECT_CLASS (gdm_xdmcp_chooser_slave_parent_class)->constructor (type,
+ n_construct_properties,
+ construct_properties));
+
+ slave->priv->skeleton = GDM_DBUS_XDMCP_CHOOSER_SLAVE (gdm_dbus_xdmcp_chooser_slave_skeleton_new ());
+ gdm_slave_export_interface (GDM_SLAVE (slave),
+ G_DBUS_INTERFACE_SKELETON (slave->priv->skeleton));
+
+ return G_OBJECT (slave);
+}
+
+
static void
gdm_xdmcp_chooser_slave_class_init (GdmXdmcpChooserSlaveClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
GdmSlaveClass *slave_class = GDM_SLAVE_CLASS (klass);
+ object_class->constructor = gdm_xdmcp_chooser_slave_constructor;
object_class->finalize = gdm_xdmcp_chooser_slave_finalize;
slave_class->start = gdm_xdmcp_chooser_slave_start;