diff --git a/Aerial.xcodeproj/project.pbxproj b/Aerial.xcodeproj/project.pbxproj index e62ac4c2..ffa11ca1 100644 --- a/Aerial.xcodeproj/project.pbxproj +++ b/Aerial.xcodeproj/project.pbxproj @@ -3241,7 +3241,7 @@ CODE_SIGN_IDENTITY = "Developer ID Application"; CODE_SIGN_STYLE = Manual; COMBINE_HIDPI_IMAGES = YES; - CURRENT_PROJECT_VERSION = 3.2.7beta6a2; + CURRENT_PROJECT_VERSION = 3.2.7beta7a1; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = 3L54M5L5KK; ENABLE_HARDENED_RUNTIME = YES; @@ -3249,7 +3249,7 @@ INSTALL_PATH = "$(HOME)/Library/Screen Savers"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks"; MACOSX_DEPLOYMENT_TARGET = 10.13; - MARKETING_VERSION = 3.2.7beta6a2; + MARKETING_VERSION = 3.2.7beta7a1; PRODUCT_BUNDLE_IDENTIFIER = com.johncoates.Aerial; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; @@ -3270,7 +3270,7 @@ CODE_SIGN_IDENTITY = "Developer ID Application"; CODE_SIGN_STYLE = Manual; COMBINE_HIDPI_IMAGES = YES; - CURRENT_PROJECT_VERSION = 3.2.7beta6a2; + CURRENT_PROJECT_VERSION = 3.2.7beta7a1; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = 3L54M5L5KK; ENABLE_HARDENED_RUNTIME = YES; @@ -3278,7 +3278,7 @@ INSTALL_PATH = "$(HOME)/Library/Screen Savers"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks"; MACOSX_DEPLOYMENT_TARGET = 10.13; - MARKETING_VERSION = 3.2.7beta6a2; + MARKETING_VERSION = 3.2.7beta7a1; OTHER_CODE_SIGN_FLAGS = "--timestamp"; PRODUCT_BUNDLE_IDENTIFIER = com.johncoates.Aerial; PRODUCT_NAME = "$(TARGET_NAME)"; diff --git a/Aerial/Source/Models/Sources/Source.swift b/Aerial/Source/Models/Sources/Source.swift index 2ff6d8a6..14d9fb5e 100644 --- a/Aerial/Source/Models/Sources/Source.swift +++ b/Aerial/Source/Models/Sources/Source.swift @@ -277,7 +277,7 @@ struct Source: Codable { if let mergename = poiStringProvider.getCommunityName(id: asset.id) { return mergename } else { - return asset.title ?? "" + return asset.title ?? "Unknown" } } diff --git a/Aerial/Source/Models/Sources/VideoList.swift b/Aerial/Source/Models/Sources/VideoList.swift index b6bda0f1..567fd3f8 100644 --- a/Aerial/Source/Models/Sources/VideoList.swift +++ b/Aerial/Source/Models/Sources/VideoList.swift @@ -178,16 +178,6 @@ class VideoList { } } - /*print("Filters :") - for filter in filters { - print(filter) - }*/ - - /*print("Videos : ") - for video in videos { - print(video.name.lowercased()) - }*/ - switch mode { case .location: let vids = videos @@ -419,6 +409,7 @@ class VideoList { .filter({ PrefsVideos.favorites.contains($0.id) && !PrefsVideos.hidden.contains($0.id) }) .sorted { $0.secondaryName < $1.secondaryName } default: + print(PrefsVideos.newShouldPlayString) return filteredVideosFor(mode, filter: PrefsVideos.newShouldPlayString) } } diff --git a/Aerial/Source/Views/AerialView+Player.swift b/Aerial/Source/Views/AerialView+Player.swift index efdc82cd..91e71b64 100644 --- a/Aerial/Source/Views/AerialView+Player.swift +++ b/Aerial/Source/Views/AerialView+Player.swift @@ -41,6 +41,8 @@ extension AerialView { if PrefsDisplays.viewingMode == .spanned && !isPreview { let zRect = displayDetection.getZeroedActiveSpannedRect() //let screen = displayDetection.findScreenWith(frame: self.frame) + debugLog("foundScreen check : \(foundScreen.debugDescription)") + if let scr = foundScreen { let tRect = CGRect(x: zRect.origin.x - scr.zeroedOrigin.x, y: zRect.origin.y - scr.zeroedOrigin.y, diff --git a/Aerial/Source/Views/AerialView.swift b/Aerial/Source/Views/AerialView.swift index 93d75367..76734b72 100644 --- a/Aerial/Source/Views/AerialView.swift +++ b/Aerial/Source/Views/AerialView.swift @@ -147,7 +147,15 @@ final class AerialView: ScreenSaverView, CAAnimationDelegate { if Aerial.helper.underCompanion && isPreview { debugLog("Running under companion in preview mode, preventing setup") } else { - setup() + // We need to delay things under Sonoma because legacyScreenSaver is awesome + if #available(macOS 14.0, *) { + DispatchQueue.main.asyncAfter(deadline: .now() + 0.01) { + debugLog("🖼️ AVinit delayed setup!") + self.setup() + } + } else { + setup() + } } } @@ -171,7 +179,16 @@ final class AerialView: ScreenSaverView, CAAnimationDelegate { self.originalHeight = frame.height debugLog("🖼️ AVinit .app") - setup() + + // We need to delay things under Sonoma because legacyScreenSaver is awesome + if #available(macOS 14.0, *) { + DispatchQueue.main.asyncAfter(deadline: .now() + 0.01) { + debugLog("🖼️ AVinit delayed setup!") + self.setup() + } + } else { + setup() + } } deinit { @@ -198,7 +215,6 @@ final class AerialView: ScreenSaverView, CAAnimationDelegate { // swiftlint:disable:next cyclomatic_complexity func setup() { // Disable HDR only on macOS Ventura - // Todo : This may cause the can't reopen settings bug ? if !Aerial.helper.canHDR() { if isPreview && (PrefsVideos.videoFormat == .v4KHDR || PrefsVideos.videoFormat == .v1080pHDR) { // This will lead to crashing in up to Ventura beta5 so disable @@ -211,16 +227,17 @@ final class AerialView: ScreenSaverView, CAAnimationDelegate { return } } - // First we check the system appearance, as it relies on our view Aerial.helper.computeDarkMode(view: self) // Then check if we need to mute/unmute sound Aerial.helper.maybeMuteSound() - + + // Kick up the timezone detection _ = TimeManagement.sharedInstance + // This is to make sure we don't start in a format that's unsupported ensureCorrectFormat() if let version = Bundle(identifier: "com.JohnCoates.Aerial")?.infoDictionary?["CFBundleShortVersionString"] as? String { @@ -261,11 +278,9 @@ final class AerialView: ScreenSaverView, CAAnimationDelegate { let screenCount = displayDetection.getScreenCount() debugLog("🖼️ Real screen count : \(screenCount)") - debugLog("🥬 window \(String(describing: self.window))") - var thisScreen: Screen? = nil if #available(macOS 14.0, *) { - thisScreen = displayDetection.alternateFindScreenWith(frame: self.frame, backingScaleFactor: self.window?.backingScaleFactor ?? 1) + //thisScreen = displayDetection.alternateFindScreenWith(frame: self.frame, backingScaleFactor: self.window?.backingScaleFactor ?? 1) } else { thisScreen = displayDetection.findScreenWith(frame: self.frame) } @@ -274,13 +289,14 @@ final class AerialView: ScreenSaverView, CAAnimationDelegate { if let thisScreen = thisScreen { foundFrame = thisScreen.bottomLeftFrame foundScreen = thisScreen + debugLog("🖼️ Using : \(String(describing: thisScreen))") } - + for twindow in NSApplication.shared.windows { + debugLog("window : \(twindow.debugDescription)") + } + var localPlayer: AVPlayer? - debugLog("🖼️ Using : \(String(describing: thisScreen))") - - debugLog("🥬 window.screen \(String(describing: self.window?.screen))") // Is the current screen disabled by user ? if !isPreview { @@ -325,7 +341,7 @@ final class AerialView: ScreenSaverView, CAAnimationDelegate { // add to player list AerialView.players.append(player) } - + setupPlayerLayer(withPlayer: player) // In mirror mode we use the main instance player @@ -356,6 +372,25 @@ final class AerialView: ScreenSaverView, CAAnimationDelegate { } } } + + + override func viewDidMoveToWindow() { + super.viewDidMoveToWindow() + debugLog("🖼️ \(self.description) viewDidMoveToWindow frame: \(self.frame) window: \(self.window)") + debugLog(self.window?.screen.debugDescription ?? "Unknown") + + if let thisScreen = self.window?.screen { + let screenID = thisScreen.deviceDescription[NSDeviceDescriptionKey("NSScreenNumber")] as! CGDirectDisplayID + + debugLog(screenID.description) + + foundScreen = DisplayDetection.sharedInstance.findScreenWith(id: screenID) + foundFrame = foundScreen?.bottomLeftFrame + + debugLog("🖼️🌾 Using : \(String(describing: foundScreen))") + debugLog("🥬🌾 window.screen \(String(describing: self.window?.screen.debugDescription))") + } + } // Handle window resize override func viewDidEndLiveResize() {