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();
}
}