summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGiovanni Campagna <gcampagna@src.gnome.org>2012-05-03 18:29:00 +0200
committerGiovanni Campagna <gcampagna@src.gnome.org>2012-05-18 16:12:08 +0200
commite177962d33a480e401b0b70fb35ea3224516c654 (patch)
treedc2f52ede93d19bfd90dd7f10b9495e022c34e53
parent4484b3a0db9be3323bf85ede04a5491b89f9917f (diff)
downloadgdm-e177962d33a480e401b0b70fb35ea3224516c654.tar.gz
Port GdmFactorySlave to GDBus
Last commit moved global bus initialization to load GDBus instead of dbus-glib, so this commit ensures that all traffic on the system bus is through GIO.
-rw-r--r--configure.ac1
-rw-r--r--daemon/Makefile.am13
-rw-r--r--daemon/factory-slave-main.c1
-rw-r--r--daemon/gdm-factory-slave.c45
-rw-r--r--daemon/product-slave-main.c1
5 files changed, 34 insertions, 27 deletions
diff --git a/configure.ac b/configure.ac
index 56bbed34..e8127709 100644
--- a/configure.ac
+++ b/configure.ac
@@ -92,6 +92,7 @@ PKG_CHECK_MODULES(DAEMON,
dbus-glib-1 >= $DBUS_GLIB_REQUIRED_VERSION
gobject-2.0 >= $GLIB_REQUIRED_VERSION
gio-2.0 >= $GLIB_REQUIRED_VERSION
+ gio-unix-2.0 >= $GLIB_REQUIRED_VERSION
accountsservice >= $ACCOUNTS_SERVICE_REQUIRED_VERSION
)
AC_SUBST(DAEMON_CFLAGS)
diff --git a/daemon/Makefile.am b/daemon/Makefile.am
index a8321eca..22266316 100644
--- a/daemon/Makefile.am
+++ b/daemon/Makefile.am
@@ -42,6 +42,7 @@ BUILT_SOURCES = \
gdm-static-display-glue.h \
gdm-transient-display-glue.h \
gdm-local-display-factory-glue.h \
+ gdm-local-display-factory-glue.c \
gdm-product-display-glue.h \
gdm-slave-resources.h \
gdm-greeter-glue.h \
@@ -71,11 +72,17 @@ gdm-static-display-glue.h: gdm-static-display.xml Makefile.am
dbus-binding-tool --prefix=gdm_static_display --mode=glib-server --output=gdm-static-display-glue.h $(srcdir)/gdm-static-display.xml
gdm-transient-display-glue.h: gdm-transient-display.xml Makefile.am
dbus-binding-tool --prefix=gdm_transient_display --mode=glib-server --output=gdm-transient-display-glue.h $(srcdir)/gdm-transient-display.xml
-gdm-local-display-factory-glue.h: gdm-local-display-factory.xml Makefile.am
- dbus-binding-tool --prefix=gdm_local_display_factory --mode=glib-server --output=gdm-local-display-factory-glue.h $(srcdir)/gdm-local-display-factory.xml
+
gdm-product-display-glue.h: gdm-product-display.xml Makefile.am
dbus-binding-tool --prefix=gdm_product_display --mode=glib-server --output=gdm-product-display-glue.h $(srcdir)/gdm-product-display.xml
+gdm-local-display-factory-glue.c gdm-local-display-factory-glue.h : gdm-local-display-factory.xml Makefile.am
+ gdbus-codegen \
+ --c-namespace=GdmDBus \
+ --interface-prefix=org.gnome.DisplayManager \
+ --generate-c-code=gdm-local-display-factory-glue \
+ $(srcdir)/gdm-local-display-factory.xml
+
gdm-greeter-glue.c gdm-greeter-glue.h : gdm-greeter-server.xml Makefile.am
gdbus-codegen \
--c-namespace=GdmDBus \
@@ -202,6 +209,8 @@ gdm_factory_slave_SOURCES = \
nodist_gdm_factory_slave_SOURCES = \
gdm-greeter-glue.c \
gdm-greeter-glue.h \
+ gdm-local-display-factory-glue.h \
+ gdm-local-display-factory-glue.c \
$(NULL)
gdm_factory_slave_LDFLAGS = \
diff --git a/daemon/factory-slave-main.c b/daemon/factory-slave-main.c
index 9ea93ab5..6d3b1333 100644
--- a/daemon/factory-slave-main.c
+++ b/daemon/factory-slave-main.c
@@ -34,6 +34,7 @@
#include <glib.h>
#include <glib/gi18n.h>
#include <glib-object.h>
+#include <gio/gio.h>
#include "gdm-xerrors.h"
#include "gdm-signal-handler.h"
diff --git a/daemon/gdm-factory-slave.c b/daemon/gdm-factory-slave.c
index 35386279..1c5dfdd1 100644
--- a/daemon/gdm-factory-slave.c
+++ b/daemon/gdm-factory-slave.c
@@ -35,17 +35,13 @@
#include <glib/gi18n.h>
#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 <gio/gio.h>
#include <X11/Xlib.h> /* for Display */
#include "gdm-common.h"
#include "gdm-factory-slave.h"
-#include "gdm-factory-slave-glue.h"
#include "gdm-server.h"
#include "gdm-greeter-session.h"
@@ -53,6 +49,8 @@
#include "gdm-session-relay.h"
+#include "gdm-local-display-factory-glue.h"
+
extern char **environ;
#define GDM_FACTORY_SLAVE_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GDM_TYPE_FACTORY_SLAVE, GdmFactorySlavePrivate))
@@ -77,8 +75,8 @@ struct GdmFactorySlavePrivate
GdmSessionRelay *session;
GdmGreeterServer *greeter_server;
GdmGreeterSession *greeter;
- DBusGProxy *factory_proxy;
- DBusGConnection *connection;
+ GdmDBusLocalDisplayFactory *factory_proxy;
+ GDBusConnection *connection;
};
static void gdm_factory_slave_class_init (GdmFactorySlaveClass *klass);
@@ -335,7 +333,7 @@ create_product_display (GdmFactorySlave *slave)
char *parent_display_id;
char *server_address;
char *product_id;
- GError *error;
+ GError *error = NULL;
gboolean res;
gboolean ret;
@@ -344,12 +342,15 @@ create_product_display (GdmFactorySlave *slave)
g_debug ("GdmFactorySlave: Create product display");
g_debug ("GdmFactorySlave: Connecting to local display factory");
- slave->priv->factory_proxy = dbus_g_proxy_new_for_name (slave->priv->connection,
- GDM_DBUS_NAME,
- GDM_DBUS_LOCAL_DISPLAY_FACTORY_PATH,
- GDM_DBUS_LOCAL_DISPLAY_FACTORY_INTERFACE);
+ slave->priv->factory_proxy = GDM_DBUS_LOCAL_DISPLAY_FACTORY (
+ gdm_dbus_local_display_factory_proxy_new_sync (slave->priv->connection,
+ G_DBUS_PROXY_FLAGS_NONE,
+ GDM_DBUS_NAME,
+ GDM_DBUS_LOCAL_DISPLAY_FACTORY_PATH,
+ NULL, &error));
if (slave->priv->factory_proxy == NULL) {
- g_warning ("Failed to create local display factory proxy");
+ g_warning ("Failed to create local display factory proxy: %s", error->message);
+ g_error_free (error);
goto out;
}
@@ -359,15 +360,11 @@ create_product_display (GdmFactorySlave *slave)
"display-id", &parent_display_id,
NULL);
- error = NULL;
- res = dbus_g_proxy_call (slave->priv->factory_proxy,
- "CreateProductDisplay",
- &error,
- DBUS_TYPE_G_OBJECT_PATH, parent_display_id,
- G_TYPE_STRING, server_address,
- G_TYPE_INVALID,
- DBUS_TYPE_G_OBJECT_PATH, &product_id,
- G_TYPE_INVALID);
+ res = gdm_dbus_local_display_factory_call_create_product_display_sync (slave->priv->factory_proxy,
+ parent_display_id,
+ server_address,
+ &product_id,
+ NULL, &error);
g_free (server_address);
g_free (parent_display_id);
@@ -879,8 +876,6 @@ gdm_factory_slave_class_init (GdmFactorySlaveClass *klass)
slave_class->stop = gdm_factory_slave_stop;
g_type_class_add_private (klass, sizeof (GdmFactorySlavePrivate));
-
- dbus_g_object_type_install_info (GDM_TYPE_FACTORY_SLAVE, &dbus_glib_gdm_factory_slave_object_info);
}
static void
@@ -893,7 +888,7 @@ gdm_factory_slave_init (GdmFactorySlave *slave)
slave->priv->pid = -1;
error = NULL;
- slave->priv->connection = dbus_g_bus_get (DBUS_BUS_SYSTEM, &error);
+ slave->priv->connection = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, &error);
if (slave->priv->connection == NULL) {
if (error != NULL) {
g_critical ("error getting system bus: %s", error->message);
diff --git a/daemon/product-slave-main.c b/daemon/product-slave-main.c
index 709e5fb1..7ca7b1c7 100644
--- a/daemon/product-slave-main.c
+++ b/daemon/product-slave-main.c
@@ -34,6 +34,7 @@
#include <glib.h>
#include <glib/gi18n.h>
#include <glib-object.h>
+#include <gio/gio.h>
#include "gdm-xerrors.h"
#include "gdm-signal-handler.h"