From ee8e8a5e9c82b262f1c5c47aebccc676b434abef Mon Sep 17 00:00:00 2001 From: Arseny Chernyaev Date: Mon, 11 Mar 2024 22:50:42 +0100 Subject: [PATCH] only allow one inline breakpoint redraw job at a time (fixed RIDER-106989) (cherry picked from commit 68232d669f59453f05dd9b1cf47f657a0406d220) NET-MR-13719 GitOrigin-RevId: 53d800df24dfea8f8f49785e270cf54eaccc67c2 --- .../impl/breakpoints/InlineBreakpointInlayManager.kt | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/InlineBreakpointInlayManager.kt b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/InlineBreakpointInlayManager.kt index 245d27f28b24..45703b212ca1 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/InlineBreakpointInlayManager.kt +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/InlineBreakpointInlayManager.kt @@ -19,6 +19,7 @@ import com.intellij.openapi.util.registry.Registry import com.intellij.openapi.util.registry.RegistryValue import com.intellij.openapi.util.registry.RegistryValueListener import com.intellij.openapi.vfs.VirtualFile +import com.intellij.platform.util.coroutines.namedChildScope import com.intellij.psi.PsiDocumentManager import com.intellij.util.DocumentUtil import com.intellij.util.concurrency.annotations.RequiresReadLock @@ -32,11 +33,16 @@ import com.intellij.xdebugger.breakpoints.* import com.intellij.xdebugger.impl.XDebuggerUtilImpl import com.intellij.xdebugger.impl.XSourcePositionImpl import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.launch import java.util.concurrent.atomic.AtomicLong @Service(Service.Level.PROJECT) -internal class InlineBreakpointInlayManager(private val project: Project, private val scope: CoroutineScope) { +internal class InlineBreakpointInlayManager(private val project: Project, parentScope: CoroutineScope) { + + @OptIn(ExperimentalCoroutinesApi::class) + private val scope = parentScope.namedChildScope("InlineBreakpoints", Dispatchers.Default.limitedParallelism(1)) private val redrawQueue = MergingUpdateQueue( "inline breakpoint inlay redraw queue",