mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-03-22 15:19:59 +07:00
[platform] dropping the old Windows instance activation code (IJPL-442 follow-up)
GitOrigin-RevId: 93951ad2df9b83198cba62ad46cf0c976525d338
This commit is contained in:
committed by
intellij-monorepo-bot
parent
61e15459c5
commit
c8ae02f632
@@ -1,16 +0,0 @@
|
||||
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package com.intellij.ide;
|
||||
|
||||
import com.intellij.platform.ide.bootstrap.StartupUtil;
|
||||
import org.jetbrains.annotations.ApiStatus.Internal;
|
||||
|
||||
/**
|
||||
* <b>NOTE:</b> This method is called through JNI by the Windows launcher. Please do not delete or rename it.
|
||||
*/
|
||||
@SuppressWarnings("unused")
|
||||
@Internal
|
||||
public final class WindowsCommandLineProcessor {
|
||||
public static int processWindowsLauncherCommandLine(String currentDirectory, String[] args) {
|
||||
return StartupUtil.processWindowsLauncherCommandLine(currentDirectory, args);
|
||||
}
|
||||
}
|
||||
@@ -19503,9 +19503,7 @@ f:com.intellij.platform.ide.bootstrap.SplashManagerKt
|
||||
- sf:hideSplash():V
|
||||
- sf:hideSplashBeforeShow(java.awt.Window):V
|
||||
f:com.intellij.platform.ide.bootstrap.StartupUtil
|
||||
- sf:LAUNCHER_INITIAL_DIRECTORY_ENV_VAR:java.lang.String
|
||||
- sf:logEssentialInfoAboutIde(com.intellij.openapi.diagnostic.Logger,com.intellij.openapi.application.ApplicationInfo,java.util.List):V
|
||||
- sf:processWindowsLauncherCommandLine(java.lang.String,java.lang.String[]):I
|
||||
- sf:startApplication(kotlinx.coroutines.CoroutineScope,java.util.List,kotlinx.coroutines.Deferred,java.nio.file.Path,kotlinx.coroutines.Deferred,kotlinx.coroutines.Deferred,kotlinx.coroutines.CoroutineScope,java.lang.Thread):V
|
||||
e:com.intellij.platform.ide.bootstrap.StartupWizardStage
|
||||
- java.lang.Enum
|
||||
|
||||
@@ -20,7 +20,6 @@ import com.intellij.openapi.application.*
|
||||
import com.intellij.openapi.application.ex.ApplicationEx
|
||||
import com.intellij.openapi.application.ex.ApplicationManagerEx
|
||||
import com.intellij.openapi.components.serviceAsync
|
||||
import com.intellij.openapi.diagnostic.Logger
|
||||
import com.intellij.openapi.diagnostic.getOrLogException
|
||||
import com.intellij.openapi.diagnostic.logger
|
||||
import com.intellij.openapi.diagnostic.thisLogger
|
||||
@@ -35,7 +34,6 @@ import com.intellij.openapi.util.text.HtmlChunk
|
||||
import com.intellij.openapi.wm.impl.welcomeScreen.WelcomeFrame
|
||||
import com.intellij.platform.diagnostic.telemetry.impl.span
|
||||
import com.intellij.platform.ide.CoreUiCoroutineScopeHolder
|
||||
import com.intellij.platform.ide.bootstrap.LAUNCHER_INITIAL_DIRECTORY_ENV_VAR
|
||||
import com.intellij.platform.ide.diagnostic.startUpPerformanceReporter.FUSProjectHotStartUpMeasurer
|
||||
import com.intellij.ui.mac.touchbar.TouchbarSupport
|
||||
import com.intellij.ui.updateAppWindowIcon
|
||||
@@ -236,10 +234,7 @@ open class IdeStarter : ModernApplicationStarter() {
|
||||
}
|
||||
|
||||
private suspend fun loadProjectFromExternalCommandLine(commandLineArgs: List<String>): Project? {
|
||||
val currentDirectory = System.getenv(LAUNCHER_INITIAL_DIRECTORY_ENV_VAR)
|
||||
@Suppress("SSBasedInspection")
|
||||
Logger.getInstance("#com.intellij.platform.ide.bootstrap.ApplicationLoader").info("ApplicationLoader.loadProject (cwd=${currentDirectory})")
|
||||
val result = CommandLineProcessor.processExternalCommandLine(commandLineArgs, currentDirectory)
|
||||
val result = CommandLineProcessor.processExternalCommandLine(commandLineArgs, currentDirectory = null)
|
||||
if (result.hasError) {
|
||||
withContext(Dispatchers.EDT) {
|
||||
if (!ApplicationManagerEx.isInIntegrationTest() ||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package com.intellij.openapi.application
|
||||
|
||||
import com.intellij.configurationStore.saveSettings
|
||||
@@ -7,7 +7,6 @@ import com.intellij.openapi.fileEditor.FileDocumentManager
|
||||
import com.intellij.openapi.ui.Messages
|
||||
import com.intellij.openapi.util.NlsContexts
|
||||
import com.intellij.openapi.vfs.VirtualFile
|
||||
import com.intellij.platform.ide.bootstrap.LAUNCHER_INITIAL_DIRECTORY_ENV_VAR
|
||||
import com.intellij.platform.ide.bootstrap.commandNameFromExtension
|
||||
import kotlinx.coroutines.CancellationException
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
@@ -16,9 +15,6 @@ import org.jetbrains.annotations.ApiStatus.Internal
|
||||
import java.util.*
|
||||
import kotlin.system.exitProcess
|
||||
|
||||
/**
|
||||
* @author Konstantin Bulenkov
|
||||
*/
|
||||
@Internal
|
||||
abstract class ApplicationStarterBase protected constructor(private vararg val argsCount: Int) : ModernApplicationStarter() {
|
||||
abstract val usageMessage: @NlsContexts.DialogMessage String?
|
||||
@@ -81,7 +77,7 @@ abstract class ApplicationStarterBase protected constructor(private vararg val a
|
||||
final override suspend fun start(args: List<String>) {
|
||||
try {
|
||||
val exitCode: Int = try {
|
||||
val result = executeCommand(args = args, currentDirectory = System.getenv(LAUNCHER_INITIAL_DIRECTORY_ENV_VAR))
|
||||
val result = executeCommand(args, currentDirectory = null)
|
||||
result.message?.let(::println)
|
||||
result.exitCode
|
||||
}
|
||||
|
||||
@@ -66,7 +66,6 @@ import java.nio.charset.StandardCharsets
|
||||
import java.nio.file.Files
|
||||
import java.nio.file.Path
|
||||
import java.util.concurrent.CancellationException
|
||||
import java.util.function.BiFunction
|
||||
import kotlin.coroutines.jvm.internal.CoroutineDumpState
|
||||
import kotlin.system.exitProcess
|
||||
import kotlin.time.Duration.Companion.minutes
|
||||
@@ -531,27 +530,11 @@ private fun addActivateAndWindowsCliListeners() {
|
||||
}
|
||||
}
|
||||
|
||||
EXTERNAL_LISTENER = BiFunction { currentDirectory, args ->
|
||||
LOG.info("External Windows command received")
|
||||
@Suppress("RAW_RUN_BLOCKING")
|
||||
runBlocking(Dispatchers.Default) {
|
||||
val result = handleExternalCommand(args.asList(), currentDirectory)
|
||||
try {
|
||||
result.future.await().exitCode
|
||||
}
|
||||
catch (t: Throwable) {
|
||||
LOG.error(t)
|
||||
AppExitCodes.ACTIVATE_ERROR
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ApplicationManager.getApplication().messageBus.simpleConnect().subscribe(AppLifecycleListener.TOPIC, object : AppLifecycleListener {
|
||||
override fun appWillBeClosed(isRestart: Boolean) {
|
||||
addExternalInstanceListener {
|
||||
CompletableDeferred(CliResult(AppExitCodes.ACTIVATE_DISPOSING, IdeBundle.message("activation.shutting.down")))
|
||||
}
|
||||
EXTERNAL_LISTENER = BiFunction { _, _ -> AppExitCodes.ACTIVATE_DISPOSING }
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
@@ -3,16 +3,21 @@
|
||||
package com.intellij.platform.ide.bootstrap
|
||||
|
||||
import com.intellij.BundleBase
|
||||
import com.intellij.diagnostic.*
|
||||
import com.intellij.ide.*
|
||||
import com.intellij.ide.bootstrap.*
|
||||
import com.intellij.diagnostic.LoadingState
|
||||
import com.intellij.ide.BootstrapBundle
|
||||
import com.intellij.ide.CliResult
|
||||
import com.intellij.ide.IdeBundle
|
||||
import com.intellij.ide.bootstrap.InitAppContext
|
||||
import com.intellij.ide.plugins.PluginManagerCore
|
||||
import com.intellij.idea.*
|
||||
import com.intellij.idea.AppExitCodes
|
||||
import com.intellij.idea.AppMode
|
||||
import com.intellij.idea.LoggerFactory
|
||||
import com.intellij.jna.JnaLoader
|
||||
import com.intellij.openapi.application.*
|
||||
import com.intellij.openapi.application.ex.ApplicationInfoEx
|
||||
import com.intellij.openapi.application.ex.ApplicationManagerEx
|
||||
import com.intellij.openapi.application.impl.*
|
||||
import com.intellij.openapi.application.impl.ApplicationImpl
|
||||
import com.intellij.openapi.application.impl.ApplicationInfoImpl
|
||||
import com.intellij.openapi.diagnostic.Logger
|
||||
import com.intellij.openapi.diagnostic.getOrLogException
|
||||
import com.intellij.openapi.diagnostic.logger
|
||||
@@ -25,7 +30,8 @@ import com.intellij.ui.mac.initMacApplication
|
||||
import com.intellij.ui.mac.screenmenu.Menu
|
||||
import com.intellij.ui.scale.JBUIScale
|
||||
import com.intellij.ui.svg.SvgCacheManager
|
||||
import com.intellij.util.*
|
||||
import com.intellij.util.EnvironmentUtil
|
||||
import com.intellij.util.Java11Shim
|
||||
import com.intellij.util.lang.ZipFilePool
|
||||
import com.jetbrains.JBR
|
||||
import kotlinx.coroutines.*
|
||||
@@ -39,10 +45,9 @@ import java.nio.file.Path
|
||||
import java.nio.file.StandardOpenOption
|
||||
import java.time.format.DateTimeFormatter
|
||||
import java.util.*
|
||||
import java.util.concurrent.*
|
||||
import java.util.concurrent.ForkJoinPool
|
||||
import java.util.concurrent.atomic.AtomicReference
|
||||
import java.util.function.BiConsumer
|
||||
import java.util.function.BiFunction
|
||||
import java.util.logging.ConsoleHandler
|
||||
import java.util.logging.Level
|
||||
import kotlin.system.exitProcess
|
||||
@@ -50,18 +55,6 @@ import kotlin.system.exitProcess
|
||||
internal const val IDE_STARTED: String = "------------------------------------------------------ IDE STARTED ------------------------------------------------------"
|
||||
private const val IDE_SHUTDOWN = "------------------------------------------------------ IDE SHUTDOWN ------------------------------------------------------"
|
||||
|
||||
/**
|
||||
* A name of an environment variable that will be set by the Windows launcher and will contain the working directory the
|
||||
* IDE was started with.
|
||||
*
|
||||
* This is necessary on Windows because the launcher needs to change the current directory for the JVM to load
|
||||
* properly; see the details in WindowsLauncher.cpp.
|
||||
*/
|
||||
const val LAUNCHER_INITIAL_DIRECTORY_ENV_VAR: String = "IDEA_INITIAL_DIRECTORY"
|
||||
|
||||
@JvmField
|
||||
internal var EXTERNAL_LISTENER: BiFunction<String, Array<String>, Int> = BiFunction { _, _ -> AppExitCodes.ACTIVATE_NOT_INITIALIZED }
|
||||
|
||||
private const val IDEA_CLASS_BEFORE_APPLICATION_PROPERTY = "idea.class.before.app"
|
||||
private const val DISABLE_IMPLICIT_READ_ON_EDT_PROPERTY = "idea.disable.implicit.read.on.edt"
|
||||
private const val MAGIC_MAC_PATH = "/AppTranslocation/"
|
||||
@@ -367,10 +360,6 @@ private fun CoroutineScope.scheduleLoadSystemLibsAndLogInfoAndInitMacApp(
|
||||
}
|
||||
}
|
||||
|
||||
fun processWindowsLauncherCommandLine(currentDirectory: String, args: Array<String>): Int {
|
||||
return EXTERNAL_LISTENER.apply(currentDirectory, args)
|
||||
}
|
||||
|
||||
@get:Internal
|
||||
val isImplicitReadOnEDTDisabled: Boolean
|
||||
get() = "false" != System.getProperty(DISABLE_IMPLICIT_READ_ON_EDT_PROPERTY)
|
||||
@@ -496,7 +485,7 @@ private suspend fun lockSystemDirs(args: List<String>) {
|
||||
}
|
||||
|
||||
try {
|
||||
val currentDir = Path.of(System.getenv(LAUNCHER_INITIAL_DIRECTORY_ENV_VAR) ?: "").toAbsolutePath().normalize()
|
||||
val currentDir = Path.of("").toAbsolutePath().normalize()
|
||||
val result = withContext(Dispatchers.IO) { directoryLock.lockOrActivate(currentDir, args) }
|
||||
if (result == null) {
|
||||
ShutDownTracker.getInstance().registerShutdownTask {
|
||||
|
||||
Reference in New Issue
Block a user