[gdm/wip/slave-display-merger: 11/29] xdmcp: consolidate chooser and greeter display



commit 0c06a127fd554daa7cba8c449770b4b15b9a6f52
Author: Ray Strode <rstrode redhat com>
Date:   Tue Feb 3 14:47:22 2015 -0500

    xdmcp: consolidate chooser and greeter display
    
    The subclasses do almost exactly the same thing,
    so just drop them and instead put the functionality
    in the xdmcp base class.

 daemon/Makefile.am                 |    4 --
 daemon/gdm-xdmcp-chooser-display.c |   82 ------------------------------------
 daemon/gdm-xdmcp-chooser-display.h |   63 ---------------------------
 daemon/gdm-xdmcp-display-factory.c |   28 ++++++-------
 daemon/gdm-xdmcp-display.c         |   23 ++++++++++
 daemon/gdm-xdmcp-display.h         |    7 ++-
 daemon/gdm-xdmcp-greeter-display.c |   82 ------------------------------------
 daemon/gdm-xdmcp-greeter-display.h |   64 ----------------------------
 8 files changed, 41 insertions(+), 312 deletions(-)
---
diff --git a/daemon/Makefile.am b/daemon/Makefile.am
index 691c939..e6b7ec8 100644
--- a/daemon/Makefile.am
+++ b/daemon/Makefile.am
@@ -238,10 +238,6 @@ XDMCP_SOURCES =                            \
        gdm-xdmcp-display-factory.h     \
        gdm-xdmcp-display.c             \
        gdm-xdmcp-display.h             \
-       gdm-xdmcp-greeter-display.c     \
-       gdm-xdmcp-greeter-display.h     \
-       gdm-xdmcp-chooser-display.c     \
-       gdm-xdmcp-chooser-display.h     \
        gdm-xdmcp-chooser-slave.c       \
        gdm-xdmcp-chooser-slave.h       \
        $(NULL)
diff --git a/daemon/gdm-xdmcp-display-factory.c b/daemon/gdm-xdmcp-display-factory.c
index cff5ceb..1e28d47 100644
--- a/daemon/gdm-xdmcp-display-factory.c
+++ b/daemon/gdm-xdmcp-display-factory.c
@@ -53,10 +53,10 @@
 #include <X11/Xdmcp.h>
 
 #include "gdm-common.h"
-#include "gdm-xdmcp-greeter-display.h"
-#include "gdm-xdmcp-chooser-display.h"
+#include "gdm-xdmcp-display.h"
 #include "gdm-display-factory.h"
 #include "gdm-xdmcp-display-factory.h"
+#include "gdm-xdmcp-chooser-slave.h"
 #include "gdm-display-store.h"
 #include "gdm-settings-direct.h"
 #include "gdm-settings-keys.h"
@@ -1988,9 +1988,9 @@ gdm_xdmcp_send_decline (GdmXdmcpDisplayFactory *factory,
 }
 
 static void
-on_hostname_selected (GdmSlave               *slave,
-                      const char             *hostname,
-                      GdmXdmcpChooserDisplay *display)
+on_hostname_selected (GdmSlave        *slave,
+                      const char      *hostname,
+                      GdmXdmcpDisplay *display)
 {
         struct addrinfo  hints;
         struct addrinfo *ai_list;
@@ -2003,7 +2003,7 @@ on_hostname_selected (GdmSlave               *slave,
         g_debug ("GdmXdmcpDisplayFactory: hostname selected: %s",
                 hostname ? hostname : "(null)");
 
-        address = gdm_xdmcp_display_get_remote_address (GDM_XDMCP_DISPLAY (display));
+        address = gdm_xdmcp_display_get_remote_address (display);
 
         g_assert (address != NULL);
 
@@ -2105,16 +2105,14 @@ gdm_xdmcp_display_create (GdmXdmcpDisplayFactory *factory,
                 }
         }
 
+        display = gdm_xdmcp_display_new (hostname,
+                                         displaynum,
+                                         address,
+                                         get_next_session_serial (factory));
         if (use_chooser) {
-                display = gdm_xdmcp_chooser_display_new (hostname,
-                                                         displaynum,
-                                                         address,
-                                                         get_next_session_serial (factory));
-        } else {
-                display = gdm_xdmcp_greeter_display_new (hostname,
-                                                         displaynum,
-                                                         address,
-                                                         get_next_session_serial (factory));
+                g_object_set (G_OBJECT (display),
+                              "slave-type", GDM_TYPE_XDMCP_CHOOSER_SLAVE,
+                              NULL);
         }
 
         if (display == NULL) {
diff --git a/daemon/gdm-xdmcp-display.c b/daemon/gdm-xdmcp-display.c
index 9b929fa..f45ad53 100644
--- a/daemon/gdm-xdmcp-display.c
+++ b/daemon/gdm-xdmcp-display.c
@@ -198,3 +198,26 @@ gdm_xdmcp_display_init (GdmXdmcpDisplay *xdmcp_display)
 
         xdmcp_display->priv = GDM_XDMCP_DISPLAY_GET_PRIVATE (xdmcp_display);
 }
+
+GdmDisplay *
+gdm_xdmcp_display_new (const char              *hostname,
+                       int                      number,
+                       GdmAddress              *address,
+                       gint32                   session_number)
+{
+        GObject *object;
+        char    *x11_display;
+
+        x11_display = g_strdup_printf ("%s:%d", hostname, number);
+        object = g_object_new (GDM_TYPE_XDMCP_DISPLAY,
+                               "remote-hostname", hostname,
+                               "x11-display-number", number,
+                               "x11-display-name", x11_display,
+                               "is-local", FALSE,
+                               "remote-address", address,
+                               "session-number", session_number,
+                               NULL);
+        g_free (x11_display);
+
+        return GDM_DISPLAY (object);
+}
diff --git a/daemon/gdm-xdmcp-display.h b/daemon/gdm-xdmcp-display.h
index 10b85a8..e841400 100644
--- a/daemon/gdm-xdmcp-display.h
+++ b/daemon/gdm-xdmcp-display.h
@@ -54,10 +54,13 @@ typedef struct
 
 GType                     gdm_xdmcp_display_get_type                 (void);
 
+GdmDisplay              * gdm_xdmcp_display_new                      (const char              *hostname,
+                                                                      int                      number,
+                                                                      GdmAddress              *address,
+                                                                      gint32                   
session_number);
+
 gint32                    gdm_xdmcp_display_get_session_number       (GdmXdmcpDisplay         *display);
 GdmAddress              * gdm_xdmcp_display_get_remote_address       (GdmXdmcpDisplay         *display);
-
-
 G_END_DECLS
 
 #endif /* __GDM_XDMCP_DISPLAY_H */


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