From 4c935e1ed50981ad852bd3b041ea610ccc75c3e1 Mon Sep 17 00:00:00 2001 From: Egor Ushakov Date: Mon, 15 Jun 2020 15:46:58 +0300 Subject: [PATCH] EA-133948 - CME: Intrinsics.areEqual GitOrigin-RevId: b19c866fa8a270b8679ee17f98714318140ae9d6 --- .../execution/AlternativeSdkRootsProvider.kt | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/java/execution/impl/src/com/intellij/execution/AlternativeSdkRootsProvider.kt b/java/execution/impl/src/com/intellij/execution/AlternativeSdkRootsProvider.kt index 97e3c661029c..aa2164618758 100644 --- a/java/execution/impl/src/com/intellij/execution/AlternativeSdkRootsProvider.kt +++ b/java/execution/impl/src/com/intellij/execution/AlternativeSdkRootsProvider.kt @@ -12,6 +12,7 @@ import com.intellij.openapi.roots.OrderRootType import com.intellij.openapi.roots.SyntheticLibrary import com.intellij.openapi.roots.ex.ProjectRootManagerEx import com.intellij.openapi.util.EmptyRunnable +import com.intellij.openapi.util.Key import com.intellij.openapi.util.registry.Registry import com.intellij.openapi.vfs.VirtualFile import com.intellij.ui.AppUIUtil @@ -40,16 +41,21 @@ class AlternativeSdkRootsProvider : AdditionalLibraryRootsProvider() { } companion object { - private val storedLibs = mutableListOf() + private val ALTERNATIVE_SDK_LIBS_KEY = Key.create>("ALTERNATIVE_SDK_LIBS_KEY") @JvmStatic fun reindexIfNeeded(project: Project) { if (!Registry.`is`("index.run.configuration.jre")) return - val provider = AdditionalLibraryRootsProvider.EP_NAME.findExtension(AlternativeSdkRootsProvider::class.java)!! + val provider = EP_NAME.findExtension(AlternativeSdkRootsProvider::class.java)!! val additionalProjectLibraries = provider.getAdditionalProjectLibraries(project) - if (additionalProjectLibraries != storedLibs) { - storedLibs.clear() - storedLibs.addAll(additionalProjectLibraries) + val update = synchronized(ALTERNATIVE_SDK_LIBS_KEY) { + val res = additionalProjectLibraries != project.getUserData(ALTERNATIVE_SDK_LIBS_KEY) + if (res) { + project.putUserData(ALTERNATIVE_SDK_LIBS_KEY, additionalProjectLibraries) + } + res + } + if (update) { AppUIUtil.invokeOnEdt { WriteAction.run { ProjectRootManagerEx.getInstanceEx(project).makeRootsChange(EmptyRunnable.getInstance(), false, true)