[gdm/wip/wayland-at-login-screen: 59/70] session: forward is-initial from display to worker



commit ab4e2fa8922d7290cefb7716a9f314dceff2b896
Author: Ray Strode <rstrode redhat com>
Date:   Mon Feb 16 20:22:07 2015 -0500

    session: forward is-initial from display to worker
    
    The worker needs to know if a display should be forced on
    vt1 or not when deciding which vt to allocate for the logind
    session.

 daemon/gdm-display.c          |    6 ++++++
 daemon/gdm-session-worker.c   |   11 +++++++++--
 daemon/gdm-session-worker.xml |    3 +++
 daemon/gdm-session.c          |   25 +++++++++++++++++++++++++
 4 files changed, 43 insertions(+), 2 deletions(-)
---
diff --git a/daemon/gdm-display.c b/daemon/gdm-display.c
index 3963045..0fca63e 100644
--- a/daemon/gdm-display.c
+++ b/daemon/gdm-display.c
@@ -1482,6 +1482,7 @@ gdm_display_set_up_greeter_session (GdmDisplay  *self,
 void
 gdm_display_start_greeter_session (GdmDisplay *self)
 {
+        GdmSession    *session;
         char          *display_name;
         char          *seat_id;
         char          *hostname;
@@ -1529,6 +1530,11 @@ gdm_display_start_greeter_session (GdmDisplay *self)
 
         gdm_launch_environment_start (self->priv->launch_environment);
 
+        session = gdm_launch_environment_get_session (self->priv->launch_environment);
+        g_object_set (G_OBJECT (session),
+                      "display-is-initial", self->priv->is_initial,
+                      NULL);
+
         g_free (display_name);
         g_free (seat_id);
         g_free (hostname);
diff --git a/daemon/gdm-session-worker.c b/daemon/gdm-session-worker.c
index a1f6ab8..4c6ac2e 100644
--- a/daemon/gdm-session-worker.c
+++ b/daemon/gdm-session-worker.c
@@ -166,6 +166,7 @@ struct GdmSessionWorkerPrivate
         guint32           is_program_session : 1;
         guint32           is_reauth_session : 1;
         guint32           display_is_local : 1;
+        guint32           display_is_initial : 1;
         guint             state_change_idle_id;
         GdmSessionDisplayMode display_mode;
 
@@ -2759,7 +2760,8 @@ gdm_session_worker_handle_setup (GdmDBusWorker         *object,
                                  const char            *console,
                                  const char            *seat_id,
                                  const char            *hostname,
-                                 gboolean               display_is_local)
+                                 gboolean               display_is_local,
+                                 gboolean               display_is_initial)
 {
         GdmSessionWorker *worker = GDM_SESSION_WORKER (object);
         validate_and_queue_state_change (worker, invocation, GDM_SESSION_WORKER_STATE_SETUP_COMPLETE);
@@ -2771,6 +2773,7 @@ gdm_session_worker_handle_setup (GdmDBusWorker         *object,
         worker->priv->display_seat_id = g_strdup (seat_id);
         worker->priv->hostname = g_strdup (hostname);
         worker->priv->display_is_local = display_is_local;
+        worker->priv->display_is_initial = display_is_initial;
         worker->priv->username = NULL;
 
         g_signal_connect_swapped (worker->priv->user_settings,
@@ -2795,7 +2798,8 @@ gdm_session_worker_handle_setup_for_user (GdmDBusWorker         *object,
                                           const char            *console,
                                           const char            *seat_id,
                                           const char            *hostname,
-                                          gboolean               display_is_local)
+                                          gboolean               display_is_local,
+                                          gboolean               display_is_initial)
 {
         GdmSessionWorker *worker = GDM_SESSION_WORKER (object);
 
@@ -2809,6 +2813,7 @@ gdm_session_worker_handle_setup_for_user (GdmDBusWorker         *object,
         worker->priv->display_seat_id = g_strdup (seat_id);
         worker->priv->hostname = g_strdup (hostname);
         worker->priv->display_is_local = display_is_local;
+        worker->priv->display_is_initial = display_is_initial;
         worker->priv->username = g_strdup (username);
 
         g_signal_connect_swapped (worker->priv->user_settings,
@@ -2848,6 +2853,7 @@ gdm_session_worker_handle_setup_for_program (GdmDBusWorker         *object,
                                              const char            *seat_id,
                                              const char            *hostname,
                                              gboolean               display_is_local,
+                                             gboolean               display_is_initial,
                                              const char            *log_file)
 {
         GdmSessionWorker *worker = GDM_SESSION_WORKER (object);
@@ -2860,6 +2866,7 @@ gdm_session_worker_handle_setup_for_program (GdmDBusWorker         *object,
         worker->priv->display_seat_id = g_strdup (seat_id);
         worker->priv->hostname = g_strdup (hostname);
         worker->priv->display_is_local = display_is_local;
+        worker->priv->display_is_initial = display_is_initial;
         worker->priv->username = g_strdup (username);
         worker->priv->log_file = g_strdup (log_file);
         worker->priv->is_program_session = TRUE;
diff --git a/daemon/gdm-session-worker.xml b/daemon/gdm-session-worker.xml
index afd724d..853bc6a 100644
--- a/daemon/gdm-session-worker.xml
+++ b/daemon/gdm-session-worker.xml
@@ -35,6 +35,7 @@
       <arg name="display_seat" direction="in" type="s"/>
       <arg name="hostname" direction="in" type="s"/>
       <arg name="display_is_local" direction="in" type="b"/>
+      <arg name="display_is_initial" direction="in" type="b"/>
     </method>
     <method name="SetupForUser">
       <arg name="service_name" direction="in" type="s"/>
@@ -45,6 +46,7 @@
       <arg name="display_seat" direction="in" type="s"/>
       <arg name="hostname" direction="in" type="s"/>
       <arg name="display_is_local" direction="in" type="b"/>
+      <arg name="display_is_initial" direction="in" type="b"/>
     </method>
     <method name="SetupForProgram">
       <arg name="service_name" direction="in" type="s"/>
@@ -55,6 +57,7 @@
       <arg name="display_seat" direction="in" type="s"/>
       <arg name="hostname" direction="in" type="s"/>
       <arg name="display_is_local" direction="in" type="b"/>
+      <arg name="display_is_initial" direction="in" type="b"/>
       <arg name="log_file" direction="in" type="s"/>
     </method>
     <method name="StartReauthentication">
diff --git a/daemon/gdm-session.c b/daemon/gdm-session.c
index 725f6f8..477ccb2 100644
--- a/daemon/gdm-session.c
+++ b/daemon/gdm-session.c
@@ -128,6 +128,7 @@ struct _GdmSessionPrivate
         GHashTable          *environment;
 
         guint32              is_program_session : 1;
+        guint32              display_is_initial : 1;
 };
 
 enum {
@@ -137,6 +138,7 @@ enum {
         PROP_DISPLAY_NAME,
         PROP_DISPLAY_HOSTNAME,
         PROP_DISPLAY_IS_LOCAL,
+        PROP_DISPLAY_IS_INITIAL,
         PROP_DISPLAY_DEVICE,
         PROP_DISPLAY_SEAT_ID,
         PROP_DISPLAY_X11_AUTHORITY_FILE,
@@ -1987,6 +1989,7 @@ send_setup (GdmSession *self,
                                             display_seat_id,
                                             display_hostname,
                                             self->priv->display_is_local,
+                                            self->priv->display_is_initial,
                                             NULL,
                                             (GAsyncReadyCallback) on_setup_complete_cb,
                                             conversation);
@@ -2052,6 +2055,7 @@ send_setup_for_user (GdmSession *self,
                                                      display_seat_id,
                                                      display_hostname,
                                                      self->priv->display_is_local,
+                                                     self->priv->display_is_initial,
                                                      NULL,
                                                      (GAsyncReadyCallback) on_setup_complete_cb,
                                                      conversation);
@@ -2112,6 +2116,7 @@ send_setup_for_program (GdmSession *self,
                                                         display_seat_id,
                                                         display_hostname,
                                                         self->priv->display_is_local,
+                                                        self->priv->display_is_initial,
                                                         log_file,
                                                         NULL,
                                                         (GAsyncReadyCallback) on_setup_complete_cb,
@@ -3035,6 +3040,13 @@ set_display_is_local (GdmSession *self,
 }
 
 static void
+set_display_is_initial (GdmSession *self,
+                        gboolean    is_initial)
+{
+        self->priv->display_is_initial = is_initial;
+}
+
+static void
 set_verification_mode (GdmSession                 *self,
                        GdmSessionVerificationMode  verification_mode)
 {
@@ -3088,6 +3100,9 @@ gdm_session_set_property (GObject      *object,
         case PROP_DISPLAY_IS_LOCAL:
                 set_display_is_local (self, g_value_get_boolean (value));
                 break;
+        case PROP_DISPLAY_IS_INITIAL:
+                set_display_is_initial (self, g_value_get_boolean (value));
+                break;
         case PROP_VERIFICATION_MODE:
                 set_verification_mode (self, g_value_get_enum (value));
                 break;
@@ -3135,6 +3150,9 @@ gdm_session_get_property (GObject    *object,
         case PROP_DISPLAY_IS_LOCAL:
                 g_value_set_boolean (value, self->priv->display_is_local);
                 break;
+        case PROP_DISPLAY_IS_INITIAL:
+                g_value_set_boolean (value, self->priv->display_is_initial);
+                break;
         case PROP_VERIFICATION_MODE:
                 g_value_set_enum (value, self->priv->verification_mode);
                 break;
@@ -3516,6 +3534,13 @@ gdm_session_class_init (GdmSessionClass *session_class)
                                                                TRUE,
                                                                G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
         g_object_class_install_property (object_class,
+                                         PROP_DISPLAY_IS_INITIAL,
+                                         g_param_spec_boolean ("display-is-initial",
+                                                               "display is initial",
+                                                               "display is initial",
+                                                               FALSE,
+                                                               G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
+        g_object_class_install_property (object_class,
                                          PROP_DISPLAY_X11_AUTHORITY_FILE,
                                          g_param_spec_string ("display-x11-authority-file",
                                                               "display x11 authority file",


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