in src/dotnet/ReSharperPlugin.DotNetDisassembler/AsmViewerHost.cs [60:92]
private void SubscribeToVisibility(Lifetime lifetime, IPsiCachesState psiCachesState, ITextControlManager textControlManager)
{
var isVisible = new Property<bool>("AsmViewerHost.IsVisible");
_model.IsVisible.FlowInto(lifetime, isVisible);
isVisible.WhenTrue(lifetime, visibleLifetime =>
{
_logger.Verbose("ASM Viewer tool window visible");
var compilationLifetimes = new SequentialLifetimes(visibleLifetime);
var compilationTrigger = _shellLocks.CreateGroupingEvent(
visibleLifetime,
"AsmViewerHost.CompilationTrigger",
TimeSpan.FromMilliseconds(300),
() => RequestCompilationAsync(compilationLifetimes).NoAwait());
SubscribeToConfigurationChanges(visibleLifetime, compilationTrigger);
SubscribeToRecompileRequests(visibleLifetime, compilationTrigger);
SubscribeToForceRecompileRequests(visibleLifetime, compilationTrigger);
psiCachesState.IsInitialUpdateFinished.WhenTrue(visibleLifetime, psiReadyLifetime =>
{
SubscribeToTextControlChanges(psiReadyLifetime, textControlManager, compilationTrigger);
});
});
isVisible.WhenFalse(lifetime, _ =>
{
_logger.Verbose("ASM Viewer tool window hidden");
_currentTextControl = null;
});
}