50 lines
2.0 KiB
Swift
50 lines
2.0 KiB
Swift
import AppKit
|
|
import CodexBarCore
|
|
|
|
extension StatusItemController {
|
|
func trimRebuildableCachesForMemoryPressure() -> MemoryPressureCacheTrimSummary {
|
|
let mergedSwitcherSelectionCount = self.mergedSwitcherContentCaches.values.reduce(0) { total, entries in
|
|
total + entries.count
|
|
}
|
|
let summary = MemoryPressureCacheTrimSummary(
|
|
menuCardHeights: self.menuCardHeightCache.count,
|
|
menuWidths: self.measuredStandardMenuWidthCache.count,
|
|
mergedSwitcherSelections: mergedSwitcherSelectionCount,
|
|
recycledMenuCardViews: self.menuCardViewRecyclePool.count)
|
|
|
|
self.menuCardHeightCache.removeAll(keepingCapacity: false)
|
|
self.measuredStandardMenuWidthCache.removeAll(keepingCapacity: false)
|
|
self.mergedSwitcherContentCaches.removeAll(keepingCapacity: false)
|
|
self.menuCardViewRecyclePool.removeAll(keepingCapacity: false)
|
|
|
|
return summary
|
|
}
|
|
|
|
#if DEBUG
|
|
func seedRebuildableCachesForMemoryPressureProof() {
|
|
let menu = NSMenu()
|
|
let cacheEntry = CachedMergedSwitcherMenuContent(
|
|
requiredMenuContentVersion: self.menuSession.contentVersion,
|
|
menuWidth: 300,
|
|
codexAccountDisplay: nil,
|
|
tokenAccountDisplay: nil,
|
|
localizationSignature: self.menuLocalizationSignature(),
|
|
items: [])
|
|
self.menuCardHeightCache[
|
|
MenuCardHeightCacheKey(
|
|
id: "debug-memory-pressure-card",
|
|
scope: UsageProvider.codex.rawValue,
|
|
width: 30000,
|
|
textScale: Self.menuCardHeightTextScaleToken(),
|
|
fingerprint: "debug-memory-pressure"),
|
|
] = 44
|
|
self.measuredStandardMenuWidthCache["debug-memory-pressure-width"] = 300
|
|
self.mergedSwitcherContentCaches[ObjectIdentifier(menu)] = [
|
|
.overview: cacheEntry,
|
|
.provider(.codex): cacheEntry,
|
|
]
|
|
self.menuCardViewRecyclePool["debug-memory-pressure-card"] = NSView()
|
|
}
|
|
#endif
|
|
}
|