diff options
author | Giovanni Campagna <gcampagna@src.gnome.org> | 2012-05-03 18:29:00 +0200 |
---|---|---|
committer | Giovanni Campagna <gcampagna@src.gnome.org> | 2012-05-18 16:12:08 +0200 |
commit | e177962d33a480e401b0b70fb35ea3224516c654 (patch) | |
tree | dc2f52ede93d19bfd90dd7f10b9495e022c34e53 | |
parent | 4484b3a0db9be3323bf85ede04a5491b89f9917f (diff) | |
download | gdm-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.ac | 1 | ||||
-rw-r--r-- | daemon/Makefile.am | 13 | ||||
-rw-r--r-- | daemon/factory-slave-main.c | 1 | ||||
-rw-r--r-- | daemon/gdm-factory-slave.c | 45 | ||||
-rw-r--r-- | daemon/product-slave-main.c | 1 |
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" |