Bug 514090 - Moved suspension of the job manager earlier during startup

Change-Id: I09391d89fc2917daf7618a294c04ad2752632d19
diff --git a/bundles/org.eclipse.ui.ide.application/src/org/eclipse/ui/internal/ide/application/IDEApplication.java b/bundles/org.eclipse.ui.ide.application/src/org/eclipse/ui/internal/ide/application/IDEApplication.java
index c7b95ee..3f162cf 100644
--- a/bundles/org.eclipse.ui.ide.application/src/org/eclipse/ui/internal/ide/application/IDEApplication.java
+++ b/bundles/org.eclipse.ui.ide.application/src/org/eclipse/ui/internal/ide/application/IDEApplication.java
@@ -29,6 +29,7 @@
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Platform;
 import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.Job;
 import org.eclipse.core.runtime.preferences.ConfigurationScope;
 import org.eclipse.equinox.app.IApplication;
 import org.eclipse.equinox.app.IApplicationContext;
@@ -108,6 +109,12 @@
 
     @Override
 	public Object start(IApplicationContext appContext) throws Exception {
+		// Suspend the job manager to prevent background jobs from running. This
+		// is done to reduce resource contention during startup.
+		// The job manager will be resumed by the
+		// IDEWorkbenchAdvisor.postStartup method.
+		Job.getJobManager().suspend();
+
         Display display = createDisplay();
         // processor must be created before we start event loop
         DelayedEventsProcessor processor = new DelayedEventsProcessor(display);
diff --git a/bundles/org.eclipse.ui.ide.application/src/org/eclipse/ui/internal/ide/application/IDEWorkbenchAdvisor.java b/bundles/org.eclipse.ui.ide.application/src/org/eclipse/ui/internal/ide/application/IDEWorkbenchAdvisor.java
index db2bf8e..5e04eb8 100644
--- a/bundles/org.eclipse.ui.ide.application/src/org/eclipse/ui/internal/ide/application/IDEWorkbenchAdvisor.java
+++ b/bundles/org.eclipse.ui.ide.application/src/org/eclipse/ui/internal/ide/application/IDEWorkbenchAdvisor.java
@@ -235,10 +235,6 @@
 
 	@Override
 	public void preStartup() {
-
-		// Suspend background jobs while we startup
-		Job.getJobManager().suspend();
-
 		// Register the build actions
 		IProgressService service = PlatformUI.getWorkbench()
 				.getProgressService();
@@ -262,7 +258,9 @@
 			initializeSettingsChangeListener();
 			Display.getCurrent().addListener(SWT.Settings,
 					settingsChangeListener);
-		} finally {// Resume background jobs after we startup
+		} finally {
+			// Resume the job manager to allow background jobs to run.
+			// The job manager was suspended by the IDEApplication.start method.
 			Job.getJobManager().resume();
 		}
 	}