| | |
| | | ] |
| | | } |
| | | |
| | | func performanceDiagnosticSummary() -> [String: Any] { |
| | | let applications = currentSnapshot?.appGroups.map { group in |
| | | [ |
| | | "name": group.app.name, |
| | | "bundleIdentifier": group.app.bundleIdentifier, |
| | | "processIdentifier": group.app.processIdentifier ?? NSNull(), |
| | | "windowCount": group.windows.count, |
| | | "minimizedWindowCount": group.windows.filter { $0.window.isMinimized }.count, |
| | | "fullscreenWindowCount": group.windows.filter { $0.window.isFullscreen }.count |
| | | ] as [String: Any] |
| | | } ?? [] |
| | | |
| | | return [ |
| | | "snapshotLoaded": currentSnapshot != nil, |
| | | "snapshotError": lastSnapshotError ?? NSNull(), |
| | | "quickSwitchVisible": isVisible, |
| | | "displayCount": currentSnapshot?.displays.count ?? 0, |
| | | "spaceCount": currentSnapshot?.displays.flatMap(\.spaces).count ?? 0, |
| | | "applicationCount": applications.count, |
| | | "windowCount": currentSnapshot?.appGroups.flatMap(\.windows).count ?? 0, |
| | | "applications": applications, |
| | | "timingsMilliseconds": [ |
| | | "overlayOpen": overlayOpenElapsedMilliseconds ?? NSNull(), |
| | | "snapshotStart": snapshotStartElapsedMilliseconds ?? NSNull(), |
| | | "snapshot": snapshotDurationMilliseconds ?? NSNull(), |
| | | "lastActivation": lastActivationDurationMilliseconds ?? NSNull() |
| | | ] as [String: Any], |
| | | "snapshotRanOnMainThread": snapshotRanOnMainThread ?? NSNull(), |
| | | "lastActivationResult": lastActivationResult.map(Self.activationResultString) ?? NSNull(), |
| | | "lastActivationError": lastActivationError ?? NSNull(), |
| | | "lastDismissReason": lastDismissReason.map(Self.dismissReasonString) ?? NSNull() |
| | | ] |
| | | } |
| | | |
| | | func prepareLifecycleRun(targetCycles: Int) { |
| | | lifecycleTargetCycles = max(0, targetCycles) |
| | | lifecycleCompletedCycles = 0 |