[gnome-shell] layout: Move showing the stage and the startup-prepared signal



commit e2463cb5011c2bd658e55143ce114100ab1a0ec6
Author: Jasper St. Pierre <jstpierre mecheye net>
Date:   Wed Mar 6 17:55:33 2013 -0500

    layout: Move showing the stage and the startup-prepared signal
    
    Waiting until we're idle means nothing if we're constructing
    complex actors.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=694321

 js/ui/layout.js |   26 ++++++++++++++------------
 js/ui/main.js   |    4 ----
 2 files changed, 14 insertions(+), 16 deletions(-)
---
diff --git a/js/ui/layout.js b/js/ui/layout.js
index 6ca5d84..b04cb5a 100644
--- a/js/ui/layout.js
+++ b/js/ui/layout.js
@@ -231,6 +231,8 @@ const LayoutManager = new Lang.Class({
         Main.overview.connect('showing', Lang.bind(this, this._overviewShowing));
         Main.overview.connect('hidden', Lang.bind(this, this._overviewHidden));
         Main.sessionMode.connect('updated', Lang.bind(this, this._sessionUpdated));
+
+        this._prepareStartupAnimation();
     },
 
     _overviewShowing: function() {
@@ -547,7 +549,7 @@ const LayoutManager = new Lang.Class({
     // MetaBackgroundActor inside global.window_group covers the entirety of the
     // screen. So, we set no_clear_hint at the end of the animation.
 
-    prepareStartupAnimation: function() {
+    _prepareStartupAnimation: function() {
         // Set ourselves to FULLSCREEN input mode while the animation is running
         // so events don't get delivered to X11 windows (which are distorted by the animation)
         global.stage_input_mode = Shell.StageInputMode.FULLSCREEN;
@@ -585,25 +587,25 @@ const LayoutManager = new Lang.Class({
                                                       Lang.bind(this, function() {
                                                           this._systemBackground.disconnect(signalId);
                                                           this._systemBackground.actor.show();
+                                                          global.stage.show();
+
+                                                          this.emit('startup-prepared');
 
                                                           // We're mostly prepared for the startup animation
                                                           // now, but since a lot is going on asynchronously
-                                                          // during startup, let's defer emission of the
-                                                          // startup-prepared signal until the event loop is
-                                                          // uncontended and idle. This helps to prevent us
-                                                          // from running the animation when the system is
-                                                          // bogged down
+                                                          // during startup, let's defer the startup 
animation
+                                                          // until the event loop is uncontended and idle.
+                                                          // This helps to prevent us from running the 
animation
+                                                          // when the system is bogged down
                                                           GLib.idle_add(GLib.PRIORITY_LOW,
                                                                         Lang.bind(this, function() {
-                                                                                      
this.emit('startup-prepared');
-                                                                                      return false;
-                                                                                  }));
-
+                                                                            this._startupAnimation();
+                                                                            return false;
+                                                                        }));
                                                       }));
     },
 
-    startupAnimation: function() {
-        global.stage.show();
+    _startupAnimation: function() {
         if (Main.sessionMode.isGreeter)
             this._startupAnimationGreeter();
         else
diff --git a/js/ui/main.js b/js/ui/main.js
index b7a412c..f727a66 100644
--- a/js/ui/main.js
+++ b/js/ui/main.js
@@ -153,7 +153,6 @@ function _initializeUI() {
     componentManager = new Components.ComponentManager();
 
     layoutManager.init();
-    layoutManager.prepareStartupAnimation();
     overview.init();
 
     global.screen.override_workspace_layout(Meta.ScreenCorner.TOPLEFT,
@@ -192,9 +191,6 @@ function _initializeUI() {
     ExtensionDownloader.init();
     ExtensionSystem.init();
 
-    layoutManager.connect('startup-prepared', function() {
-                              layoutManager.startupAnimation();
-                          });
     layoutManager.connect('startup-complete', function() {
                               if (keybindingMode == Shell.KeyBindingMode.NONE) {
                                   keybindingMode = Shell.KeyBindingMode.NORMAL;


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