[gnome-session] Add a new autostart phase, DisplayServer, that runs before Initialization
- From: Ray Strode <halfline src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-session] Add a new autostart phase, DisplayServer, that runs before Initialization
- Date: Tue, 3 Sep 2013 14:12:02 +0000 (UTC)
commit 672cb149b846597e7d3cb66692d31a7df5450ee2
Author: Giovanni Campagna <gcampagn redhat com>
Date: Tue Aug 20 15:11:08 2013 +0200
Add a new autostart phase, DisplayServer, that runs before Initialization
This way, the wayland compositor can initialize (and spawn XWayland)
before gnome-settings-daemon starts.
https://bugzilla.gnome.org/show_bug.cgi?id=706420
gnome-session/gsm-autostart-app.c | 2 ++
gnome-session/gsm-manager.c | 10 ++++++++--
gnome-session/gsm-manager.h | 2 ++
3 files changed, 12 insertions(+), 2 deletions(-)
---
diff --git a/gnome-session/gsm-autostart-app.c b/gnome-session/gsm-autostart-app.c
index c6c2c31..a1109f7 100644
--- a/gnome-session/gsm-autostart-app.c
+++ b/gnome-session/gsm-autostart-app.c
@@ -610,6 +610,8 @@ load_desktop_file (GsmAutostartApp *app)
if (phase_str != NULL) {
if (strcmp (phase_str, "EarlyInitialization") == 0) {
phase = GSM_MANAGER_PHASE_EARLY_INITIALIZATION;
+ } else if (strcmp (phase_str, "DisplayServer") == 0) {
+ phase = GSM_MANAGER_PHASE_DISPLAY_SERVER;
} else if (strcmp (phase_str, "Initialization") == 0) {
phase = GSM_MANAGER_PHASE_INITIALIZATION;
} else if (strcmp (phase_str, "WindowManager") == 0) {
diff --git a/gnome-session/gsm-manager.c b/gnome-session/gsm-manager.c
index 8f9f729..5d36e1f 100644
--- a/gnome-session/gsm-manager.c
+++ b/gnome-session/gsm-manager.c
@@ -448,6 +448,9 @@ phase_num_to_name (guint phase)
case GSM_MANAGER_PHASE_EARLY_INITIALIZATION:
name = "EARLY_INITIALIZATION";
break;
+ case GSM_MANAGER_PHASE_DISPLAY_SERVER:
+ name = "DISPLAY_SERVER";
+ break;
case GSM_MANAGER_PHASE_INITIALIZATION:
name = "INITIALIZATION";
break;
@@ -540,6 +543,7 @@ end_phase (GsmManager *manager)
switch (manager->priv->phase) {
case GSM_MANAGER_PHASE_STARTUP:
case GSM_MANAGER_PHASE_EARLY_INITIALIZATION:
+ case GSM_MANAGER_PHASE_DISPLAY_SERVER:
case GSM_MANAGER_PHASE_INITIALIZATION:
case GSM_MANAGER_PHASE_WINDOW_MANAGER:
case GSM_MANAGER_PHASE_PANEL:
@@ -688,6 +692,7 @@ on_phase_timeout (GsmManager *manager)
switch (manager->priv->phase) {
case GSM_MANAGER_PHASE_STARTUP:
case GSM_MANAGER_PHASE_EARLY_INITIALIZATION:
+ case GSM_MANAGER_PHASE_DISPLAY_SERVER:
case GSM_MANAGER_PHASE_INITIALIZATION:
case GSM_MANAGER_PHASE_WINDOW_MANAGER:
case GSM_MANAGER_PHASE_PANEL:
@@ -1525,6 +1530,7 @@ start_phase (GsmManager *manager)
switch (manager->priv->phase) {
case GSM_MANAGER_PHASE_STARTUP:
case GSM_MANAGER_PHASE_EARLY_INITIALIZATION:
+ case GSM_MANAGER_PHASE_DISPLAY_SERVER:
case GSM_MANAGER_PHASE_INITIALIZATION:
case GSM_MANAGER_PHASE_WINDOW_MANAGER:
case GSM_MANAGER_PHASE_PANEL:
@@ -2937,7 +2943,7 @@ gsm_manager_setenv (GsmManager *manager,
g_set_error (error,
GSM_MANAGER_ERROR,
GSM_MANAGER_ERROR_NOT_IN_INITIALIZATION,
- "Setenv interface is only available during the Initialization phase");
+ "Setenv interface is only available during the DisplayServer and Initialization
phase");
return FALSE;
}
@@ -3016,7 +3022,7 @@ gsm_manager_initialization_error (GsmManager *manager,
{
g_return_val_if_fail (GSM_IS_MANAGER (manager), FALSE);
- if (manager->priv->phase > GSM_MANAGER_PHASE_INITIALIZATION) {
+ if (manager->priv->phase != GSM_MANAGER_PHASE_INITIALIZATION) {
g_set_error (error,
GSM_MANAGER_ERROR,
GSM_MANAGER_ERROR_NOT_IN_INITIALIZATION,
diff --git a/gnome-session/gsm-manager.h b/gnome-session/gsm-manager.h
index e60a3a2..71bc142 100644
--- a/gnome-session/gsm-manager.h
+++ b/gnome-session/gsm-manager.h
@@ -71,6 +71,8 @@ typedef enum {
GSM_MANAGER_PHASE_STARTUP = 0,
/* gnome-initial-setup */
GSM_MANAGER_PHASE_EARLY_INITIALIZATION,
+ /* wayland compositor and XWayland */
+ GSM_MANAGER_PHASE_DISPLAY_SERVER,
/* xrandr setup, gnome-settings-daemon, etc */
GSM_MANAGER_PHASE_INITIALIZATION,
/* window/compositing managers */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]