refactor(app): compose interaction and retained UI startup

This commit is contained in:
Erik 2026-07-22 17:20:47 +02:00
parent f663b04a54
commit aa6ffa5176
15 changed files with 2157 additions and 467 deletions

View file

@ -39,6 +39,12 @@ internal sealed class DeferredRenderFrameDiagnosticsSource
_target = target;
}
public IDisposable BindOwned(IRenderFrameDiagnosticsSnapshotSource target)
{
Bind(target);
return new Binding(this, target);
}
public void Unbind(IRenderFrameDiagnosticsSnapshotSource target)
{
ArgumentNullException.ThrowIfNull(target);
@ -51,6 +57,23 @@ internal sealed class DeferredRenderFrameDiagnosticsSource
_deactivated = true;
_target = null;
}
private sealed class Binding : IDisposable
{
private DeferredRenderFrameDiagnosticsSource? _owner;
private readonly IRenderFrameDiagnosticsSnapshotSource _target;
public Binding(
DeferredRenderFrameDiagnosticsSource owner,
IRenderFrameDiagnosticsSnapshotSource target)
{
_owner = owner;
_target = target;
}
public void Dispose() =>
Interlocked.Exchange(ref _owner, null)?.Unbind(_target);
}
}
internal interface ICanonicalWorldEntityCountSource