diff --git a/platform/ijent/impl/src/com/intellij/platform/ijent/community/impl/IjentFailSafeFileSystemPosixApi.kt b/platform/ijent/impl/src/com/intellij/platform/ijent/community/impl/IjentFailSafeFileSystemPosixApi.kt index bf5796759391..03187550958f 100644 --- a/platform/ijent/impl/src/com/intellij/platform/ijent/community/impl/IjentFailSafeFileSystemPosixApi.kt +++ b/platform/ijent/impl/src/com/intellij/platform/ijent/community/impl/IjentFailSafeFileSystemPosixApi.kt @@ -38,15 +38,15 @@ import java.util.concurrent.atomic.AtomicReference @Suppress("FunctionName") fun IjentFailSafeFileSystemPosixApi( coroutineScope: CoroutineScope, - delegateFactory: suspend () -> IjentPosixApi, + descriptor: EelDescriptor, ): IjentFileSystemApi { - val holder = DelegateHolder(coroutineScope, delegateFactory) - return IjentFailSafeFileSystemPosixApiImpl(holder) + val holder = DelegateHolder(coroutineScope, descriptor) + return IjentFailSafeFileSystemPosixApiImpl(holder, descriptor) } private class DelegateHolder( private val coroutineScope: CoroutineScope, - private val delegateFactory: suspend () -> I, + private val descriptor: EelDescriptor ) { private val delegate = AtomicReference?>(null) @@ -63,7 +63,8 @@ private class DelegateHolder( oldDelegate else coroutineScope.async(Dispatchers.IO, start = CoroutineStart.LAZY) { - delegateFactory() + @Suppress("UNCHECKED_CAST") + descriptor.toEelApi() as I } }!! @@ -100,6 +101,7 @@ private class DelegateHolder( */ private class IjentFailSafeFileSystemPosixApiImpl( private val holder: DelegateHolder, + override val descriptor: EelDescriptor ) : IjentFileSystemPosixApi { // TODO Make user suspendable again? override val user: EelUserPosixInfo by lazy { @@ -108,13 +110,6 @@ private class IjentFailSafeFileSystemPosixApiImpl( } } - override val descriptor: EelDescriptor by lazy { - runBlocking { - holder.withDelegateRetrying { descriptor } - } - } - - override suspend fun listDirectory( path: EelPath, ): EelResult, EelFileSystemApi.ListDirectoryError> = diff --git a/platform/platform-impl/eel/src/com/intellij/platform/ide/impl/wsl/ijent/nio/toggle/IjentWslNioFsToggleStrategy.kt b/platform/platform-impl/eel/src/com/intellij/platform/ide/impl/wsl/ijent/nio/toggle/IjentWslNioFsToggleStrategy.kt index a79b84fa22b2..8dbcb497f605 100644 --- a/platform/platform-impl/eel/src/com/intellij/platform/ide/impl/wsl/ijent/nio/toggle/IjentWslNioFsToggleStrategy.kt +++ b/platform/platform-impl/eel/src/com/intellij/platform/ide/impl/wsl/ijent/nio/toggle/IjentWslNioFsToggleStrategy.kt @@ -3,7 +3,6 @@ package com.intellij.platform.ide.impl.wsl.ijent.nio.toggle import com.intellij.execution.wsl.WSLDistribution import com.intellij.execution.wsl.WslDistributionManager -import com.intellij.execution.wsl.WslIjentManager import com.intellij.openapi.diagnostic.logger import com.intellij.platform.eel.provider.EelNioBridgeService import com.intellij.platform.ide.impl.wsl.ijent.nio.IjentWslNioFileSystemProvider @@ -74,9 +73,8 @@ class IjentWslNioFsToggleStrategy( fun switchToIjentFs(distro: WSLDistribution) { val ijentFsProvider = TracingFileSystemProvider(IjentNioFileSystemProvider.getInstance()) try { - val ijentFs = IjentFailSafeFileSystemPosixApi(coroutineScope) { - WslIjentManager.instanceAsync().getIjentApi(distro, null, false) - } + val distributionId = distro.id + val ijentFs = IjentFailSafeFileSystemPosixApi(coroutineScope, WslEelDescriptor(WSLDistribution(distributionId))) ijentFsProvider.newFileSystem( URI("ijent", "wsl", "/${distro.id}", null, null), IjentNioFileSystemProvider.newFileSystemMap(ijentFs), diff --git a/platform/platform-impl/src/com/intellij/ide/RecentProjectIconHelper.kt b/platform/platform-impl/src/com/intellij/ide/RecentProjectIconHelper.kt index db6e50000fc3..7eb861eec753 100644 --- a/platform/platform-impl/src/com/intellij/ide/RecentProjectIconHelper.kt +++ b/platform/platform-impl/src/com/intellij/ide/RecentProjectIconHelper.kt @@ -7,6 +7,8 @@ import com.intellij.openapi.diagnostic.logger import com.intellij.openapi.project.Project import com.intellij.openapi.project.ProjectStorePathManager import com.intellij.openapi.util.registry.Registry +import com.intellij.platform.eel.provider.LocalEelDescriptor +import com.intellij.platform.eel.provider.getEelDescriptor import com.intellij.ui.IconDeferrer import com.intellij.ui.JBColor import com.intellij.ui.LayeredIcon @@ -34,6 +36,7 @@ import java.nio.file.attribute.BasicFileAttributes import java.util.* import java.util.concurrent.atomic.AtomicInteger import javax.swing.Icon +import kotlin.io.path.Path @Internal fun unscaledProjectIconSize(): Int = Registry.intValue("ide.project.icon.size", 20) @@ -216,6 +219,14 @@ private fun getCustomIconFileInfo(path: @SystemIndependent String): Pair