From fc6ee7f9eef9d81a72e196c2f995237641df34d8 Mon Sep 17 00:00:00 2001 From: peter Date: Wed, 24 May 2017 20:25:38 +0200 Subject: [PATCH] calculate run configuration icons without very expensive resolve during indexing, don't mark them as invalid if it haven't succeeded --- .../intellij/execution/impl/TimedIconCache.kt | 37 +++++++------------ 1 file changed, 14 insertions(+), 23 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/execution/impl/TimedIconCache.kt b/platform/lang-impl/src/com/intellij/execution/impl/TimedIconCache.kt index 8c4f75753c13..667dae06697a 100644 --- a/platform/lang-impl/src/com/intellij/execution/impl/TimedIconCache.kt +++ b/platform/lang-impl/src/com/intellij/execution/impl/TimedIconCache.kt @@ -63,29 +63,7 @@ class TimedIconCache { val startTime = System.currentTimeMillis() - var icon: Icon - if (DumbService.isDumb(project) && !Registry.`is`("dumb.aware.run.configurations")) { - icon = IconLoader.getDisabledIcon(ProgramRunnerUtil.getRawIcon(settings))!! - if (settings.isTemporary) { - icon = ProgramRunnerUtil.getTemporaryIcon(icon) - } - } - else { - try { - DumbService.getInstance(project).isAlternativeResolveEnabled = true - settings.checkSettings() - icon = ProgramRunnerUtil.getConfigurationIcon(settings, false) - } - catch (e: IndexNotReadyException) { - icon = ProgramRunnerUtil.getConfigurationIcon(settings, !Registry.`is`("dumb.aware.run.configurations")) - } - catch (ignored: RuntimeConfigurationException) { - icon = ProgramRunnerUtil.getConfigurationIcon(settings, true) - } - finally { - DumbService.getInstance(project).isAlternativeResolveEnabled = false - } - } + val icon = calcIcon(settings, project) lock.write { iconCalcTime.put(id, System.currentTimeMillis() - startTime) @@ -99,6 +77,19 @@ class TimedIconCache { } } + private fun calcIcon(settings: RunnerAndConfigurationSettings, project: Project): Icon { + try { + settings.checkSettings() + return ProgramRunnerUtil.getConfigurationIcon(settings, false) + } + catch (e: IndexNotReadyException) { + return ProgramRunnerUtil.getConfigurationIcon(settings, false) + } + catch (ignored: RuntimeConfigurationException) { + return ProgramRunnerUtil.getConfigurationIcon(settings, !DumbService.isDumb(project)) + } + } + private fun set(id: String, icon: Icon) { idToIcon.put(id, icon) iconCheckTimes.put(id, System.currentTimeMillis())