From 0ea09956806ebabc4fa17b9f9ddc8963d0bbeff8 Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Tue, 11 Jun 2019 17:17:35 +0200 Subject: [PATCH] Better cancellation of background post-startup activities on project closing (IDEA-CR-48118) GitOrigin-RevId: 4587e674f44f6792e316c26b6f0e5bfb667d9857 --- .../intellij/ide/startup/impl/StartupManagerImpl.java | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/ide/startup/impl/StartupManagerImpl.java b/platform/platform-impl/src/com/intellij/ide/startup/impl/StartupManagerImpl.java index d1e4ffe7b5f2..013fca123558 100644 --- a/platform/platform-impl/src/com/intellij/ide/startup/impl/StartupManagerImpl.java +++ b/platform/platform-impl/src/com/intellij/ide/startup/impl/StartupManagerImpl.java @@ -21,6 +21,7 @@ import com.intellij.openapi.extensions.PluginDescriptor; import com.intellij.openapi.progress.ProcessCanceledException; import com.intellij.openapi.progress.ProgressIndicator; import com.intellij.openapi.progress.ProgressManager; +import com.intellij.openapi.progress.util.BackgroundTaskUtil; import com.intellij.openapi.project.DumbModeTask; import com.intellij.openapi.project.DumbService; import com.intellij.openapi.project.DumbServiceImpl; @@ -446,16 +447,18 @@ public class StartupManagerImpl extends StartupManagerEx implements Disposable { public void scheduleBackgroundPostStartupActivities() { myBackgroundPostStartupScheduledFuture = AppExecutorUtil.getAppScheduledExecutorService().schedule(() -> { - for (StartupActivity activity : StartupActivity.BACKGROUND_POST_STARTUP_ACTIVITY.getIterable()) { - activity.runActivity(myProject); - } + BackgroundTaskUtil.runUnderDisposeAwareIndicator(this, () -> { + for (StartupActivity activity : StartupActivity.BACKGROUND_POST_STARTUP_ACTIVITY.getIterable()) { + activity.runActivity(myProject); + } + }); }, 5, TimeUnit.SECONDS); } @Override public void dispose() { if (myBackgroundPostStartupScheduledFuture != null) { - myBackgroundPostStartupScheduledFuture.cancel(true); + myBackgroundPostStartupScheduledFuture.cancel(false); } }