diff --git a/core/src/commonMain/kotlin/world/phantasmal/core/disposable/TrackedDisposable.kt b/core/src/commonMain/kotlin/world/phantasmal/core/disposable/TrackedDisposable.kt index 06f112c7..4ec5a244 100644 --- a/core/src/commonMain/kotlin/world/phantasmal/core/disposable/TrackedDisposable.kt +++ b/core/src/commonMain/kotlin/world/phantasmal/core/disposable/TrackedDisposable.kt @@ -9,22 +9,14 @@ abstract class TrackedDisposable : Disposable { private set init { - disposableCount++ - - if (trackPrecise) { - @Suppress("LeakingThis") - disposables.add(this) - } + @Suppress("LeakingThis") + track(this) } override fun dispose() { if (!disposed) { disposed = true - disposableCount-- - - if (trackPrecise) { - disposables.remove(this) - } + untrack(this) } } @@ -53,6 +45,22 @@ abstract class TrackedDisposable : Disposable { } } + fun track(disposable: Disposable) { + disposableCount++ + + if (trackPrecise) { + disposables.add(disposable) + } + } + + fun untrack(disposable: Disposable) { + disposableCount-- + + if (trackPrecise) { + disposables.remove(disposable) + } + } + fun checkLeakCountZero(leakCount: Int) { check(leakCount == 0) { buildString {