From 1950a67e15fbacca7708462ad3fe6369de713997 Mon Sep 17 00:00:00 2001 From: "Jasper St. Pierre" Date: Wed, 13 Feb 2013 22:45:43 -0500 Subject: [PATCH] Run the startup animation when we don't have much going on Starting the startup animation when we don't have that much IO makes it a lot more visible. Based on a patch by Giovanni Campagna https://bugzilla.gnome.org/show_bug.cgi?id=682429 --- js/ui/layout.js | 5 +++-- js/ui/main.js | 10 ++++++++++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/js/ui/layout.js b/js/ui/layout.js index 062cbdd7a..357a98601 100644 --- a/js/ui/layout.js +++ b/js/ui/layout.js @@ -229,7 +229,6 @@ 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._startupAnimation(); }, _overviewShowing: function() { @@ -465,9 +464,11 @@ const LayoutManager = new Lang.Class({ return this._keyboardIndex; }, - _startupAnimation: function() { + prepareStartupAnimation: function() { this.panelBox.translation_y = -this.panelBox.height; + }, + startupAnimation: function() { let plymouthTransitionRunning = false; // If we're the greeter, put up the xrootpmap actor diff --git a/js/ui/main.js b/js/ui/main.js index d7ba21339..22edfb904 100644 --- a/js/ui/main.js +++ b/js/ui/main.js @@ -127,6 +127,7 @@ function startSession() { // Setup the stage hierarchy early layoutManager = new Layout.LayoutManager(); + // Various parts of the codebase still refers to Main.uiGroup // instead using the layoutManager. This keeps that code // working until it's updated. @@ -154,6 +155,7 @@ function startSession() { BackgroundMenu.addBackgroundMenu(global.background_actor); layoutManager.init(); + layoutManager.prepareStartupAnimation(); overview.init(); global.screen.override_workspace_layout(Meta.ScreenCorner.TOPLEFT, @@ -190,6 +192,14 @@ function startSession() { ExtensionDownloader.init(); ExtensionSystem.init(); + + // Run the startup animation as soon as the mainloop is idle enough. + // This is necessary to have it smooth and without interruptions from + // completed IO tasks + GLib.idle_add(GLib.PRIORITY_LOW, function() { + layoutManager.startupAnimation(); + return false; + }); } let _workspaces = [];