[gdm/wip/gdbus-port: 4/13] Port GdmFactorySlave to GDBus



commit e177962d33a480e401b0b70fb35ea3224516c654
Author: Giovanni Campagna <gcampagna src gnome org>
Date:   Thu May 3 18:29:00 2012 +0200

    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.

 configure.ac                |    1 +
 daemon/Makefile.am          |   13 ++++++++++-
 daemon/factory-slave-main.c |    1 +
 daemon/gdm-factory-slave.c  |   45 +++++++++++++++++++-----------------------
 daemon/product-slave-main.c |    1 +
 5 files changed, 34 insertions(+), 27 deletions(-)
---
diff --git a/configure.ac b/configure.ac
index 56bbed3..e812770 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 a8321ec..2226631 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 9ea93ab..6d3b133 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 3538627..1c5dfdd 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 709e5fb..7ca7b1c 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"



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