Build Information
Successful build of KSPlayer, reference 2.3.4 (bdfa2d), with Swift 6.4 for macOS (Xcode) using Xcode 27.0 on 21 Sep 2026 22:02:32 UTC.
Swift 6 data race errors: 0
Build Command
env DEVELOPER_DIR=/Applications/Xcode-27.0.0-Release.Candidate.app xcrun xcodebuild -IDEClonedSourcePackagesDirPathOverride=$PWD/.dependencies -skipMacroValidation -skipPackagePluginValidation -derivedDataPath $PWD/.derivedData build -scheme KSPlayer -destination platform=macOS,arch=arm64Build Log
:
367 | }
368 | Task { @MainActor in
369 | try? await dataSouce.searchSubtitle(query: query, languages: languages)
| |- warning: sending 'dataSouce' risks causing data races; this is an error in the Swift 6 language mode [#RegionIsolation::SendingRisksDataRace]
| `- note: 'dataSouce' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against code in the current isolation context
370 | subtitleInfos.append(contentsOf: dataSouce.infos)
371 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Subtitle/KSSubtitle.swift:370:21: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode [#RegionIsolation::SendingRisksDataRace]
358 | }
359 |
360 | public func searchSubtitle(query: String?, languages: [String]) {
| `- note: isolated conformance to protocol 'SearchSubtitleDataSouce' can be introduced here
361 | for dataSouce in subtitleDataSouces {
362 | if let dataSouce = dataSouce as? SearchSubtitleDataSouce {
:
368 | Task { @MainActor in
369 | try? await dataSouce.searchSubtitle(query: query, languages: languages)
370 | subtitleInfos.append(contentsOf: dataSouce.infos)
| |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode [#RegionIsolation::SendingRisksDataRace]
| `- note: 'self' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against code in the current isolation context
371 | }
372 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Subtitle/KSSubtitle.swift:379:38: warning: sending 'dataSouce' risks causing data races; this is an error in the Swift 6 language mode [#RegionIsolation::SendingRisksDataRace]
374 | }
375 |
376 | public func addSubtitle(dataSouce: SubtitleDataSouce) {
| `- note: isolated conformance to protocol 'FileURLSubtitleDataSouce' can be introduced here
377 | if let dataSouce = dataSouce as? FileURLSubtitleDataSouce {
378 | Task { @MainActor in
379 | try? await dataSouce.searchSubtitle(fileURL: url)
| |- warning: sending 'dataSouce' risks causing data races; this is an error in the Swift 6 language mode [#RegionIsolation::SendingRisksDataRace]
| `- note: 'dataSouce' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against code in the current isolation context
380 | subtitleInfos.append(contentsOf: dataSouce.infos)
381 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Subtitle/KSSubtitle.swift:379:62: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode [#RegionIsolation::SendingRisksDataRace]
374 | }
375 |
376 | public func addSubtitle(dataSouce: SubtitleDataSouce) {
| `- note: isolated conformance to protocol 'FileURLSubtitleDataSouce' can be introduced here
377 | if let dataSouce = dataSouce as? FileURLSubtitleDataSouce {
378 | Task { @MainActor in
379 | try? await dataSouce.searchSubtitle(fileURL: url)
| |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode [#RegionIsolation::SendingRisksDataRace]
| `- note: 'self' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against code in the current isolation context
380 | subtitleInfos.append(contentsOf: dataSouce.infos)
381 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Subtitle/KSSubtitle.swift:309:21: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode [#RegionIsolation::SendingRisksDataRace]
307 | // 要用async,不能在更新UI的时候,修改Publishe变量
308 | DispatchQueue.main.async { [weak self] in
309 | self?.parts = []
| |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode [#RegionIsolation::SendingRisksDataRace]
| `- note: 'self' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against code in the current isolation context
310 | self?.selectedSubtitleInfo = nil
311 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Subtitle/KSSubtitle.swift:369:42: warning: sending value of non-Sendable type 'any SearchSubtitleDataSouce' risks causing data races; this is an error in the Swift 6 language mode [#RegionIsolation::SendingRisksDataRace]
367 | }
368 | Task { @MainActor in
369 | try? await dataSouce.searchSubtitle(query: query, languages: languages)
| |- warning: sending value of non-Sendable type 'any SearchSubtitleDataSouce' risks causing data races; this is an error in the Swift 6 language mode [#RegionIsolation::SendingRisksDataRace]
| `- note: sending main actor-isolated value of non-Sendable type 'any SearchSubtitleDataSouce' to @concurrent instance method 'searchSubtitle(query:languages:)' risks causing races in between main actor-isolated and @concurrent uses
370 | subtitleInfos.append(contentsOf: dataSouce.infos)
371 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Subtitle/KSSubtitle.swift:379:38: warning: sending value of non-Sendable type 'any FileURLSubtitleDataSouce' risks causing data races; this is an error in the Swift 6 language mode [#RegionIsolation::SendingRisksDataRace]
377 | if let dataSouce = dataSouce as? FileURLSubtitleDataSouce {
378 | Task { @MainActor in
379 | try? await dataSouce.searchSubtitle(fileURL: url)
| |- warning: sending value of non-Sendable type 'any FileURLSubtitleDataSouce' risks causing data races; this is an error in the Swift 6 language mode [#RegionIsolation::SendingRisksDataRace]
| `- note: sending main actor-isolated value of non-Sendable type 'any FileURLSubtitleDataSouce' to @concurrent instance method 'searchSubtitle(fileURL:)' risks causing races in between main actor-isolated and @concurrent uses
380 | subtitleInfos.append(contentsOf: dataSouce.infos)
381 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Subtitle/SubtitleDataSouce.swift:23:17: warning: passing closure as a 'sending' parameter risks causing data races between code in the current isolation context and concurrent execution of the closure; this is an error in the Swift 6 language mode [#RegionIsolation::SendingClosureRisksDataRace]
21 | didSet {
22 | if isEnabled, parts.isEmpty {
23 | Task {
| `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current isolation context and concurrent execution of the closure; this is an error in the Swift 6 language mode [#RegionIsolation::SendingClosureRisksDataRace]
24 | try? await parse(url: downloadURL, userAgent: userAgent)
| `- note: closure captures 'self' which is accessible to code in the current isolation context
25 | }
26 | }
[#ActorIsolatedCall]: <https://docs.swift.org/compiler/documentation/diagnostics/actor-isolated-call>
[#MutableGlobalVariable]: <https://docs.swift.org/compiler/documentation/diagnostics/mutable-global-variable>
[#RegionIsolation]: <https://docs.swift.org/compiler/documentation/diagnostics/region-isolation>
[#SendableClosureCaptures]: <https://docs.swift.org/compiler/documentation/diagnostics/sendable-closure-captures>
[#SendingClosureRisksDataRace]: <https://docs.swift.org/compiler/documentation/diagnostics/sending-closure-risks-data-race>
[#SendingRisksDataRace]: <https://docs.swift.org/compiler/documentation/diagnostics/sending-risks-data-race>
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Subtitle/KSSubtitle.swift (in target 'KSPlayer' from project 'KSPlayer')
cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
builtin-SwiftPerFileCompile KSSubtitle.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Subtitle/SubtitleDataSouce.swift (in target 'KSPlayer' from project 'KSPlayer')
cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
builtin-SwiftPerFileCompile SubtitleDataSouce.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/SwiftUI/AirPlayView.swift (in target 'KSPlayer' from project 'KSPlayer')
cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
builtin-SwiftPerFileCompile AirPlayView.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/SwiftUI/KSVideoPlayerView.swift (in target 'KSPlayer' from project 'KSPlayer')
cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
builtin-SwiftPerFileCompile KSVideoPlayerView.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/SwiftUI/KSVideoPlayerViewBuilder.swift (in target 'KSPlayer' from project 'KSPlayer')
cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
builtin-SwiftPerFileCompile KSVideoPlayerViewBuilder.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/SwiftUI/LiveTextImage.swift (in target 'KSPlayer' from project 'KSPlayer')
cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
builtin-SwiftPerFileCompile LiveTextImage.swift
SwiftCompile normal arm64 Compiling\ MacVideoPlayerView.swift,\ PlayerFullScreenViewController.swift,\ PlayerTransitionAnimator.swift,\ SeekView.swift,\ VideoPlayerView.swift /Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/MacVideoPlayerView.swift /Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/PlayerFullScreenViewController.swift /Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/PlayerTransitionAnimator.swift /Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/SeekView.swift /Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/VideoPlayerView.swift (in target 'KSPlayer' from project 'KSPlayer')
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/MacVideoPlayerView.swift:193:36: warning: conformance of 'UIActivityIndicatorView' to protocol 'LoadingIndector' crosses into main actor-isolated code and can cause data races; this is an error in the Swift 6 language mode [#ConformanceIsolation]
191 | }
192 |
193 | extension UIActivityIndicatorView: LoadingIndector {
| |- warning: conformance of 'UIActivityIndicatorView' to protocol 'LoadingIndector' crosses into main actor-isolated code and can cause data races; this is an error in the Swift 6 language mode [#ConformanceIsolation]
| |- note: isolate this conformance to the main actor with '@MainActor'
| `- note: turn data races into runtime errors with '@preconcurrency'
194 | func startAnimating() {
| |- note: main actor-isolated instance method 'startAnimating()' cannot satisfy nonisolated requirement
| `- note: mark instance method 'startAnimating()' 'nonisolated'
195 | loadingView.backingLayer?.position = CGPoint(x: loadingView.layer!.frame.midX, y: loadingView.layer!.frame.midY)
196 | loadingView.backingLayer?.anchorPoint = CGPoint(x: 0.5, y: 0.5)
:
203 | }
204 |
205 | func stopAnimating() {
| |- note: main actor-isolated instance method 'stopAnimating()' cannot satisfy nonisolated requirement
| `- note: mark instance method 'stopAnimating()' 'nonisolated'
206 | loadingView.backingLayer?.removeAnimation(forKey: "loading")
207 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/SeekView.swift:66:21: warning: conformance of 'SeekView' to protocol 'SeekViewProtocol' crosses into main actor-isolated code and can cause data races; this is an error in the Swift 6 language mode [#ConformanceIsolation]
64 | }
65 |
66 | extension SeekView: SeekViewProtocol {
| |- warning: conformance of 'SeekView' to protocol 'SeekViewProtocol' crosses into main actor-isolated code and can cause data races; this is an error in the Swift 6 language mode [#ConformanceIsolation]
| |- note: isolate this conformance to the main actor with '@MainActor'
| `- note: turn data races into runtime errors with '@preconcurrency'
67 | public func set(text: String, isAdd: Bool) {
| |- note: main actor-isolated instance method 'set(text:isAdd:)' cannot satisfy nonisolated requirement
| `- note: mark instance method 'set(text:isAdd:)' 'nonisolated'
68 | seekToLabel.text = text
69 | if !isAdd {
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/VideoPlayerView.swift:954:16: warning: static property 'topBarShowInCase' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode [#MutableGlobalVariable]
952 | public extension KSOptions {
953 | /// 顶部返回、标题、AirPlay按钮 显示选项,默认.Always,可选.HorizantalOnly、.None
954 | static var topBarShowInCase = KSPlayerTopBarShowCase.always
| |- warning: static property 'topBarShowInCase' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode [#MutableGlobalVariable]
| |- note: convert 'topBarShowInCase' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'topBarShowInCase' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
955 | /// 自动隐藏操作栏的时间间隔 默认5秒
956 | static var animateDelayTimeInterval = TimeInterval(5)
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/VideoPlayerView.swift:956:16: warning: static property 'animateDelayTimeInterval' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode [#MutableGlobalVariable]
954 | static var topBarShowInCase = KSPlayerTopBarShowCase.always
955 | /// 自动隐藏操作栏的时间间隔 默认5秒
956 | static var animateDelayTimeInterval = TimeInterval(5)
| |- warning: static property 'animateDelayTimeInterval' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode [#MutableGlobalVariable]
| |- note: convert 'animateDelayTimeInterval' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'animateDelayTimeInterval' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
957 | /// 开启亮度手势 默认true
958 | static var enableBrightnessGestures = true
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/VideoPlayerView.swift:958:16: warning: static property 'enableBrightnessGestures' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode [#MutableGlobalVariable]
956 | static var animateDelayTimeInterval = TimeInterval(5)
957 | /// 开启亮度手势 默认true
958 | static var enableBrightnessGestures = true
| |- warning: static property 'enableBrightnessGestures' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode [#MutableGlobalVariable]
| |- note: convert 'enableBrightnessGestures' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'enableBrightnessGestures' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
959 | /// 开启音量手势 默认true
960 | static var enableVolumeGestures = true
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/VideoPlayerView.swift:960:16: warning: static property 'enableVolumeGestures' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode [#MutableGlobalVariable]
958 | static var enableBrightnessGestures = true
959 | /// 开启音量手势 默认true
960 | static var enableVolumeGestures = true
| |- warning: static property 'enableVolumeGestures' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode [#MutableGlobalVariable]
| |- note: convert 'enableVolumeGestures' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'enableVolumeGestures' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
961 | /// 开启进度滑动手势 默认true
962 | static var enablePlaytimeGestures = true
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/VideoPlayerView.swift:962:16: warning: static property 'enablePlaytimeGestures' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode [#MutableGlobalVariable]
960 | static var enableVolumeGestures = true
961 | /// 开启进度滑动手势 默认true
962 | static var enablePlaytimeGestures = true
| |- warning: static property 'enablePlaytimeGestures' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode [#MutableGlobalVariable]
| |- note: convert 'enablePlaytimeGestures' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'enablePlaytimeGestures' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
963 | /// 播放内核选择策略 先使用firstPlayer,失败了自动切换到secondPlayer,播放内核有KSAVPlayer、KSMEPlayer两个选项
964 | /// 是否能后台播放视频
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/VideoPlayerView.swift:965:16: warning: static property 'canBackgroundPlay' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode [#MutableGlobalVariable]
963 | /// 播放内核选择策略 先使用firstPlayer,失败了自动切换到secondPlayer,播放内核有KSAVPlayer、KSMEPlayer两个选项
964 | /// 是否能后台播放视频
965 | static var canBackgroundPlay = false
| |- warning: static property 'canBackgroundPlay' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode [#MutableGlobalVariable]
| |- note: convert 'canBackgroundPlay' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'canBackgroundPlay' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
966 | }
967 |
[#ConformanceIsolation]: <https://docs.swift.org/compiler/documentation/diagnostics/conformance-isolation>
[#MutableGlobalVariable]: <https://docs.swift.org/compiler/documentation/diagnostics/mutable-global-variable>
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/MacVideoPlayerView.swift (in target 'KSPlayer' from project 'KSPlayer')
cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
builtin-SwiftPerFileCompile MacVideoPlayerView.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/PlayerFullScreenViewController.swift (in target 'KSPlayer' from project 'KSPlayer')
cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
builtin-SwiftPerFileCompile PlayerFullScreenViewController.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/PlayerTransitionAnimator.swift (in target 'KSPlayer' from project 'KSPlayer')
cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
builtin-SwiftPerFileCompile PlayerTransitionAnimator.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/SeekView.swift (in target 'KSPlayer' from project 'KSPlayer')
cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
builtin-SwiftPerFileCompile SeekView.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Video/VideoPlayerView.swift (in target 'KSPlayer' from project 'KSPlayer')
cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
builtin-SwiftPerFileCompile VideoPlayerView.swift
SwiftCompile normal arm64 Compiling\ AudioGraphPlayer.swift,\ AudioRendererPlayer.swift,\ AudioUnitPlayer.swift,\ CircularBuffer.swift,\ EmbedDataSouce.swift,\ FFmpegAssetTrack.swift /Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/AudioGraphPlayer.swift /Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/AudioRendererPlayer.swift /Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/AudioUnitPlayer.swift /Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/CircularBuffer.swift /Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/EmbedDataSouce.swift /Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/FFmpegAssetTrack.swift (in target 'KSPlayer' from project 'KSPlayer')
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/AudioRendererPlayer.swift:88:23: warning: capture of 'self' with non-Sendable type 'AudioRendererPlayer?' in a '@Sendable' closure [#SendableClosureCaptures]
9 | import Foundation
10 |
11 | public class AudioRendererPlayer: AudioOutput {
| `- note: class 'AudioRendererPlayer' does not conform to the 'Sendable' protocol
12 | public var playbackRate: Float = 1 {
13 | didSet {
:
86 | renderSource?.setAudio(time: time, position: -1)
87 | renderer.requestMediaDataWhenReady(on: serializationQueue) { [weak self] in
88 | guard let self else {
| `- warning: capture of 'self' with non-Sendable type 'AudioRendererPlayer?' in a '@Sendable' closure [#SendableClosureCaptures]
89 | return
90 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/AudioRendererPlayer.swift:94:23: warning: capture of 'self' with non-Sendable type 'AudioRendererPlayer?' in a '@Sendable' closure [#SendableClosureCaptures]
9 | import Foundation
10 |
11 | public class AudioRendererPlayer: AudioOutput {
| `- note: class 'AudioRendererPlayer' does not conform to the 'Sendable' protocol
12 | public var playbackRate: Float = 1 {
13 | didSet {
:
92 | }
93 | periodicTimeObserver = synchronizer.addPeriodicTimeObserver(forInterval: CMTime(seconds: 0.01), queue: .main) { [weak self] time in
94 | guard let self else {
| `- warning: capture of 'self' with non-Sendable type 'AudioRendererPlayer?' in a '@Sendable' closure [#SendableClosureCaptures]
95 | return
96 | }
[#SendableClosureCaptures]: <https://docs.swift.org/compiler/documentation/diagnostics/sendable-closure-captures>
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/AudioGraphPlayer.swift (in target 'KSPlayer' from project 'KSPlayer')
cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
builtin-SwiftPerFileCompile AudioGraphPlayer.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/AudioRendererPlayer.swift (in target 'KSPlayer' from project 'KSPlayer')
cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
builtin-SwiftPerFileCompile AudioRendererPlayer.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/AudioUnitPlayer.swift (in target 'KSPlayer' from project 'KSPlayer')
cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
builtin-SwiftPerFileCompile AudioUnitPlayer.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/CircularBuffer.swift (in target 'KSPlayer' from project 'KSPlayer')
cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
builtin-SwiftPerFileCompile CircularBuffer.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/EmbedDataSouce.swift (in target 'KSPlayer' from project 'KSPlayer')
cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
builtin-SwiftPerFileCompile EmbedDataSouce.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/FFmpegAssetTrack.swift (in target 'KSPlayer' from project 'KSPlayer')
cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
builtin-SwiftPerFileCompile FFmpegAssetTrack.swift
SwiftCompile normal arm64 Compiling\ MediaPlayerProtocol.swift,\ PlayerDefines.swift,\ AudioPlayerView.swift,\ AppKitExtend.swift,\ PlayerToolBar.swift,\ PlayerView.swift /Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/MediaPlayerProtocol.swift /Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/PlayerDefines.swift /Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Audio/AudioPlayerView.swift /Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/AppKitExtend.swift /Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/PlayerToolBar.swift /Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/PlayerView.swift (in target 'KSPlayer' from project 'KSPlayer')
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/AppKitExtend.swift:38:16: warning: static property 'traitItalic' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode [#MutableGlobalVariable]
36 | public typealias UIButton = KSButton
37 | public extension UIFontDescriptor.SymbolicTraits {
38 | static var traitItalic = italic
| |- warning: static property 'traitItalic' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode [#MutableGlobalVariable]
| |- note: convert 'traitItalic' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'traitItalic' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
39 | static var traitBold = bold
40 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/AppKitExtend.swift:39:16: warning: static property 'traitBold' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode [#MutableGlobalVariable]
37 | public extension UIFontDescriptor.SymbolicTraits {
38 | static var traitItalic = italic
39 | static var traitBold = bold
| |- warning: static property 'traitBold' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode [#MutableGlobalVariable]
| |- note: convert 'traitBold' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'traitBold' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
40 | }
41 |
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/AppKitExtend.swift:358:27: warning: static property 'normal' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode [#MutableGlobalVariable]
356 | public var rawValue: UInt
357 | public init(rawValue: UInt) { self.rawValue = rawValue }
358 | public static var normal = State(rawValue: 1 << 0)
| |- warning: static property 'normal' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode [#MutableGlobalVariable]
| |- note: convert 'normal' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'normal' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
359 | public static var highlighted = State(rawValue: 1 << 1)
360 | public static var disabled = State(rawValue: 1 << 2)
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/AppKitExtend.swift:359:27: warning: static property 'highlighted' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode [#MutableGlobalVariable]
357 | public init(rawValue: UInt) { self.rawValue = rawValue }
358 | public static var normal = State(rawValue: 1 << 0)
359 | public static var highlighted = State(rawValue: 1 << 1)
| |- warning: static property 'highlighted' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode [#MutableGlobalVariable]
| |- note: convert 'highlighted' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'highlighted' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
360 | public static var disabled = State(rawValue: 1 << 2)
361 | public static var selected = State(rawValue: 1 << 3)
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/AppKitExtend.swift:360:27: warning: static property 'disabled' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode [#MutableGlobalVariable]
358 | public static var normal = State(rawValue: 1 << 0)
359 | public static var highlighted = State(rawValue: 1 << 1)
360 | public static var disabled = State(rawValue: 1 << 2)
| |- warning: static property 'disabled' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode [#MutableGlobalVariable]
| |- note: convert 'disabled' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'disabled' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
361 | public static var selected = State(rawValue: 1 << 3)
362 | public static var focused = State(rawValue: 1 << 4)
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/AppKitExtend.swift:361:27: warning: static property 'selected' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode [#MutableGlobalVariable]
359 | public static var highlighted = State(rawValue: 1 << 1)
360 | public static var disabled = State(rawValue: 1 << 2)
361 | public static var selected = State(rawValue: 1 << 3)
| |- warning: static property 'selected' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode [#MutableGlobalVariable]
| |- note: convert 'selected' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'selected' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
362 | public static var focused = State(rawValue: 1 << 4)
363 | public static var application = State(rawValue: 1 << 5)
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/AppKitExtend.swift:362:27: warning: static property 'focused' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode [#MutableGlobalVariable]
360 | public static var disabled = State(rawValue: 1 << 2)
361 | public static var selected = State(rawValue: 1 << 3)
362 | public static var focused = State(rawValue: 1 << 4)
| |- warning: static property 'focused' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode [#MutableGlobalVariable]
| |- note: convert 'focused' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'focused' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
363 | public static var application = State(rawValue: 1 << 5)
364 | public static var reserved = State(rawValue: 1 << 6)
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/AppKitExtend.swift:363:27: warning: static property 'application' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode [#MutableGlobalVariable]
361 | public static var selected = State(rawValue: 1 << 3)
362 | public static var focused = State(rawValue: 1 << 4)
363 | public static var application = State(rawValue: 1 << 5)
| |- warning: static property 'application' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode [#MutableGlobalVariable]
| |- note: convert 'application' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'application' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
364 | public static var reserved = State(rawValue: 1 << 6)
365 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/AppKitExtend.swift:364:27: warning: static property 'reserved' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode [#MutableGlobalVariable]
362 | public static var focused = State(rawValue: 1 << 4)
363 | public static var application = State(rawValue: 1 << 5)
364 | public static var reserved = State(rawValue: 1 << 6)
| |- warning: static property 'reserved' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode [#MutableGlobalVariable]
| |- note: convert 'reserved' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'reserved' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
365 | }
366 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/PlayerView.swift:41:55: warning: conformance of 'PlayerView' to protocol 'KSSliderDelegate' crosses into main actor-isolated code and can cause data races; this is an error in the Swift 6 language mode [#ConformanceIsolation]
39 | }
40 |
41 | open class PlayerView: UIView, KSPlayerLayerDelegate, KSSliderDelegate {
| |- warning: conformance of 'PlayerView' to protocol 'KSSliderDelegate' crosses into main actor-isolated code and can cause data races; this is an error in the Swift 6 language mode [#ConformanceIsolation]
| |- note: isolate this conformance to the main actor with '@MainActor'
| `- note: turn data races into runtime errors with '@preconcurrency'
42 | public typealias ControllerDelegate = PlayerControllerDelegate
43 | public var playerLayer: KSPlayerLayer? {
:
157 | // MARK: - KSSliderDelegate
158 |
159 | open func slider(value: Double, event: ControlEvents) {
| |- note: main actor-isolated instance method 'slider(value:event:)' cannot satisfy nonisolated requirement
| `- note: mark instance method 'slider(value:event:)' 'nonisolated'
160 | if event == .valueChanged {
161 | toolBar.currentTime = value
[#ConformanceIsolation]: <https://docs.swift.org/compiler/documentation/diagnostics/conformance-isolation>
[#MutableGlobalVariable]: <https://docs.swift.org/compiler/documentation/diagnostics/mutable-global-variable>
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/MediaPlayerProtocol.swift (in target 'KSPlayer' from project 'KSPlayer')
cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
builtin-SwiftPerFileCompile MediaPlayerProtocol.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/PlayerDefines.swift (in target 'KSPlayer' from project 'KSPlayer')
cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
builtin-SwiftPerFileCompile PlayerDefines.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Audio/AudioPlayerView.swift (in target 'KSPlayer' from project 'KSPlayer')
cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
builtin-SwiftPerFileCompile AudioPlayerView.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/AppKitExtend.swift (in target 'KSPlayer' from project 'KSPlayer')
cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
builtin-SwiftPerFileCompile AppKitExtend.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/PlayerToolBar.swift (in target 'KSPlayer' from project 'KSPlayer')
cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
builtin-SwiftPerFileCompile PlayerToolBar.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/PlayerView.swift (in target 'KSPlayer' from project 'KSPlayer')
cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
builtin-SwiftPerFileCompile PlayerView.swift
SwiftCompile normal arm64 Compiling\ UIKitExtend.swift,\ UXKit.swift,\ Utility.swift,\ AVFFmpegExtension.swift,\ AVFoundationExtension.swift,\ AudioEnginePlayer.swift /Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/UIKitExtend.swift /Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/UXKit.swift /Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift /Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/AVFFmpegExtension.swift /Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/AVFoundationExtension.swift /Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/AudioEnginePlayer.swift (in target 'KSPlayer' from project 'KSPlayer')
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:531:1: warning: extension declares a conformance of imported type 'TextAlignment' to imported protocol 'RawRepresentable'; this will not behave correctly if the owners of 'SwiftUICore' introduce this conformance in the future
529 | }
530 |
531 | extension TextAlignment: RawRepresentable {
| |- warning: extension declares a conformance of imported type 'TextAlignment' to imported protocol 'RawRepresentable'; this will not behave correctly if the owners of 'SwiftUICore' introduce this conformance in the future
| `- note: add '@retroactive' to silence this warning
532 | public typealias RawValue = String
533 | public init?(rawValue: RawValue) {
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:557:1: warning: extension declares a conformance of imported type 'TextAlignment' to imported protocol 'Identifiable'; this will not behave correctly if the owners of 'SwiftUICore' introduce this conformance in the future
555 | }
556 |
557 | extension TextAlignment: Identifiable {
| |- warning: extension declares a conformance of imported type 'TextAlignment' to imported protocol 'Identifiable'; this will not behave correctly if the owners of 'SwiftUICore' introduce this conformance in the future
| `- note: add '@retroactive' to silence this warning
558 | public var id: Self { self }
559 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:561:1: warning: extension declares a conformance of imported type 'HorizontalAlignment' to imported protocols 'Hashable', 'RawRepresentable'; this will not behave correctly if the owners of 'SwiftUICore' introduce this conformance in the future
559 | }
560 |
561 | extension HorizontalAlignment: Hashable, RawRepresentable {
| |- warning: extension declares a conformance of imported type 'HorizontalAlignment' to imported protocols 'Hashable', 'RawRepresentable'; this will not behave correctly if the owners of 'SwiftUICore' introduce this conformance in the future
| `- note: add '@retroactive' to silence this warning
562 | public typealias RawValue = String
563 | public init?(rawValue: RawValue) {
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:589:1: warning: extension declares a conformance of imported type 'HorizontalAlignment' to imported protocol 'Identifiable'; this will not behave correctly if the owners of 'SwiftUICore' introduce this conformance in the future
587 | }
588 |
589 | extension HorizontalAlignment: Identifiable {
| |- warning: extension declares a conformance of imported type 'HorizontalAlignment' to imported protocol 'Identifiable'; this will not behave correctly if the owners of 'SwiftUICore' introduce this conformance in the future
| `- note: add '@retroactive' to silence this warning
590 | public var id: Self { self }
591 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:593:1: warning: extension declares a conformance of imported type 'VerticalAlignment' to imported protocols 'Hashable', 'RawRepresentable'; this will not behave correctly if the owners of 'SwiftUICore' introduce this conformance in the future
591 | }
592 |
593 | extension VerticalAlignment: Hashable, RawRepresentable {
| |- warning: extension declares a conformance of imported type 'VerticalAlignment' to imported protocols 'Hashable', 'RawRepresentable'; this will not behave correctly if the owners of 'SwiftUICore' introduce this conformance in the future
| `- note: add '@retroactive' to silence this warning
594 | public typealias RawValue = String
595 | public init?(rawValue: RawValue) {
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:621:1: warning: extension declares a conformance of imported type 'VerticalAlignment' to imported protocol 'Identifiable'; this will not behave correctly if the owners of 'SwiftUICore' introduce this conformance in the future
619 | }
620 |
621 | extension VerticalAlignment: Identifiable {
| |- warning: extension declares a conformance of imported type 'VerticalAlignment' to imported protocol 'Identifiable'; this will not behave correctly if the owners of 'SwiftUICore' introduce this conformance in the future
| `- note: add '@retroactive' to silence this warning
622 | public var id: Self { self }
623 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:625:1: warning: extension declares a conformance of imported type 'Color' to imported protocol 'RawRepresentable'; this will not behave correctly if the owners of 'SwiftUICore' introduce this conformance in the future
623 | }
624 |
625 | extension Color: RawRepresentable {
| |- warning: extension declares a conformance of imported type 'Color' to imported protocol 'RawRepresentable'; this will not behave correctly if the owners of 'SwiftUICore' introduce this conformance in the future
| `- note: add '@retroactive' to silence this warning
626 | public typealias RawValue = String
627 | public init?(rawValue: RawValue) {
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:655:1: warning: extension declares a conformance of imported type 'Array' to imported protocol 'RawRepresentable'; this will not behave correctly if the owners of 'Swift' introduce this conformance in the future
653 | }
654 |
655 | extension Array: RawRepresentable where Element: Codable {
| |- warning: extension declares a conformance of imported type 'Array' to imported protocol 'RawRepresentable'; this will not behave correctly if the owners of 'Swift' introduce this conformance in the future
| `- note: add '@retroactive' to silence this warning
656 | public init?(rawValue: String) {
657 | guard let data = rawValue.data(using: .utf8),
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:673:1: warning: extension declares a conformance of imported type 'Date' to imported protocol 'RawRepresentable'; this will not behave correctly if the owners of 'Foundation' introduce this conformance in the future
671 | }
672 |
673 | extension Date: RawRepresentable {
| |- warning: extension declares a conformance of imported type 'Date' to imported protocol 'RawRepresentable'; this will not behave correctly if the owners of 'Foundation' introduce this conformance in the future
| `- note: add '@retroactive' to silence this warning
674 | public typealias RawValue = String
675 | public init?(rawValue: RawValue) {
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:753:33: warning: 'kUTTypePNG' was deprecated in macOS 12.0: Use UTTypePNG or UTType.png (swift) instead. [#DeprecatedDeclaration]
751 |
752 | public extension AVFileType {
753 | static let png = AVFileType(kUTTypePNG as String)
| `- warning: 'kUTTypePNG' was deprecated in macOS 12.0: Use UTTypePNG or UTType.png (swift) instead. [#DeprecatedDeclaration]
754 | static let jpeg2000 = AVFileType(kUTTypeJPEG2000 as String)
755 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:754:38: warning: 'kUTTypeJPEG2000' was deprecated in macOS 12.0: JPEG2000 is no longer supported by this operating system. [#DeprecatedDeclaration]
752 | public extension AVFileType {
753 | static let png = AVFileType(kUTTypePNG as String)
754 | static let jpeg2000 = AVFileType(kUTTypeJPEG2000 as String)
| `- warning: 'kUTTypeJPEG2000' was deprecated in macOS 12.0: JPEG2000 is no longer supported by this operating system. [#DeprecatedDeclaration]
755 | }
756 |
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:757:1: warning: extension declares a conformance of imported type 'URL' to imported protocol 'Identifiable'; this will not behave correctly if the owners of 'Foundation' introduce this conformance in the future
755 | }
756 |
757 | extension URL: Identifiable {
| |- warning: extension declares a conformance of imported type 'URL' to imported protocol 'Identifiable'; this will not behave correctly if the owners of 'Foundation' introduce this conformance in the future
| `- note: add '@retroactive' to silence this warning
758 | public var id: Self { self }
759 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:761:1: warning: extension declares a conformance of imported type 'String' to imported protocol 'Identifiable'; this will not behave correctly if the owners of 'Swift' introduce this conformance in the future
759 | }
760 |
761 | extension String: Identifiable {
| |- warning: extension declares a conformance of imported type 'String' to imported protocol 'Identifiable'; this will not behave correctly if the owners of 'Swift' introduce this conformance in the future
| `- note: add '@retroactive' to silence this warning
762 | public var id: Self { self }
763 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:765:1: warning: extension declares a conformance of imported type 'Float' to imported protocol 'Identifiable'; this will not behave correctly if the owners of 'Swift' introduce this conformance in the future
763 | }
764 |
765 | extension Float: Identifiable {
| |- warning: extension declares a conformance of imported type 'Float' to imported protocol 'Identifiable'; this will not behave correctly if the owners of 'Swift' introduce this conformance in the future
| `- note: add '@retroactive' to silence this warning
766 | public var id: Self { self }
767 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:50:74: warning: 'kUTTypeGIF' was deprecated in macOS 12.0: Use UTTypeGIF or UTType.gif (swift) instead. [#DeprecatedDeclaration]
48 | try? FileManager.default.removeItem(at: savePath)
49 | frameProperties = [kCGImagePropertyGIFDictionary: [kCGImagePropertyGIFDelayTime: 0.25]] as CFDictionary
50 | destination = CGImageDestinationCreateWithURL(savePath as CFURL, kUTTypeGIF, imagesCount, nil)!
| `- warning: 'kUTTypeGIF' was deprecated in macOS 12.0: Use UTTypeGIF or UTType.gif (swift) instead. [#DeprecatedDeclaration]
51 | let fileProperties = [kCGImagePropertyGIFDictionary: [kCGImagePropertyGIFLoopCount: 0]]
52 | CGImageDestinationSetProperties(destination, fileProperties as CFDictionary)
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:171:17: warning: capture of 'gifCreator' with non-Sendable type 'GIFCreator' in a '@Sendable' closure [#SendableClosureCaptures]
41 | }
42 |
43 | class GIFCreator {
| `- note: class 'GIFCreator' does not conform to the 'Sendable' protocol
44 | private let destination: CGImageDestination
45 | private let frameProperties: CFDictionary
:
169 | guard let imageRef else { return }
170 | i += 1
171 | gifCreator.add(image: imageRef)
| `- warning: capture of 'gifCreator' with non-Sendable type 'GIFCreator' in a '@Sendable' closure [#SendableClosureCaptures]
172 | progress(Double(i) / Double(count))
173 | guard i == count else { return }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:172:17: warning: capture of 'progress' with non-Sendable type '(Double) -> Void' in a '@Sendable' closure [#SendableClosureCaptures]
170 | i += 1
171 | gifCreator.add(image: imageRef)
172 | progress(Double(i) / Double(count))
| |- warning: capture of 'progress' with non-Sendable type '(Double) -> Void' in a '@Sendable' closure [#SendableClosureCaptures]
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
173 | guard i == count else { return }
174 | if gifCreator.finalize() {
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:175:21: warning: capture of 'completion' with non-Sendable type '((any Error)?) -> Void' in a '@Sendable' closure [#SendableClosureCaptures]
173 | guard i == count else { return }
174 | if gifCreator.finalize() {
175 | completion(nil)
| |- warning: capture of 'completion' with non-Sendable type '((any Error)?) -> Void' in a '@Sendable' closure [#SendableClosureCaptures]
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
176 | } else {
177 | let error = NSError(domain: AVFoundationErrorDomain, code: -1, userInfo: [NSLocalizedDescriptionKey: "Generate Gif Failed!"])
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:170:17: warning: mutation of captured var 'i' in concurrently-executing code [#SendableClosureCaptures]
168 | case .succeeded:
169 | guard let imageRef else { return }
170 | i += 1
| `- warning: mutation of captured var 'i' in concurrently-executing code [#SendableClosureCaptures]
171 | gifCreator.add(image: imageRef)
172 | progress(Double(i) / Double(count))
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:172:33: warning: reference to captured var 'i' in concurrently-executing code [#SendableClosureCaptures]
170 | i += 1
171 | gifCreator.add(image: imageRef)
172 | progress(Double(i) / Double(count))
| `- warning: reference to captured var 'i' in concurrently-executing code [#SendableClosureCaptures]
173 | guard i == count else { return }
174 | if gifCreator.finalize() {
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:173:23: warning: reference to captured var 'i' in concurrently-executing code [#SendableClosureCaptures]
171 | gifCreator.add(image: imageRef)
172 | progress(Double(i) / Double(count))
173 | guard i == count else { return }
| `- warning: reference to captured var 'i' in concurrently-executing code [#SendableClosureCaptures]
174 | if gifCreator.finalize() {
175 | completion(nil)
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:227:9: warning: unstructured throwing task created by 'init(name:priority:operation:)' is not used, which may accidentally ignore errors thrown inside the task [#NoUseUnstructuredThrowingTask]
225 | func exportMp4(beginTime: TimeInterval, endTime: TimeInterval, outputURL: URL, progress: @escaping (Double) -> Void, completion: @escaping (Result<URL, Error>) -> Void) throws {
226 | try FileManager.default.removeItem(at: outputURL)
227 | Task {
| |- warning: unstructured throwing task created by 'init(name:priority:operation:)' is not used, which may accidentally ignore errors thrown inside the task [#NoUseUnstructuredThrowingTask]
| `- note: to silence this warning, handle the error inside the task, or store/discard the task value explicitly
228 | guard let exportSession = try await createExportSession(beginTime: beginTime, endTime: endTime) else { return }
229 | exportSession.outputURL = outputURL
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:360:39: warning: passing non-Sendable parameter 'block' to function expecting a '@Sendable' closure
353 | @preconcurrency
354 | // @MainActor
355 | public func runOnMainThread(block: @escaping () -> Void) {
| `- note: parameter 'block' is implicitly non-Sendable
356 | if Thread.isMainThread {
357 | block()
358 | } else {
359 | Task {
360 | await MainActor.run(body: block)
| `- warning: passing non-Sendable parameter 'block' to function expecting a '@Sendable' closure
361 | }
362 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:368:20: warning: 'UTTypeConformsTo' was deprecated in macOS 12.0: Use -[UTType conformsToType:] instead. [#DeprecatedDeclaration]
366 | var isMovie: Bool {
367 | if let typeID = try? resourceValues(forKeys: [.typeIdentifierKey]).typeIdentifier as CFString? {
368 | return UTTypeConformsTo(typeID, kUTTypeMovie)
| `- warning: 'UTTypeConformsTo' was deprecated in macOS 12.0: Use -[UTType conformsToType:] instead. [#DeprecatedDeclaration]
369 | }
370 | return false
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:368:45: warning: 'kUTTypeMovie' was deprecated in macOS 12.0: Use UTTypeMovie or UTType.movie (swift) instead. [#DeprecatedDeclaration]
366 | var isMovie: Bool {
367 | if let typeID = try? resourceValues(forKeys: [.typeIdentifierKey]).typeIdentifier as CFString? {
368 | return UTTypeConformsTo(typeID, kUTTypeMovie)
| `- warning: 'kUTTypeMovie' was deprecated in macOS 12.0: Use UTTypeMovie or UTType.movie (swift) instead. [#DeprecatedDeclaration]
369 | }
370 | return false
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:375:20: warning: 'UTTypeConformsTo' was deprecated in macOS 12.0: Use -[UTType conformsToType:] instead. [#DeprecatedDeclaration]
373 | var isAudio: Bool {
374 | if let typeID = try? resourceValues(forKeys: [.typeIdentifierKey]).typeIdentifier as CFString? {
375 | return UTTypeConformsTo(typeID, kUTTypeAudio)
| `- warning: 'UTTypeConformsTo' was deprecated in macOS 12.0: Use -[UTType conformsToType:] instead. [#DeprecatedDeclaration]
376 | }
377 | return false
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:375:45: warning: 'kUTTypeAudio' was deprecated in macOS 12.0: Use UTTypeAudio or UTType.audio (swift) instead. [#DeprecatedDeclaration]
373 | var isAudio: Bool {
374 | if let typeID = try? resourceValues(forKeys: [.typeIdentifierKey]).typeIdentifier as CFString? {
375 | return UTTypeConformsTo(typeID, kUTTypeAudio)
| `- warning: 'kUTTypeAudio' was deprecated in macOS 12.0: Use UTTypeAudio or UTType.audio (swift) instead. [#DeprecatedDeclaration]
376 | }
377 | return false
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:424:13: warning: capture of 'completion' with non-Sendable type '(String, URL) -> Void' in a '@Sendable' closure [#SendableClosureCaptures]
422 | }
423 | // 下载的临时文件要马上就用。不然可能会马上被清空
424 | completion(response.suggestedFilename ?? url.lastPathComponent, url)
| |- warning: capture of 'completion' with non-Sendable type '(String, URL) -> Void' in a '@Sendable' closure [#SendableClosureCaptures]
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
425 | }
426 | task.resume()
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/AVFFmpegExtension.swift:385:1: warning: extension declares a conformance of imported type 'AVBufferSrcParameters' to imported protocol 'Equatable'; this will not behave correctly if the owners of 'Libavfilter' introduce this conformance in the future
383 | }
384 |
385 | extension AVBufferSrcParameters: Equatable {
| |- warning: extension declares a conformance of imported type 'AVBufferSrcParameters' to imported protocol 'Equatable'; this will not behave correctly if the owners of 'Libavfilter' introduce this conformance in the future
| `- note: add '@retroactive' to silence this warning
386 | public static func == (lhs: AVBufferSrcParameters, rhs: AVBufferSrcParameters) -> Bool {
387 | lhs.format == rhs.format && lhs.width == rhs.width && lhs.height == rhs.height && lhs.sample_aspect_ratio == rhs.sample_aspect_ratio && lhs.sample_rate == rhs.sample_rate && lhs.ch_layout == rhs.ch_layout
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/AVFFmpegExtension.swift:400:1: warning: extension declares a conformance of imported type 'AVChannelLayout' to imported protocol 'Equatable'; this will not behave correctly if the owners of 'Libavutil' introduce this conformance in the future
398 | }
399 |
400 | extension AVChannelLayout: Equatable {
| |- warning: extension declares a conformance of imported type 'AVChannelLayout' to imported protocol 'Equatable'; this will not behave correctly if the owners of 'Libavutil' introduce this conformance in the future
| `- note: add '@retroactive' to silence this warning
401 | public static func == (lhs: AVChannelLayout, rhs: AVChannelLayout) -> Bool {
402 | var lhs = lhs
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/AVFFmpegExtension.swift:408:1: warning: extension declares a conformance of imported type 'AVChannelLayout' to imported protocol 'CustomStringConvertible'; this will not behave correctly if the owners of 'Libavutil' introduce this conformance in the future
406 | }
407 |
408 | extension AVChannelLayout: CustomStringConvertible {
| |- warning: extension declares a conformance of imported type 'AVChannelLayout' to imported protocol 'CustomStringConvertible'; this will not behave correctly if the owners of 'Libavutil' introduce this conformance in the future
| `- note: add '@retroactive' to silence this warning
409 | static let defaultValue = AVChannelLayout(order: AV_CHANNEL_ORDER_NATIVE, nb_channels: 2, u: AVChannelLayout.__Unnamed_union_u(mask: swift_AV_CH_LAYOUT_STEREO), opaque: nil)
410 | var layoutTag: AudioChannelLayoutTag? {
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/AVFFmpegExtension.swift:409:16: warning: static property 'defaultValue' is not concurrency-safe because non-'Sendable' type 'AVChannelLayout' may have shared mutable state; this is an error in the Swift 6 language mode [#MutableGlobalVariable]
407 |
408 | extension AVChannelLayout: CustomStringConvertible {
409 | static let defaultValue = AVChannelLayout(order: AV_CHANNEL_ORDER_NATIVE, nb_channels: 2, u: AVChannelLayout.__Unnamed_union_u(mask: swift_AV_CH_LAYOUT_STEREO), opaque: nil)
| `- warning: static property 'defaultValue' is not concurrency-safe because non-'Sendable' type 'AVChannelLayout' may have shared mutable state; this is an error in the Swift 6 language mode [#MutableGlobalVariable]
410 | var layoutTag: AudioChannelLayoutTag? {
411 | KSLog("[audio] FFmepg AVChannelLayout: \(self) order: \(order) mask: \(u.mask)")
/Users/admin/builder/spi-builder-workspace/.derivedData/Build/Products/Debug/Libavutil.framework/Headers/channel_layout.h:307:16: note: struct 'AVChannelLayout' does not conform to the 'Sendable' protocol
305 | * new elements of the union fitting in sizeof(uint64_t).
306 | */
307 | typedef struct AVChannelLayout {
| `- note: struct 'AVChannelLayout' does not conform to the 'Sendable' protocol
308 | /**
309 | * Channel order used in this layout.
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/AVFFmpegExtension.swift:2:1: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'Libavutil' [#AddPreconcurrencyImport]
1 | import CoreMedia
2 | import FFmpegKit
| `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'Libavutil' [#AddPreconcurrencyImport]
3 | import Libavcodec
4 | import Libavfilter
:
407 |
408 | extension AVChannelLayout: CustomStringConvertible {
409 | static let defaultValue = AVChannelLayout(order: AV_CHANNEL_ORDER_NATIVE, nb_channels: 2, u: AVChannelLayout.__Unnamed_union_u(mask: swift_AV_CH_LAYOUT_STEREO), opaque: nil)
| |- note: add '@MainActor' to make static property 'defaultValue' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
410 | var layoutTag: AudioChannelLayoutTag? {
411 | KSLog("[audio] FFmepg AVChannelLayout: \(self) order: \(order) mask: \(u.mask)")
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/AVFFmpegExtension.swift:431:1: warning: extension declares a conformance of imported type 'AVRational' to imported protocol 'Equatable'; this will not behave correctly if the owners of 'Libavutil' introduce this conformance in the future
429 | }
430 |
431 | extension AVRational: Equatable {
| |- warning: extension declares a conformance of imported type 'AVRational' to imported protocol 'Equatable'; this will not behave correctly if the owners of 'Libavutil' introduce this conformance in the future
| `- note: add '@retroactive' to silence this warning
432 | public static func == (lhs: AVRational, rhs: AVRational) -> Bool {
433 | lhs.num == rhs.num && rhs.den == rhs.den
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/AVFoundationExtension.swift:108:1: warning: extension declares a conformance of imported type 'AudioChannelLayout' to imported protocol 'CustomStringConvertible'; this will not behave correctly if the owners of 'CoreAudioTypes' introduce this conformance in the future
106 | }
107 |
108 | extension AudioChannelLayout: CustomStringConvertible {
| |- warning: extension declares a conformance of imported type 'AudioChannelLayout' to imported protocol 'CustomStringConvertible'; this will not behave correctly if the owners of 'CoreAudioTypes' introduce this conformance in the future
| `- note: add '@retroactive' to silence this warning
109 | public var description: String {
110 | "AudioChannelLayoutTag: \(mChannelLayoutTag), mNumberChannelDescriptions: \(mNumberChannelDescriptions)"
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/AudioEnginePlayer.swift:203:17: warning: capture of 'self' with non-Sendable type 'AudioEnginePlayer?' in a '@Sendable' closure [#SendableClosureCaptures]
101 | }
102 |
103 | public class AudioEnginePlayer: AudioOutput {
| `- note: class 'AudioEnginePlayer' does not conform to the 'Sendable' protocol
104 | public let engine = AVAudioEngine()
105 | private var sourceNode: AVAudioSourceNode?
:
201 | // 从多声道切换到2声道马上调用start会不生效。需要异步主线程才可以
202 | DispatchQueue.main.async { [weak self] in
203 | self?.play()
| `- warning: capture of 'self' with non-Sendable type 'AudioEnginePlayer?' in a '@Sendable' closure [#SendableClosureCaptures]
204 | }
205 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:227:9: warning: passing closure as a 'sending' parameter risks causing data races between code in the current isolation context and concurrent execution of the closure; this is an error in the Swift 6 language mode [#RegionIsolation::SendingClosureRisksDataRace]
225 | func exportMp4(beginTime: TimeInterval, endTime: TimeInterval, outputURL: URL, progress: @escaping (Double) -> Void, completion: @escaping (Result<URL, Error>) -> Void) throws {
226 | try FileManager.default.removeItem(at: outputURL)
227 | Task {
| `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current isolation context and concurrent execution of the closure; this is an error in the Swift 6 language mode [#RegionIsolation::SendingClosureRisksDataRace]
228 | guard let exportSession = try await createExportSession(beginTime: beginTime, endTime: endTime) else { return }
| `- note: closure captures 'self' which is accessible to code in the current isolation context
229 | exportSession.outputURL = outputURL
230 | await exportSession.export()
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift:359:9: warning: passing closure as a 'sending' parameter risks causing data races between code in the current isolation context and concurrent execution of the closure; this is an error in the Swift 6 language mode [#RegionIsolation::SendingClosureRisksDataRace]
357 | block()
358 | } else {
359 | Task {
| `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current isolation context and concurrent execution of the closure; this is an error in the Swift 6 language mode [#RegionIsolation::SendingClosureRisksDataRace]
360 | await MainActor.run(body: block)
| `- note: closure captures 'block' which is accessible to code in the current isolation context
361 | }
362 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/AudioEnginePlayer.swift:203:21: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode [#RegionIsolation::SendingRisksDataRace]
201 | // 从多声道切换到2声道马上调用start会不生效。需要异步主线程才可以
202 | DispatchQueue.main.async { [weak self] in
203 | self?.play()
| |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode [#RegionIsolation::SendingRisksDataRace]
| `- note: 'self' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against code in the current isolation context
204 | }
205 | }
[#AddPreconcurrencyImport]: <https://docs.swift.org/compiler/documentation/diagnostics/add-preconcurrency-import>
[#DeprecatedDeclaration]: <https://docs.swift.org/compiler/documentation/diagnostics/deprecated-declaration>
[#MutableGlobalVariable]: <https://docs.swift.org/compiler/documentation/diagnostics/mutable-global-variable>
[#NoUseUnstructuredThrowingTask]: <https://docs.swift.org/compiler/documentation/diagnostics/no-use-throwing-unstructured-task>
[#RegionIsolation]: <https://docs.swift.org/compiler/documentation/diagnostics/region-isolation>
[#SendableClosureCaptures]: <https://docs.swift.org/compiler/documentation/diagnostics/sendable-closure-captures>
[#SendingClosureRisksDataRace]: <https://docs.swift.org/compiler/documentation/diagnostics/sending-closure-risks-data-race>
[#SendingRisksDataRace]: <https://docs.swift.org/compiler/documentation/diagnostics/sending-risks-data-race>
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/UIKitExtend.swift (in target 'KSPlayer' from project 'KSPlayer')
cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
builtin-SwiftPerFileCompile UIKitExtend.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/UXKit.swift (in target 'KSPlayer' from project 'KSPlayer')
cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
builtin-SwiftPerFileCompile UXKit.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/Utility.swift (in target 'KSPlayer' from project 'KSPlayer')
cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
builtin-SwiftPerFileCompile Utility.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/AVFFmpegExtension.swift (in target 'KSPlayer' from project 'KSPlayer')
cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
builtin-SwiftPerFileCompile AVFFmpegExtension.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/AVFoundationExtension.swift (in target 'KSPlayer' from project 'KSPlayer')
cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
builtin-SwiftPerFileCompile AVFoundationExtension.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/MEPlayer/AudioEnginePlayer.swift (in target 'KSPlayer' from project 'KSPlayer')
cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
builtin-SwiftPerFileCompile AudioEnginePlayer.swift
SwiftCompile normal arm64 Compiling\ resource_bundle_accessor.swift,\ KSAVPlayer.swift,\ KSOptions.swift,\ KSPictureInPictureController.swift,\ KSPlayerLayer.swift,\ KSVideoPlayer.swift /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/KSPlayer.build/Debug/KSPlayer-t.build/DerivedSources/resource_bundle_accessor.swift /Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/KSAVPlayer.swift /Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/KSOptions.swift /Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/KSPictureInPictureController.swift /Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/KSPlayerLayer.swift /Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/KSVideoPlayer.swift (in target 'KSPlayer' from project 'KSPlayer')
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/KSAVPlayer.swift:362:23: warning: conformance of 'KSAVPlayer' to protocol 'MediaPlayerProtocol' crosses into main actor-isolated code and can cause data races; this is an error in the Swift 6 language mode [#ConformanceIsolation]
109 |
110 | @available(tvOS 14.0, *)
111 | public var pipController: KSPictureInPictureController? {
| |- note: main actor-isolated property 'pipController' cannot satisfy nonisolated requirement
| `- note: mark property 'pipController' 'nonisolated'
112 | _pipController as? KSPictureInPictureController
113 | }
114 |
115 | public var naturalSize: CGSize = .zero
116 | public let dynamicInfo: DynamicInfo? = nil
| `- note: main actor-isolated property 'dynamicInfo' cannot satisfy nonisolated requirement
117 | @available(macOS 12.0, iOS 15.0, tvOS 15.0, *)
118 | public var playbackCoordinator: AVPlaybackCoordinator {
| |- note: main actor-isolated property 'playbackCoordinator' cannot satisfy nonisolated requirement
| `- note: mark property 'playbackCoordinator' 'nonisolated'
119 | playerView.player.playbackCoordinator
120 | }
:
126 | }
127 |
128 | public weak var delegate: MediaPlayerDelegate?
| `- note: main actor-isolated property 'delegate' cannot satisfy nonisolated requirement
129 | public private(set) var duration: TimeInterval = 0
130 | public private(set) var fileSize: Double = 0
131 | public private(set) var playableTime: TimeInterval = 0
| |- note: main actor-isolated property 'playableTime' cannot satisfy nonisolated requirement
| `- note: change property 'playableTime' to a 'nonisolated let' constant
132 | public let chapters: [Chapter] = []
133 | public var playbackRate: Float = 1 {
| `- note: main actor-isolated property 'playbackRate' cannot satisfy nonisolated requirement
134 | didSet {
135 | if playbackState == .playing {
:
139 | }
140 |
141 | public var playbackVolume: Float = 1.0 {
| `- note: main actor-isolated property 'playbackVolume' cannot satisfy nonisolated requirement
142 | didSet {
143 | if player.volume != playbackVolume {
:
147 | }
148 |
149 | public private(set) var loadState = MediaLoadState.idle {
| |- note: main actor-isolated property 'loadState' cannot satisfy nonisolated requirement
| `- note: change property 'loadState' to a 'nonisolated let' constant
150 | didSet {
151 | if loadState != oldValue {
:
158 | }
159 |
160 | public private(set) var playbackState = MediaPlaybackState.idle {
| |- note: main actor-isolated property 'playbackState' cannot satisfy nonisolated requirement
| `- note: change property 'playbackState' to a 'nonisolated let' constant
161 | didSet {
162 | if playbackState != oldValue {
:
169 | }
170 |
171 | public private(set) var isReadyToPlay = false {
| |- note: main actor-isolated property 'isReadyToPlay' cannot satisfy nonisolated requirement
| `- note: change property 'isReadyToPlay' to a 'nonisolated let' constant
172 | didSet {
173 | if isReadyToPlay != oldValue {
:
185 | public let isExternalPlaybackActive = false
186 | #else
187 | public var allowsExternalPlayback: Bool {
| |- note: main actor-isolated property 'allowsExternalPlayback' cannot satisfy nonisolated requirement
| `- note: mark property 'allowsExternalPlayback' 'nonisolated'
188 | get {
189 | player.allowsExternalPlayback
:
195 |
196 | #if os(macOS)
197 | public var usesExternalPlaybackWhileExternalScreenIsActive = false
| `- note: main actor-isolated property 'usesExternalPlaybackWhileExternalScreenIsActive' cannot satisfy nonisolated requirement
198 | #else
199 | public var usesExternalPlaybackWhileExternalScreenIsActive: Bool {
:
207 | #endif
208 |
209 | public var isExternalPlaybackActive: Bool {
| |- note: main actor-isolated property 'isExternalPlaybackActive' cannot satisfy nonisolated requirement
| `- note: mark property 'isExternalPlaybackActive' 'nonisolated'
210 | player.isExternalPlaybackActive
211 | }
212 | #endif
213 |
214 | public required init(url: URL, options: KSOptions) {
| |- note: main actor-isolated initializer 'init(url:options:)' cannot satisfy nonisolated requirement
| `- note: mark initializer 'init(url:options:)' 'nonisolated'
215 | KSOptions.setAudioSession()
216 | urlAsset = AVURLAsset(url: url, options: options.avOptions)
:
360 | }
361 |
362 | extension KSAVPlayer: MediaPlayerProtocol {
| |- warning: conformance of 'KSAVPlayer' to protocol 'MediaPlayerProtocol' crosses into main actor-isolated code and can cause data races; this is an error in the Swift 6 language mode [#ConformanceIsolation]
| |- note: isolate this conformance to the main actor with '@MainActor'
| `- note: turn data races into runtime errors with '@preconcurrency'
363 | public var subtitleDataSouce: SubtitleDataSouce? { nil }
| |- note: main actor-isolated property 'subtitleDataSouce' cannot satisfy nonisolated requirement
| `- note: mark property 'subtitleDataSouce' 'nonisolated'
364 | public var isPlaying: Bool { player.rate > 0 ? true : playbackState == .playing }
| |- note: main actor-isolated property 'isPlaying' cannot satisfy nonisolated requirement
| `- note: mark property 'isPlaying' 'nonisolated'
365 | public var view: UIView? { playerView }
| |- note: main actor-isolated property 'view' cannot satisfy nonisolated requirement
| `- note: mark property 'view' 'nonisolated'
366 | public var currentPlaybackTime: TimeInterval {
367 | get {
:
427 | }
428 |
429 | public func play() {
| |- note: main actor-isolated instance method 'play()' cannot satisfy nonisolated requirement
| `- note: mark instance method 'play()' 'nonisolated'
430 | KSLog("play \(self)")
431 | playbackState = .playing
432 | }
433 |
434 | public func pause() {
| |- note: main actor-isolated instance method 'pause()' cannot satisfy nonisolated requirement
| `- note: mark instance method 'pause()' 'nonisolated'
435 | KSLog("pause \(self)")
436 | playbackState = .paused
:
446 | }
447 |
448 | public func replace(url: URL, options: KSOptions) {
| |- note: main actor-isolated instance method 'replace(url:options:)' cannot satisfy nonisolated requirement
| `- note: mark instance method 'replace(url:options:)' 'nonisolated'
449 | KSLog("replaceUrl \(self)")
450 | shutdown()
:
453 | }
454 |
455 | public var contentMode: UIViewContentMode {
| |- note: main actor-isolated property 'contentMode' cannot satisfy nonisolated requirement
| `- note: mark property 'contentMode' 'nonisolated'
456 | get {
457 | playerView.contentMode
:
462 | }
463 |
464 | public func enterBackground() {
| |- note: main actor-isolated instance method 'enterBackground()' cannot satisfy nonisolated requirement
| `- note: mark instance method 'enterBackground()' 'nonisolated'
465 | playerView.playerLayer.player = nil
466 | }
467 |
468 | public func enterForeground() {
| |- note: main actor-isolated instance method 'enterForeground()' cannot satisfy nonisolated requirement
| `- note: mark instance method 'enterForeground()' 'nonisolated'
469 | playerView.playerLayer.player = playerView.player
470 | }
471 |
472 | public var seekable: Bool {
| |- note: main actor-isolated property 'seekable' cannot satisfy nonisolated requirement
| `- note: mark property 'seekable' 'nonisolated'
473 | !(player.currentItem?.seekableTimeRanges.isEmpty ?? true)
474 | }
475 |
476 | public var isMuted: Bool {
| |- note: main actor-isolated property 'isMuted' cannot satisfy nonisolated requirement
| `- note: mark property 'isMuted' 'nonisolated'
477 | get {
478 | player.isMuted
:
483 | }
484 |
485 | public func tracks(mediaType: AVFoundation.AVMediaType) -> [MediaPlayerTrack] {
| |- note: main actor-isolated instance method 'tracks(mediaType:)' cannot satisfy nonisolated requirement
| `- note: mark instance method 'tracks(mediaType:)' 'nonisolated'
486 | player.currentItem?.tracks.filter { $0.assetTrack?.mediaType == mediaType }.map { AVMediaPlayerTrack(track: $0) } ?? []
487 | }
488 |
489 | public func select(track: some MediaPlayerTrack) {
| |- note: main actor-isolated instance method 'select(track:)' cannot satisfy nonisolated requirement
| `- note: mark instance method 'select(track:)' 'nonisolated'
490 | player.currentItem?.tracks.filter { $0.assetTrack?.mediaType == track.mediaType }.forEach { $0.isEnabled = false }
491 | track.isEnabled = true
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/KSAVPlayer.swift:362:1: warning: conformance of 'KSAVPlayer' to protocol 'MediaPlayback' crosses into main actor-isolated code and can cause data races; this is an error in the Swift 6 language mode [#ConformanceIsolation]
113 | }
114 |
115 | public var naturalSize: CGSize = .zero
| |- note: main actor-isolated property 'naturalSize' cannot satisfy nonisolated requirement
| `- note: change property 'naturalSize' to a 'nonisolated let' constant
116 | public let dynamicInfo: DynamicInfo? = nil
117 | @available(macOS 12.0, iOS 15.0, tvOS 15.0, *)
:
127 |
128 | public weak var delegate: MediaPlayerDelegate?
129 | public private(set) var duration: TimeInterval = 0
| |- note: main actor-isolated property 'duration' cannot satisfy nonisolated requirement
| `- note: change property 'duration' to a 'nonisolated let' constant
130 | public private(set) var fileSize: Double = 0
| |- note: main actor-isolated property 'fileSize' cannot satisfy nonisolated requirement
| `- note: change property 'fileSize' to a 'nonisolated let' constant
131 | public private(set) var playableTime: TimeInterval = 0
132 | public let chapters: [Chapter] = []
| `- note: main actor-isolated property 'chapters' cannot satisfy nonisolated requirement
133 | public var playbackRate: Float = 1 {
134 | didSet {
:
360 | }
361 |
362 | extension KSAVPlayer: MediaPlayerProtocol {
| |- warning: conformance of 'KSAVPlayer' to protocol 'MediaPlayback' crosses into main actor-isolated code and can cause data races; this is an error in the Swift 6 language mode [#ConformanceIsolation]
| |- note: isolate this conformance to the main actor with '@MainActor'
| `- note: turn data races into runtime errors with '@preconcurrency'
363 | public var subtitleDataSouce: SubtitleDataSouce? { nil }
364 | public var isPlaying: Bool { player.rate > 0 ? true : playbackState == .playing }
365 | public var view: UIView? { playerView }
366 | public var currentPlaybackTime: TimeInterval {
| |- note: main actor-isolated property 'currentPlaybackTime' cannot satisfy nonisolated requirement
| `- note: mark property 'currentPlaybackTime' 'nonisolated'
367 | get {
368 | if shouldSeekTo > 0 {
:
397 | }
398 |
399 | public func seek(time: TimeInterval, completion: @escaping ((Bool) -> Void)) {
| |- note: main actor-isolated instance method 'seek(time:completion:)' cannot satisfy nonisolated requirement
| `- note: mark instance method 'seek(time:completion:)' 'nonisolated'
400 | let time = max(time, 0)
401 | shouldSeekTo = time
:
413 | }
414 |
415 | public func prepareToPlay() {
| |- note: main actor-isolated instance method 'prepareToPlay()' cannot satisfy nonisolated requirement
| `- note: mark instance method 'prepareToPlay()' 'nonisolated'
416 | KSLog("prepareToPlay \(self)")
417 | options.prepareTime = CACurrentMediaTime()
:
437 | }
438 |
439 | public func shutdown() {
| |- note: main actor-isolated instance method 'shutdown()' cannot satisfy nonisolated requirement
| `- note: mark instance method 'shutdown()' 'nonisolated'
440 | KSLog("shutdown \(self)")
441 | isReadyToPlay = false
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/KSAVPlayer.swift:514:27: warning: conformance of 'AVMediaPlayerTrack' to protocol 'MediaPlayerTrack' crosses into main actor-isolated code and can cause data races; this is an error in the Swift 6 language mode [#ConformanceIsolation]
512 | }
513 |
514 | class AVMediaPlayerTrack: MediaPlayerTrack {
| |- warning: conformance of 'AVMediaPlayerTrack' to protocol 'MediaPlayerTrack' crosses into main actor-isolated code and can cause data races; this is an error in the Swift 6 language mode [#ConformanceIsolation]
| |- note: isolate this conformance to the main actor with '@MainActor'
| `- note: turn data races into runtime errors with '@preconcurrency'
515 | let formatDescription: CMFormatDescription?
516 | let description: String
:
529 | var isPlayable: Bool
530 | @MainActor
531 | var isEnabled: Bool {
| `- note: main actor-isolated property 'isEnabled' cannot satisfy nonisolated requirement
532 | get {
533 | track.isEnabled
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/KSAVPlayer.swift:220:18: warning: call to main actor-isolated instance method 'observer(playerItem:)' in a synchronous nonisolated context [#ActorIsolatedCall]
218 | itemObservation = player.observe(\.currentItem) { [weak self] player, _ in
219 | guard let self else { return }
220 | self.observer(playerItem: player.currentItem)
| `- warning: call to main actor-isolated instance method 'observer(playerItem:)' in a synchronous nonisolated context [#ActorIsolatedCall]
221 | }
222 | }
:
324 | }
325 |
326 | private func observer(playerItem: AVPlayerItem?) {
| `- note: calls to instance method 'observer(playerItem:)' from outside of its actor context are implicitly asynchronous
327 | NotificationCenter.default.removeObserver(self, name: .AVPlayerItemDidPlayToEndTime, object: playerItem)
328 | NotificationCenter.default.removeObserver(self, name: .AVPlayerItemFailedToPlayToEndTime, object: playerItem)
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/KSAVPlayer.swift:313:22: warning: main actor-isolated property 'delegate' can not be referenced from a Sendable closure
126 | }
127 |
128 | public weak var delegate: MediaPlayerDelegate?
| `- note: property declared here
129 | public private(set) var duration: TimeInterval = 0
130 | public private(set) var fileSize: Double = 0
:
311 | loopCountObservation = playerLooper?.observe(\.loopCount) { [weak self] playerLooper, _ in
312 | guard let self else { return }
313 | self.delegate?.playBack(player: self, loopCount: playerLooper.loopCount)
| `- warning: main actor-isolated property 'delegate' can not be referenced from a Sendable closure
314 | }
315 | loopStatusObservation = playerLooper?.observe(\.status) { [weak self] playerLooper, _ in
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/KSAVPlayer.swift:313:32: warning: call to main actor-isolated instance method 'playBack(player:loopCount:)' in a synchronous nonisolated context [#ActorIsolatedCall]
311 | loopCountObservation = playerLooper?.observe(\.loopCount) { [weak self] playerLooper, _ in
312 | guard let self else { return }
313 | self.delegate?.playBack(player: self, loopCount: playerLooper.loopCount)
| `- warning: call to main actor-isolated instance method 'playBack(player:loopCount:)' in a synchronous nonisolated context [#ActorIsolatedCall]
314 | }
315 | loopStatusObservation = playerLooper?.observe(\.status) { [weak self] playerLooper, _ in
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/MediaPlayerProtocol.swift:113:10: note: calls to instance method 'playBack(player:loopCount:)' from outside of its actor context are implicitly asynchronous
111 | // 缓冲加载进度,0-100
112 | func changeBuffering(player: some MediaPlayerProtocol, progress: Int)
113 | func playBack(player: some MediaPlayerProtocol, loopCount: Int)
| `- note: calls to instance method 'playBack(player:loopCount:)' from outside of its actor context are implicitly asynchronous
114 | func finish(player: some MediaPlayerProtocol, error: Error?)
115 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/KSAVPlayer.swift:318:26: warning: main actor-isolated property 'error' can not be mutated from a Sendable closure
91 | private var loopStatusObservation: NSKeyValueObservation?
92 | private var mediaPlayerTracks = [AVMediaPlayerTrack]()
93 | private var error: Error? {
| `- note: mutation of this property is only permitted within the actor
94 | didSet {
95 | if let error {
:
316 | guard let self else { return }
317 | if playerLooper.status == .failed {
318 | self.error = playerLooper.error
| `- warning: main actor-isolated property 'error' can not be mutated from a Sendable closure
319 | }
320 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/KSAVPlayer.swift:356:93: warning: converting non-Sendable function value to '@Sendable (AVPlayerItem, NSKeyValueObservedChange<Bool>) -> Void' may introduce data races
354 | }
355 | }
356 | bufferEmptyObservation = playerItem.observe(\.isPlaybackBufferEmpty, changeHandler: changeHandler)
| `- warning: converting non-Sendable function value to '@Sendable (AVPlayerItem, NSKeyValueObservedChange<Bool>) -> Void' may introduce data races
357 | likelyToKeepUpObservation = playerItem.observe(\.isPlaybackLikelyToKeepUp, changeHandler: changeHandler)
358 | bufferFullObservation = playerItem.observe(\.isPlaybackBufferFull, changeHandler: changeHandler)
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/KSAVPlayer.swift:357:99: warning: converting non-Sendable function value to '@Sendable (AVPlayerItem, NSKeyValueObservedChange<Bool>) -> Void' may introduce data races
355 | }
356 | bufferEmptyObservation = playerItem.observe(\.isPlaybackBufferEmpty, changeHandler: changeHandler)
357 | likelyToKeepUpObservation = playerItem.observe(\.isPlaybackLikelyToKeepUp, changeHandler: changeHandler)
| `- warning: converting non-Sendable function value to '@Sendable (AVPlayerItem, NSKeyValueObservedChange<Bool>) -> Void' may introduce data races
358 | bufferFullObservation = playerItem.observe(\.isPlaybackBufferFull, changeHandler: changeHandler)
359 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/KSAVPlayer.swift:358:91: warning: converting non-Sendable function value to '@Sendable (AVPlayerItem, NSKeyValueObservedChange<Bool>) -> Void' may introduce data races
356 | bufferEmptyObservation = playerItem.observe(\.isPlaybackBufferEmpty, changeHandler: changeHandler)
357 | likelyToKeepUpObservation = playerItem.observe(\.isPlaybackLikelyToKeepUp, changeHandler: changeHandler)
358 | bufferFullObservation = playerItem.observe(\.isPlaybackBufferFull, changeHandler: changeHandler)
| `- warning: converting non-Sendable function value to '@Sendable (AVPlayerItem, NSKeyValueObservedChange<Bool>) -> Void' may introduce data races
359 | }
360 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/KSAVPlayer.swift:339:18: warning: call to main actor-isolated instance method 'updateStatus(item:)' in a synchronous nonisolated context [#ActorIsolatedCall]
246 | }
247 |
248 | private func updateStatus(item: AVPlayerItem) {
| `- note: calls to instance method 'updateStatus(item:)' from outside of its actor context are implicitly asynchronous
249 | if item.status == .readyToPlay {
250 | options.findTime = CACurrentMediaTime()
:
337 | statusObservation = playerItem.observe(\.status) { [weak self] item, _ in
338 | guard let self else { return }
339 | self.updateStatus(item: item)
| `- warning: call to main actor-isolated instance method 'updateStatus(item:)' in a synchronous nonisolated context [#ActorIsolatedCall]
340 | }
341 | loadedTimeRangesObservation = playerItem.observe(\.loadedTimeRanges) { [weak self] item, _ in
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/KSAVPlayer.swift:344:18: warning: call to main actor-isolated instance method 'updatePlayableDuration(item:)' in a synchronous nonisolated context [#ActorIsolatedCall]
272 | }
273 |
274 | private func updatePlayableDuration(item: AVPlayerItem) {
| `- note: calls to instance method 'updatePlayableDuration(item:)' from outside of its actor context are implicitly asynchronous
275 | let first = item.loadedTimeRanges.first { CMTimeRangeContainsTime($0.timeRangeValue, time: item.currentTime()) }
276 | if let first {
:
342 | guard let self else { return }
343 | // 计算缓冲进度
344 | self.updatePlayableDuration(item: item)
| `- warning: call to main actor-isolated instance method 'updatePlayableDuration(item:)' in a synchronous nonisolated context [#ActorIsolatedCall]
345 | }
346 |
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/KSAVPlayer.swift:411:13: warning: capture of 'completion' with non-Sendable type '(Bool) -> Void' in a '@Sendable' closure [#SendableClosureCaptures]
409 | guard let self else { return }
410 | self.shouldSeekTo = 0
411 | completion(finished)
| |- warning: capture of 'completion' with non-Sendable type '(Bool) -> Void' in a '@Sendable' closure [#SendableClosureCaptures]
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
412 | }
413 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/KSAVPlayer.swift:410:18: warning: main actor-isolated property 'shouldSeekTo' can not be mutated from a Sendable closure
80 | private let playerView = KSAVPlayerView()
81 | private var urlAsset: AVURLAsset
82 | private var shouldSeekTo = TimeInterval(0)
| `- note: mutation of this property is only permitted within the actor
83 | private var playerLooper: AVPlayerLooper?
84 | private var statusObservation: NSKeyValueObservation?
:
408 | [weak self] finished in
409 | guard let self else { return }
410 | self.shouldSeekTo = 0
| `- warning: main actor-isolated property 'shouldSeekTo' can not be mutated from a Sendable closure
411 | completion(finished)
412 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/KSAVPlayer.swift:555:39: warning: treating a forced downcast to 'CMFormatDescription' as optional will never produce 'nil'
553 | // swiftlint:disable force_cast
554 | if let first = track.assetTrack?.formatDescriptions.first {
555 | formatDescription = first as! CMFormatDescription
| | | `- note: use 'as?' to perform a conditional downcast to 'CMFormatDescription'
| | `- warning: treating a forced downcast to 'CMFormatDescription' as optional will never produce 'nil'
| `- note: add parentheses around the cast to silence this warning
556 | } else {
557 | formatDescription = nil
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/KSAVPlayer.swift:542:25: warning: main actor-isolated property 'assetTrack' can not be referenced from a nonisolated context
540 | init(track: AVPlayerItemTrack) {
541 | self.track = track
542 | trackID = track.assetTrack?.trackID ?? 0
| `- warning: main actor-isolated property 'assetTrack' can not be referenced from a nonisolated context
543 | mediaType = track.assetTrack?.mediaType ?? .video
544 | name = track.assetTrack?.languageCode ?? ""
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX27.0.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVPlayerItemTrack.h:45:57: note: property declared here
43 | notification queue. By default, this queue is the main queue.
44 | */
45 | @property (nonatomic, readonly, nullable) AVAssetTrack *assetTrack;
| `- note: property declared here
46 |
47 | /*!
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/KSAVPlayer.swift:543:27: warning: main actor-isolated property 'assetTrack' can not be referenced from a nonisolated context
541 | self.track = track
542 | trackID = track.assetTrack?.trackID ?? 0
543 | mediaType = track.assetTrack?.mediaType ?? .video
| `- warning: main actor-isolated property 'assetTrack' can not be referenced from a nonisolated context
544 | name = track.assetTrack?.languageCode ?? ""
545 | languageCode = track.assetTrack?.languageCode
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX27.0.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVPlayerItemTrack.h:45:57: note: property declared here
43 | notification queue. By default, this queue is the main queue.
44 | */
45 | @property (nonatomic, readonly, nullable) AVAssetTrack *assetTrack;
| `- note: property declared here
46 |
47 | /*!
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/KSAVPlayer.swift:544:22: warning: main actor-isolated property 'assetTrack' can not be referenced from a nonisolated context
542 | trackID = track.assetTrack?.trackID ?? 0
543 | mediaType = track.assetTrack?.mediaType ?? .video
544 | name = track.assetTrack?.languageCode ?? ""
| `- warning: main actor-isolated property 'assetTrack' can not be referenced from a nonisolated context
545 | languageCode = track.assetTrack?.languageCode
546 | nominalFrameRate = track.assetTrack?.nominalFrameRate ?? 24.0
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX27.0.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVPlayerItemTrack.h:45:57: note: property declared here
43 | notification queue. By default, this queue is the main queue.
44 | */
45 | @property (nonatomic, readonly, nullable) AVAssetTrack *assetTrack;
| `- note: property declared here
46 |
47 | /*!
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/KSAVPlayer.swift:545:30: warning: main actor-isolated property 'assetTrack' can not be referenced from a nonisolated context
543 | mediaType = track.assetTrack?.mediaType ?? .video
544 | name = track.assetTrack?.languageCode ?? ""
545 | languageCode = track.assetTrack?.languageCode
| `- warning: main actor-isolated property 'assetTrack' can not be referenced from a nonisolated context
546 | nominalFrameRate = track.assetTrack?.nominalFrameRate ?? 24.0
547 | bitRate = Int64(track.assetTrack?.estimatedDataRate ?? 0)
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX27.0.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVPlayerItemTrack.h:45:57: note: property declared here
43 | notification queue. By default, this queue is the main queue.
44 | */
45 | @property (nonatomic, readonly, nullable) AVAssetTrack *assetTrack;
| `- note: property declared here
46 |
47 | /*!
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/KSAVPlayer.swift:546:34: warning: main actor-isolated property 'assetTrack' can not be referenced from a nonisolated context
544 | name = track.assetTrack?.languageCode ?? ""
545 | languageCode = track.assetTrack?.languageCode
546 | nominalFrameRate = track.assetTrack?.nominalFrameRate ?? 24.0
| `- warning: main actor-isolated property 'assetTrack' can not be referenced from a nonisolated context
547 | bitRate = Int64(track.assetTrack?.estimatedDataRate ?? 0)
548 | #if os(xrOS)
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX27.0.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVPlayerItemTrack.h:45:57: note: property declared here
43 | notification queue. By default, this queue is the main queue.
44 | */
45 | @property (nonatomic, readonly, nullable) AVAssetTrack *assetTrack;
| `- note: property declared here
46 |
47 | /*!
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/KSAVPlayer.swift:547:31: warning: main actor-isolated property 'assetTrack' can not be referenced from a nonisolated context
545 | languageCode = track.assetTrack?.languageCode
546 | nominalFrameRate = track.assetTrack?.nominalFrameRate ?? 24.0
547 | bitRate = Int64(track.assetTrack?.estimatedDataRate ?? 0)
| `- warning: main actor-isolated property 'assetTrack' can not be referenced from a nonisolated context
548 | #if os(xrOS)
549 | isPlayable = false
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX27.0.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVPlayerItemTrack.h:45:57: note: property declared here
43 | notification queue. By default, this queue is the main queue.
44 | */
45 | @property (nonatomic, readonly, nullable) AVAssetTrack *assetTrack;
| `- note: property declared here
46 |
47 | /*!
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/KSAVPlayer.swift:551:28: warning: main actor-isolated property 'assetTrack' can not be referenced from a nonisolated context
549 | isPlayable = false
550 | #else
551 | isPlayable = track.assetTrack?.isPlayable ?? false
| `- warning: main actor-isolated property 'assetTrack' can not be referenced from a nonisolated context
552 | #endif
553 | // swiftlint:disable force_cast
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX27.0.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVPlayerItemTrack.h:45:57: note: property declared here
43 | notification queue. By default, this queue is the main queue.
44 | */
45 | @property (nonatomic, readonly, nullable) AVAssetTrack *assetTrack;
| `- note: property declared here
46 |
47 | /*!
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/KSAVPlayer.swift:554:30: warning: main actor-isolated property 'assetTrack' can not be referenced from a nonisolated context
552 | #endif
553 | // swiftlint:disable force_cast
554 | if let first = track.assetTrack?.formatDescriptions.first {
| `- warning: main actor-isolated property 'assetTrack' can not be referenced from a nonisolated context
555 | formatDescription = first as! CMFormatDescription
556 | } else {
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX27.0.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVPlayerItemTrack.h:45:57: note: property declared here
43 | notification queue. By default, this queue is the main queue.
44 | */
45 | @property (nonatomic, readonly, nullable) AVAssetTrack *assetTrack;
| `- note: property declared here
46 |
47 | /*!
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/KSAVPlayer.swift:586:17: warning: capture of 'handler' with non-Sendable type '(CGImage?) -> Void' in a '@Sendable' closure [#SendableClosureCaptures]
584 | imageGenerator.generateCGImagesAsynchronously(forTimes: [NSValue(time: currentTime)]) { _, cgImage, _, _, _ in
585 | if let cgImage {
586 | handler(cgImage)
| |- warning: capture of 'handler' with non-Sendable type '(CGImage?) -> Void' in a '@Sendable' closure [#SendableClosureCaptures]
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
587 | } else {
588 | handler(nil)
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/KSOptions.swift:458:16: warning: static property 'firstPlayerType' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode [#MutableGlobalVariable]
456 |
457 | public extension KSOptions {
458 | static var firstPlayerType: MediaPlayerProtocol.Type = KSAVPlayer.self
| |- warning: static property 'firstPlayerType' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode [#MutableGlobalVariable]
| |- note: convert 'firstPlayerType' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'firstPlayerType' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
459 | static var secondPlayerType: MediaPlayerProtocol.Type? = KSMEPlayer.self
460 | /// 最低缓存视频时间
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/KSOptions.swift:459:16: warning: static property 'secondPlayerType' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode [#MutableGlobalVariable]
457 | public extension KSOptions {
458 | static var firstPlayerType: MediaPlayerProtocol.Type = KSAVPlayer.self
459 | static var secondPlayerType: MediaPlayerProtocol.Type? = KSMEPlayer.self
| |- warning: static property 'secondPlayerType' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode [#MutableGlobalVariable]
| |- note: convert 'secondPlayerType' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'secondPlayerType' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
460 | /// 最低缓存视频时间
461 | static var preferredForwardBufferDuration = 3.0
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/KSOptions.swift:461:16: warning: static property 'preferredForwardBufferDuration' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode [#MutableGlobalVariable]
459 | static var secondPlayerType: MediaPlayerProtocol.Type? = KSMEPlayer.self
460 | /// 最低缓存视频时间
461 | static var preferredForwardBufferDuration = 3.0
| |- warning: static property 'preferredForwardBufferDuration' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode [#MutableGlobalVariable]
| |- note: convert 'preferredForwardBufferDuration' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'preferredForwardBufferDuration' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
462 | /// 最大缓存视频时间
463 | static var maxBufferDuration = 30.0
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/KSOptions.swift:463:16: warning: static property 'maxBufferDuration' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode [#MutableGlobalVariable]
461 | static var preferredForwardBufferDuration = 3.0
462 | /// 最大缓存视频时间
463 | static var maxBufferDuration = 30.0
| |- warning: static property 'maxBufferDuration' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode [#MutableGlobalVariable]
| |- note: convert 'maxBufferDuration' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'maxBufferDuration' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
464 | /// 是否开启秒开
465 | static var isSecondOpen = false
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/KSOptions.swift:465:16: warning: static property 'isSecondOpen' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode [#MutableGlobalVariable]
463 | static var maxBufferDuration = 30.0
464 | /// 是否开启秒开
465 | static var isSecondOpen = false
| |- warning: static property 'isSecondOpen' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode [#MutableGlobalVariable]
| |- note: convert 'isSecondOpen' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'isSecondOpen' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
466 | /// 开启精确seek
467 | static var isAccurateSeek = false
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/KSOptions.swift:467:16: warning: static property 'isAccurateSeek' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode [#MutableGlobalVariable]
465 | static var isSecondOpen = false
466 | /// 开启精确seek
467 | static var isAccurateSeek = false
| |- warning: static property 'isAccurateSeek' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode [#MutableGlobalVariable]
| |- note: convert 'isAccurateSeek' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'isAccurateSeek' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
468 | /// Applies to short videos only
469 | static var isLoopPlay = false
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/KSOptions.swift:469:16: warning: static property 'isLoopPlay' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode [#MutableGlobalVariable]
467 | static var isAccurateSeek = false
468 | /// Applies to short videos only
469 | static var isLoopPlay = false
| |- warning: static property 'isLoopPlay' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode [#MutableGlobalVariable]
| |- note: convert 'isLoopPlay' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'isLoopPlay' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
470 | /// 是否自动播放,默认true
471 | static var isAutoPlay = true
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/KSOptions.swift:471:16: warning: static property 'isAutoPlay' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode [#MutableGlobalVariable]
469 | static var isLoopPlay = false
470 | /// 是否自动播放,默认true
471 | static var isAutoPlay = true
| |- warning: static property 'isAutoPlay' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode [#MutableGlobalVariable]
| |- note: convert 'isAutoPlay' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'isAutoPlay' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
472 | /// seek完是否自动播放
473 | static var isSeekedAutoPlay = true
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/KSOptions.swift:473:16: warning: static property 'isSeekedAutoPlay' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode [#MutableGlobalVariable]
471 | static var isAutoPlay = true
472 | /// seek完是否自动播放
473 | static var isSeekedAutoPlay = true
| |- warning: static property 'isSeekedAutoPlay' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode [#MutableGlobalVariable]
| |- note: convert 'isSeekedAutoPlay' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'isSeekedAutoPlay' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
474 | static var hardwareDecode = true
475 | // 默认不用自研的硬解,因为有些视频的AVPacket的pts顺序是不对的,只有解码后的AVFrame里面的pts是对的。
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/KSOptions.swift:474:16: warning: static property 'hardwareDecode' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode [#MutableGlobalVariable]
472 | /// seek完是否自动播放
473 | static var isSeekedAutoPlay = true
474 | static var hardwareDecode = true
| |- warning: static property 'hardwareDecode' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode [#MutableGlobalVariable]
| |- note: convert 'hardwareDecode' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'hardwareDecode' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
475 | // 默认不用自研的硬解,因为有些视频的AVPacket的pts顺序是不对的,只有解码后的AVFrame里面的pts是对的。
476 | static var asynchronousDecompression = false
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/KSOptions.swift:476:16: warning: static property 'asynchronousDecompression' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode [#MutableGlobalVariable]
474 | static var hardwareDecode = true
475 | // 默认不用自研的硬解,因为有些视频的AVPacket的pts顺序是不对的,只有解码后的AVFrame里面的pts是对的。
476 | static var asynchronousDecompression = false
| |- warning: static property 'asynchronousDecompression' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode [#MutableGlobalVariable]
| |- note: convert 'asynchronousDecompression' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'asynchronousDecompression' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
477 | static var isPipPopViewController = false
478 | static var canStartPictureInPictureAutomaticallyFromInline = true
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/KSOptions.swift:477:16: warning: static property 'isPipPopViewController' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode [#MutableGlobalVariable]
475 | // 默认不用自研的硬解,因为有些视频的AVPacket的pts顺序是不对的,只有解码后的AVFrame里面的pts是对的。
476 | static var asynchronousDecompression = false
477 | static var isPipPopViewController = false
| |- warning: static property 'isPipPopViewController' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode [#MutableGlobalVariable]
| |- note: convert 'isPipPopViewController' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'isPipPopViewController' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
478 | static var canStartPictureInPictureAutomaticallyFromInline = true
479 | static var preferredFrame = true
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/KSOptions.swift:478:16: warning: static property 'canStartPictureInPictureAutomaticallyFromInline' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode [#MutableGlobalVariable]
476 | static var asynchronousDecompression = false
477 | static var isPipPopViewController = false
478 | static var canStartPictureInPictureAutomaticallyFromInline = true
| |- warning: static property 'canStartPictureInPictureAutomaticallyFromInline' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode [#MutableGlobalVariable]
| |- note: convert 'canStartPictureInPictureAutomaticallyFromInline' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'canStartPictureInPictureAutomaticallyFromInline' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
479 | static var preferredFrame = true
480 | static var useSystemHTTPProxy = true
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/KSOptions.swift:479:16: warning: static property 'preferredFrame' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode [#MutableGlobalVariable]
477 | static var isPipPopViewController = false
478 | static var canStartPictureInPictureAutomaticallyFromInline = true
479 | static var preferredFrame = true
| |- warning: static property 'preferredFrame' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode [#MutableGlobalVariable]
| |- note: convert 'preferredFrame' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'preferredFrame' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
480 | static var useSystemHTTPProxy = true
481 | /// 日志级别
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/KSOptions.swift:480:16: warning: static property 'useSystemHTTPProxy' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode [#MutableGlobalVariable]
478 | static var canStartPictureInPictureAutomaticallyFromInline = true
479 | static var preferredFrame = true
480 | static var useSystemHTTPProxy = true
| |- warning: static property 'useSystemHTTPProxy' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode [#MutableGlobalVariable]
| |- note: convert 'useSystemHTTPProxy' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'useSystemHTTPProxy' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
481 | /// 日志级别
482 | static var logLevel = LogLevel.warning
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/KSOptions.swift:482:16: warning: static property 'logLevel' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode [#MutableGlobalVariable]
480 | static var useSystemHTTPProxy = true
481 | /// 日志级别
482 | static var logLevel = LogLevel.warning
| |- warning: static property 'logLevel' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode [#MutableGlobalVariable]
| |- note: convert 'logLevel' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'logLevel' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
483 | static var logger: LogHandler = OSLog(lable: "KSPlayer")
484 | internal static func deviceCpuCount() -> Int {
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/KSOptions.swift:483:16: warning: static property 'logger' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode [#MutableGlobalVariable]
481 | /// 日志级别
482 | static var logLevel = LogLevel.warning
483 | static var logger: LogHandler = OSLog(lable: "KSPlayer")
| |- warning: static property 'logger' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode [#MutableGlobalVariable]
| |- note: convert 'logger' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'logger' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
484 | internal static func deviceCpuCount() -> Int {
485 | var ncpu = UInt(0)
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/KSOptions.swift:317:21: warning: variable 'yadifMode' was never mutated; consider changing to 'let' constant [#VariableNeverMutated]
315 | asynchronousDecompression = false
316 | let yadif = hardwareDecode ? "yadif_videotoolbox" : "yadif"
317 | var yadifMode = KSOptions.yadifMode
| `- warning: variable 'yadifMode' was never mutated; consider changing to 'let' constant [#VariableNeverMutated]
318 | // if let assetTrack = assetTrack as? FFmpegAssetTrack {
319 | // if assetTrack.realFrameRate.num == 2 * assetTrack.avgFrameRate.num, assetTrack.realFrameRate.den == assetTrack.avgFrameRate.den {
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/KSPictureInPictureController.swift:12:24: warning: static property 'pipController' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode [#MutableGlobalVariable]
10 | @available(tvOS 14.0, *)
11 | public class KSPictureInPictureController: AVPictureInPictureController {
12 | private static var pipController: KSPictureInPictureController?
| |- warning: static property 'pipController' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode [#MutableGlobalVariable]
| |- note: convert 'pipController' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'pipController' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
13 | private var originalViewController: UIViewController?
14 | private var view: KSPlayerLayer?
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/KSPlayerLayer.swift:84:35: warning: capture of 'self' with non-Sendable type 'KSPlayerLayer?' in a '@Sendable' closure [#SendableClosureCaptures]
65 | }
66 |
67 | open class KSPlayerLayer: NSObject {
| `- note: class 'KSPlayerLayer' does not conform to the 'Sendable' protocol
68 | public weak var delegate: KSPlayerLayerDelegate?
69 | @Published
:
82 | // 一定要async才不会pip之后就暂停播放
83 | DispatchQueue.main.async { [weak self] in
84 | guard let self else { return }
| `- warning: capture of 'self' with non-Sendable type 'KSPlayerLayer?' in a '@Sendable' closure [#SendableClosureCaptures]
85 | pipController.start(view: self)
86 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/KSPlayerLayer.swift:85:25: warning: capture of 'pipController' with non-Sendable type 'KSPictureInPictureController' in a '@Sendable' closure [#SendableClosureCaptures]
83 | DispatchQueue.main.async { [weak self] in
84 | guard let self else { return }
85 | pipController.start(view: self)
| `- warning: capture of 'pipController' with non-Sendable type 'KSPictureInPictureController' in a '@Sendable' closure [#SendableClosureCaptures]
86 | }
87 | } else {
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/KSPictureInPictureController.swift:11:14: note: class 'KSPictureInPictureController' does not conform to the 'Sendable' protocol
9 |
10 | @available(tvOS 14.0, *)
11 | public class KSPictureInPictureController: AVPictureInPictureController {
| `- note: class 'KSPictureInPictureController' does not conform to the 'Sendable' protocol
12 | private static var pipController: KSPictureInPictureController?
13 | private var originalViewController: UIViewController?
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/KSPlayerLayer.swift:102:73: warning: main actor-isolated property 'superview' can not be referenced from a nonisolated context
100 | runOnMainThread { [weak self] in
101 | guard let self else { return }
102 | if let oldView = oldValue.view, let superview = oldView.superview, let view = player.view {
| `- warning: main actor-isolated property 'superview' can not be referenced from a nonisolated context
103 | #if canImport(UIKit)
104 | superview.insertSubview(view, belowSubview: oldView)
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX27.0.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSView.h:87:59: note: property declared here
85 |
86 | @property (nullable, readonly, unsafe_unretained) NSWindow *window;
87 | @property (nullable, readonly, unsafe_unretained) NSView *superview;
| `- note: property declared here
88 | @property (copy) NSArray<__kindof NSView *> *subviews;
89 | - (BOOL)isDescendantOf:(NSView *)view;
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/KSPlayerLayer.swift:106:31: warning: call to main actor-isolated instance method 'addSubview(_:positioned:relativeTo:)' in a synchronous nonisolated context [#ActorIsolatedCall]
104 | superview.insertSubview(view, belowSubview: oldView)
105 | #else
106 | superview.addSubview(view, positioned: .below, relativeTo: oldView)
| `- warning: call to main actor-isolated instance method 'addSubview(_:positioned:relativeTo:)' in a synchronous nonisolated context [#ActorIsolatedCall]
107 | #endif
108 | view.translatesAutoresizingMaskIntoConstraints = false
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX27.0.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSView.h:102:1: note: calls to instance method 'addSubview(_:positioned:relativeTo:)' from outside of its actor context are implicitly asynchronous
100 |
101 | - (void)addSubview:(NSView *)view;
102 | - (void)addSubview:(NSView *)view positioned:(NSWindowOrderingMode)place relativeTo:(nullable NSView *)otherView;
| |- note: calls to instance method 'addSubview(_:positioned:relativeTo:)' from outside of its actor context are implicitly asynchronous
| `- note: main actor isolation inferred from inheritance from class 'NSResponder'
103 | - (void)sortSubviewsUsingFunction:(NSComparisonResult (NS_NOESCAPE *)(__kindof NSView *, __kindof NSView *, void * _Nullable))compare context:(nullable void *)context;
104 |
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/KSPlayerLayer.swift:108:26: warning: main actor-isolated property 'translatesAutoresizingMaskIntoConstraints' can not be mutated from a nonisolated context
106 | superview.addSubview(view, positioned: .below, relativeTo: oldView)
107 | #endif
108 | view.translatesAutoresizingMaskIntoConstraints = false
| `- warning: main actor-isolated property 'translatesAutoresizingMaskIntoConstraints' can not be mutated from a nonisolated context
109 | NSLayoutConstraint.activate([
110 | view.topAnchor.constraint(equalTo: superview.topAnchor),
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX27.0.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSLayoutConstraint.h:276:16: note: mutation of this property is only permitted within the actor
274 | /* by default, the autoresizing mask on a view gives rise to constraints that fully determine the view's position. To do anything interesting with constraints, you need to turn that off. IB will turn it off.
275 | */
276 | @property BOOL translatesAutoresizingMaskIntoConstraints API_AVAILABLE(macos(10.7));
| `- note: mutation of this property is only permitted within the actor
277 |
278 | /* constraint based layout engages lazily when someone tries to use it. If you do all of your constraint set up in -updateConstraints, you might never even receive updateConstraints if no one makes a constraint. To fix this chicken and egg problem, override this method to return YES if your view needs the window to use constraint based layout.
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/KSPlayerLayer.swift:110:30: warning: main actor-isolated property 'topAnchor' can not be referenced from a nonisolated context
108 | view.translatesAutoresizingMaskIntoConstraints = false
109 | NSLayoutConstraint.activate([
110 | view.topAnchor.constraint(equalTo: superview.topAnchor),
| `- warning: main actor-isolated property 'topAnchor' can not be referenced from a nonisolated context
111 | view.leadingAnchor.constraint(equalTo: superview.leadingAnchor),
112 | view.bottomAnchor.constraint(equalTo: superview.bottomAnchor),
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX27.0.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSLayoutConstraint.h:228:51: note: property declared here
226 | @property (readonly, strong) NSLayoutXAxisAnchor *leftAnchor API_AVAILABLE(macos(10.11));
227 | @property (readonly, strong) NSLayoutXAxisAnchor *rightAnchor API_AVAILABLE(macos(10.11));
228 | @property (readonly, strong) NSLayoutYAxisAnchor *topAnchor API_AVAILABLE(macos(10.11));
| `- note: property declared here
229 | @property (readonly, strong) NSLayoutYAxisAnchor *bottomAnchor API_AVAILABLE(macos(10.11));
230 | @property (readonly, strong) NSLayoutDimension *widthAnchor API_AVAILABLE(macos(10.11));
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/KSPlayerLayer.swift:110:70: warning: main actor-isolated property 'topAnchor' can not be referenced from a nonisolated context
108 | view.translatesAutoresizingMaskIntoConstraints = false
109 | NSLayoutConstraint.activate([
110 | view.topAnchor.constraint(equalTo: superview.topAnchor),
| `- warning: main actor-isolated property 'topAnchor' can not be referenced from a nonisolated context
111 | view.leadingAnchor.constraint(equalTo: superview.leadingAnchor),
112 | view.bottomAnchor.constraint(equalTo: superview.bottomAnchor),
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX27.0.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSLayoutConstraint.h:228:51: note: property declared here
226 | @property (readonly, strong) NSLayoutXAxisAnchor *leftAnchor API_AVAILABLE(macos(10.11));
227 | @property (readonly, strong) NSLayoutXAxisAnchor *rightAnchor API_AVAILABLE(macos(10.11));
228 | @property (readonly, strong) NSLayoutYAxisAnchor *topAnchor API_AVAILABLE(macos(10.11));
| `- note: property declared here
229 | @property (readonly, strong) NSLayoutYAxisAnchor *bottomAnchor API_AVAILABLE(macos(10.11));
230 | @property (readonly, strong) NSLayoutDimension *widthAnchor API_AVAILABLE(macos(10.11));
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/KSPlayerLayer.swift:111:30: warning: main actor-isolated property 'leadingAnchor' can not be referenced from a nonisolated context
109 | NSLayoutConstraint.activate([
110 | view.topAnchor.constraint(equalTo: superview.topAnchor),
111 | view.leadingAnchor.constraint(equalTo: superview.leadingAnchor),
| `- warning: main actor-isolated property 'leadingAnchor' can not be referenced from a nonisolated context
112 | view.bottomAnchor.constraint(equalTo: superview.bottomAnchor),
113 | view.trailingAnchor.constraint(equalTo: superview.trailingAnchor),
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX27.0.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSLayoutConstraint.h:224:51: note: property declared here
222 | See NSLayoutAnchor.h for more details.
223 | */
224 | @property (readonly, strong) NSLayoutXAxisAnchor *leadingAnchor API_AVAILABLE(macos(10.11));
| `- note: property declared here
225 | @property (readonly, strong) NSLayoutXAxisAnchor *trailingAnchor API_AVAILABLE(macos(10.11));
226 | @property (readonly, strong) NSLayoutXAxisAnchor *leftAnchor API_AVAILABLE(macos(10.11));
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/KSPlayerLayer.swift:111:74: warning: main actor-isolated property 'leadingAnchor' can not be referenced from a nonisolated context
109 | NSLayoutConstraint.activate([
110 | view.topAnchor.constraint(equalTo: superview.topAnchor),
111 | view.leadingAnchor.constraint(equalTo: superview.leadingAnchor),
| `- warning: main actor-isolated property 'leadingAnchor' can not be referenced from a nonisolated context
112 | view.bottomAnchor.constraint(equalTo: superview.bottomAnchor),
113 | view.trailingAnchor.constraint(equalTo: superview.trailingAnchor),
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX27.0.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSLayoutConstraint.h:224:51: note: property declared here
222 | See NSLayoutAnchor.h for more details.
223 | */
224 | @property (readonly, strong) NSLayoutXAxisAnchor *leadingAnchor API_AVAILABLE(macos(10.11));
| `- note: property declared here
225 | @property (readonly, strong) NSLayoutXAxisAnchor *trailingAnchor API_AVAILABLE(macos(10.11));
226 | @property (readonly, strong) NSLayoutXAxisAnchor *leftAnchor API_AVAILABLE(macos(10.11));
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/KSPlayerLayer.swift:112:30: warning: main actor-isolated property 'bottomAnchor' can not be referenced from a nonisolated context
110 | view.topAnchor.constraint(equalTo: superview.topAnchor),
111 | view.leadingAnchor.constraint(equalTo: superview.leadingAnchor),
112 | view.bottomAnchor.constraint(equalTo: superview.bottomAnchor),
| `- warning: main actor-isolated property 'bottomAnchor' can not be referenced from a nonisolated context
113 | view.trailingAnchor.constraint(equalTo: superview.trailingAnchor),
114 | ])
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX27.0.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSLayoutConstraint.h:229:51: note: property declared here
227 | @property (readonly, strong) NSLayoutXAxisAnchor *rightAnchor API_AVAILABLE(macos(10.11));
228 | @property (readonly, strong) NSLayoutYAxisAnchor *topAnchor API_AVAILABLE(macos(10.11));
229 | @property (readonly, strong) NSLayoutYAxisAnchor *bottomAnchor API_AVAILABLE(macos(10.11));
| `- note: property declared here
230 | @property (readonly, strong) NSLayoutDimension *widthAnchor API_AVAILABLE(macos(10.11));
231 | @property (readonly, strong) NSLayoutDimension *heightAnchor API_AVAILABLE(macos(10.11));
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/KSPlayerLayer.swift:112:73: warning: main actor-isolated property 'bottomAnchor' can not be referenced from a nonisolated context
110 | view.topAnchor.constraint(equalTo: superview.topAnchor),
111 | view.leadingAnchor.constraint(equalTo: superview.leadingAnchor),
112 | view.bottomAnchor.constraint(equalTo: superview.bottomAnchor),
| `- warning: main actor-isolated property 'bottomAnchor' can not be referenced from a nonisolated context
113 | view.trailingAnchor.constraint(equalTo: superview.trailingAnchor),
114 | ])
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX27.0.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSLayoutConstraint.h:229:51: note: property declared here
227 | @property (readonly, strong) NSLayoutXAxisAnchor *rightAnchor API_AVAILABLE(macos(10.11));
228 | @property (readonly, strong) NSLayoutYAxisAnchor *topAnchor API_AVAILABLE(macos(10.11));
229 | @property (readonly, strong) NSLayoutYAxisAnchor *bottomAnchor API_AVAILABLE(macos(10.11));
| `- note: property declared here
230 | @property (readonly, strong) NSLayoutDimension *widthAnchor API_AVAILABLE(macos(10.11));
231 | @property (readonly, strong) NSLayoutDimension *heightAnchor API_AVAILABLE(macos(10.11));
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/KSPlayerLayer.swift:113:30: warning: main actor-isolated property 'trailingAnchor' can not be referenced from a nonisolated context
111 | view.leadingAnchor.constraint(equalTo: superview.leadingAnchor),
112 | view.bottomAnchor.constraint(equalTo: superview.bottomAnchor),
113 | view.trailingAnchor.constraint(equalTo: superview.trailingAnchor),
| `- warning: main actor-isolated property 'trailingAnchor' can not be referenced from a nonisolated context
114 | ])
115 | }
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX27.0.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSLayoutConstraint.h:225:51: note: property declared here
223 | */
224 | @property (readonly, strong) NSLayoutXAxisAnchor *leadingAnchor API_AVAILABLE(macos(10.11));
225 | @property (readonly, strong) NSLayoutXAxisAnchor *trailingAnchor API_AVAILABLE(macos(10.11));
| `- note: property declared here
226 | @property (readonly, strong) NSLayoutXAxisAnchor *leftAnchor API_AVAILABLE(macos(10.11));
227 | @property (readonly, strong) NSLayoutXAxisAnchor *rightAnchor API_AVAILABLE(macos(10.11));
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/KSPlayerLayer.swift:113:75: warning: main actor-isolated property 'trailingAnchor' can not be referenced from a nonisolated context
111 | view.leadingAnchor.constraint(equalTo: superview.leadingAnchor),
112 | view.bottomAnchor.constraint(equalTo: superview.bottomAnchor),
113 | view.trailingAnchor.constraint(equalTo: superview.trailingAnchor),
| `- warning: main actor-isolated property 'trailingAnchor' can not be referenced from a nonisolated context
114 | ])
115 | }
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX27.0.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSLayoutConstraint.h:225:51: note: property declared here
223 | */
224 | @property (readonly, strong) NSLayoutXAxisAnchor *leadingAnchor API_AVAILABLE(macos(10.11));
225 | @property (readonly, strong) NSLayoutXAxisAnchor *trailingAnchor API_AVAILABLE(macos(10.11));
| `- note: property declared here
226 | @property (readonly, strong) NSLayoutXAxisAnchor *leftAnchor API_AVAILABLE(macos(10.11));
227 | @property (readonly, strong) NSLayoutXAxisAnchor *rightAnchor API_AVAILABLE(macos(10.11));
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/KSPlayerLayer.swift:116:32: warning: call to main actor-isolated instance method 'removeFromSuperview()' in a synchronous nonisolated context [#ActorIsolatedCall]
114 | ])
115 | }
116 | oldValue.view?.removeFromSuperview()
| `- warning: call to main actor-isolated instance method 'removeFromSuperview()' in a synchronous nonisolated context [#ActorIsolatedCall]
117 | }
118 | player.playbackRate = oldValue.playbackRate
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX27.0.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSView.h:115:1: note: calls to instance method 'removeFromSuperview()' from outside of its actor context are implicitly asynchronous
113 | - (void)willRemoveSubview:(NSView *)subview;
114 |
115 | - (void)removeFromSuperview;
| |- note: calls to instance method 'removeFromSuperview()' from outside of its actor context are implicitly asynchronous
| `- note: main actor isolation inferred from inheritance from class 'NSResponder'
116 | - (void)replaceSubview:(NSView *)oldView with:(NSView *)newView;
117 | - (void)removeFromSuperviewWithoutNeedingDisplay;
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/KSPlayerLayer.swift:176:19: warning: capture of 'self' with non-Sendable type 'KSPlayerLayer?' in a '@Sendable' closure [#SendableClosureCaptures]
65 | }
66 |
67 | open class KSPlayerLayer: NSObject {
| `- note: class 'KSPlayerLayer' does not conform to the 'Sendable' protocol
68 | public weak var delegate: KSPlayerLayerDelegate?
69 | @Published
:
174 |
175 | private lazy var timer: Timer = .scheduledTimer(withTimeInterval: 0.1, repeats: true) { [weak self] _ in
176 | guard let self, self.player.isReadyToPlay else {
| `- warning: capture of 'self' with non-Sendable type 'KSPlayerLayer?' in a '@Sendable' closure [#SendableClosureCaptures]
177 | return
178 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/KSPlayerLayer.swift:179:24: warning: call to main actor-isolated instance method 'player(layer:currentTime:totalTime:)' in a synchronous nonisolated context [#ActorIsolatedCall]
60 | public protocol KSPlayerLayerDelegate: AnyObject {
61 | func player(layer: KSPlayerLayer, state: KSPlayerState)
62 | func player(layer: KSPlayerLayer, currentTime: TimeInterval, totalTime: TimeInterval)
| `- note: calls to instance method 'player(layer:currentTime:totalTime:)' from outside of its actor context are implicitly asynchronous
63 | func player(layer: KSPlayerLayer, finish error: Error?)
64 | func player(layer: KSPlayerLayer, bufferedCount: Int, consumeTime: TimeInterval)
:
177 | return
178 | }
179 | self.delegate?.player(layer: self, currentTime: self.player.currentPlaybackTime, totalTime: self.player.duration)
| `- warning: call to main actor-isolated instance method 'player(layer:currentTime:totalTime:)' in a synchronous nonisolated context [#ActorIsolatedCall]
180 | if self.player.playbackState == .playing, self.player.loadState == .playable, self.state == .buffering {
181 | // 一个兜底保护,正常不能走到这里
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/KSPlayerLayer.swift:488:5: warning: non-'@objc' instance method declared in extension cannot be overridden; use 'public' instead; this will be an error in a future Swift language mode
486 |
487 | extension KSPlayerLayer {
488 | open func prepareToPlay() {
| `- warning: non-'@objc' instance method declared in extension cannot be overridden; use 'public' instead; this will be an error in a future Swift language mode
489 | state = .preparing
490 | startTime = CACurrentMediaTime()
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/KSPlayerLayer.swift:169:36: warning: call to main actor-isolated instance method 'player(layer:state:)' in a synchronous nonisolated context [#ActorIsolatedCall]
59 | @MainActor
60 | public protocol KSPlayerLayerDelegate: AnyObject {
61 | func player(layer: KSPlayerLayer, state: KSPlayerState)
| `- note: calls to instance method 'player(layer:state:)' from outside of its actor context are implicitly asynchronous
62 | func player(layer: KSPlayerLayer, currentTime: TimeInterval, totalTime: TimeInterval)
63 | func player(layer: KSPlayerLayer, finish error: Error?)
:
167 | guard let self else { return }
168 | KSLog("playerStateDidChange - \(newValue)")
169 | self.delegate?.player(layer: self, state: newValue)
| `- warning: call to main actor-isolated instance method 'player(layer:state:)' in a synchronous nonisolated context [#ActorIsolatedCall]
170 | }
171 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/KSPlayerLayer.swift:281:34: warning: main actor-isolated property 'isIdleTimerDisabled' can not be mutated from a nonisolated context
279 | open func play() {
280 | runOnMainThread {
281 | UIApplication.shared.isIdleTimerDisabled = true
| `- warning: main actor-isolated property 'isIdleTimerDisabled' can not be mutated from a nonisolated context
282 | }
283 | isAutoPlay = true
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/AppKitExtend.swift:315:9: note: mutation of this property is only permitted within the actor
313 | }
314 |
315 | var isIdleTimerDisabled: Bool {
| `- note: mutation of this property is only permitted within the actor
316 | get {
317 | UIApplication.isIdleTimerDisabled
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/KSPlayerLayer.swift:281:27: warning: main actor-isolated class property 'shared' can not be mutated from a nonisolated context
279 | open func play() {
280 | runOnMainThread {
281 | UIApplication.shared.isIdleTimerDisabled = true
| `- warning: main actor-isolated class property 'shared' can not be mutated from a nonisolated context
282 | }
283 | isAutoPlay = true
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX27.0.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSApplication.h:198:61: note: mutation of this class property is only permitted within the actor
196 | APPKIT_EXTERN __kindof NSApplication * _Null_unspecified NSApp NS_SWIFT_UI_ACTOR;
197 |
198 | @property (class, readonly, strong) __kindof NSApplication *sharedApplication;
| `- note: mutation of this class property is only permitted within the actor
199 | @property (nullable, weak) id<NSApplicationDelegate> delegate;
200 |
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/KSPlayerLayer.swift:314:34: warning: main actor-isolated property 'isIdleTimerDisabled' can not be mutated from a nonisolated context
312 | MPNowPlayingInfoCenter.default().playbackState = .paused
313 | runOnMainThread {
314 | UIApplication.shared.isIdleTimerDisabled = false
| `- warning: main actor-isolated property 'isIdleTimerDisabled' can not be mutated from a nonisolated context
315 | }
316 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/AppKitExtend.swift:315:9: note: mutation of this property is only permitted within the actor
313 | }
314 |
315 | var isIdleTimerDisabled: Bool {
| `- note: mutation of this property is only permitted within the actor
316 | get {
317 | UIApplication.isIdleTimerDisabled
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/KSPlayerLayer.swift:314:27: warning: main actor-isolated class property 'shared' can not be mutated from a nonisolated context
312 | MPNowPlayingInfoCenter.default().playbackState = .paused
313 | runOnMainThread {
314 | UIApplication.shared.isIdleTimerDisabled = false
| `- warning: main actor-isolated class property 'shared' can not be mutated from a nonisolated context
315 | }
316 | }
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX27.0.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSApplication.h:198:61: note: mutation of this class property is only permitted within the actor
196 | APPKIT_EXTERN __kindof NSApplication * _Null_unspecified NSApp NS_SWIFT_UI_ACTOR;
197 |
198 | @property (class, readonly, strong) __kindof NSApplication *sharedApplication;
| `- note: mutation of this class property is only permitted within the actor
199 | @property (nullable, weak) id<NSApplicationDelegate> delegate;
200 |
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/KSPlayerLayer.swift:328:34: warning: main actor-isolated property 'isIdleTimerDisabled' can not be mutated from a nonisolated context
326 | MPNowPlayingInfoCenter.default().nowPlayingInfo = nil
327 | runOnMainThread {
328 | UIApplication.shared.isIdleTimerDisabled = false
| `- warning: main actor-isolated property 'isIdleTimerDisabled' can not be mutated from a nonisolated context
329 | }
330 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Core/AppKitExtend.swift:315:9: note: mutation of this property is only permitted within the actor
313 | }
314 |
315 | var isIdleTimerDisabled: Bool {
| `- note: mutation of this property is only permitted within the actor
316 | get {
317 | UIApplication.isIdleTimerDisabled
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/KSPlayerLayer.swift:328:27: warning: main actor-isolated class property 'shared' can not be mutated from a nonisolated context
326 | MPNowPlayingInfoCenter.default().nowPlayingInfo = nil
327 | runOnMainThread {
328 | UIApplication.shared.isIdleTimerDisabled = false
| `- warning: main actor-isolated class property 'shared' can not be mutated from a nonisolated context
329 | }
330 | }
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX27.0.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSApplication.h:198:61: note: mutation of this class property is only permitted within the actor
196 | APPKIT_EXTERN __kindof NSApplication * _Null_unspecified NSApp NS_SWIFT_UI_ACTOR;
197 |
198 | @property (class, readonly, strong) __kindof NSApplication *sharedApplication;
| `- note: mutation of this class property is only permitted within the actor
199 | @property (nullable, weak) id<NSApplicationDelegate> delegate;
200 |
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/KSAVPlayer.swift:313:32: warning: sending value of non-Sendable type 'any MediaPlayerDelegate' risks causing data races; this is an error in the Swift 6 language mode [#RegionIsolation::SendingRisksDataRace]
311 | loopCountObservation = playerLooper?.observe(\.loopCount) { [weak self] playerLooper, _ in
312 | guard let self else { return }
313 | self.delegate?.playBack(player: self, loopCount: playerLooper.loopCount)
| |- warning: sending value of non-Sendable type 'any MediaPlayerDelegate' risks causing data races; this is an error in the Swift 6 language mode [#RegionIsolation::SendingRisksDataRace]
| `- note: sending main actor-isolated value of non-Sendable type 'any MediaPlayerDelegate' to main actor-isolated instance method 'playBack(player:loopCount:)' risks causing races in between main actor-isolated and main actor-isolated uses
314 | }
315 | loopStatusObservation = playerLooper?.observe(\.status) { [weak self] playerLooper, _ in
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/KSPlayerLayer.swift:84:25: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode [#RegionIsolation::SendingRisksDataRace]
82 | // 一定要async才不会pip之后就暂停播放
83 | DispatchQueue.main.async { [weak self] in
84 | guard let self else { return }
| |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode [#RegionIsolation::SendingRisksDataRace]
| `- note: 'self' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against code in the current isolation context
85 | pipController.start(view: self)
86 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/KSPlayerLayer.swift:85:39: warning: sending 'pipController' risks causing data races; this is an error in the Swift 6 language mode [#RegionIsolation::SendingRisksDataRace]
83 | DispatchQueue.main.async { [weak self] in
84 | guard let self else { return }
85 | pipController.start(view: self)
| |- warning: sending 'pipController' risks causing data races; this is an error in the Swift 6 language mode [#RegionIsolation::SendingRisksDataRace]
| `- note: 'pipController' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against code in the current isolation context
86 | }
87 | } else {
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/KSPlayerLayer.swift:169:36: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode [#RegionIsolation::SendingRisksDataRace]
167 | guard let self else { return }
168 | KSLog("playerStateDidChange - \(newValue)")
169 | self.delegate?.player(layer: self, state: newValue)
| |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode [#RegionIsolation::SendingRisksDataRace]
| `- note: sending 'self' to main actor-isolated instance method 'player(layer:state:)' risks causing data races between main actor-isolated code and code in the current isolation context
170 | }
171 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/KSPlayerLayer.swift:169:36: warning: sending 'newValue' risks causing data races; this is an error in the Swift 6 language mode [#RegionIsolation::SendingRisksDataRace]
167 | guard let self else { return }
168 | KSLog("playerStateDidChange - \(newValue)")
169 | self.delegate?.player(layer: self, state: newValue)
| |- warning: sending 'newValue' risks causing data races; this is an error in the Swift 6 language mode [#RegionIsolation::SendingRisksDataRace]
| `- note: sending 'newValue' to main actor-isolated instance method 'player(layer:state:)' risks causing data races between main actor-isolated code and code in the current isolation context
170 | }
171 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/KSPlayerLayer.swift:169:36: warning: sending value of non-Sendable type 'any KSPlayerLayerDelegate' risks causing data races; this is an error in the Swift 6 language mode [#RegionIsolation::SendingRisksDataRace]
167 | guard let self else { return }
168 | KSLog("playerStateDidChange - \(newValue)")
169 | self.delegate?.player(layer: self, state: newValue)
| |- warning: sending value of non-Sendable type 'any KSPlayerLayerDelegate' risks causing data races; this is an error in the Swift 6 language mode [#RegionIsolation::SendingRisksDataRace]
| `- note: sending value of non-Sendable type 'any KSPlayerLayerDelegate' to main actor-isolated instance method 'player(layer:state:)' risks causing races in between code in the current isolation context and main actor-isolated uses
170 | }
171 | }
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/KSPlayerLayer.swift:179:24: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode [#RegionIsolation::SendingRisksDataRace]
177 | return
178 | }
179 | self.delegate?.player(layer: self, currentTime: self.player.currentPlaybackTime, totalTime: self.player.duration)
| |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode [#RegionIsolation::SendingRisksDataRace]
| `- note: sending 'self' to main actor-isolated instance method 'player(layer:currentTime:totalTime:)' risks causing data races between main actor-isolated code and code in the current isolation context
180 | if self.player.playbackState == .playing, self.player.loadState == .playable, self.state == .buffering {
181 | // 一个兜底保护,正常不能走到这里
/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/KSPlayerLayer.swift:179:24: warning: sending value of non-Sendable type 'any KSPlayerLayerDelegate' risks causing data races; this is an error in the Swift 6 language mode [#RegionIsolation::SendingRisksDataRace]
177 | return
178 | }
179 | self.delegate?.player(layer: self, currentTime: self.player.currentPlaybackTime, totalTime: self.player.duration)
| |- warning: sending value of non-Sendable type 'any KSPlayerLayerDelegate' risks causing data races; this is an error in the Swift 6 language mode [#RegionIsolation::SendingRisksDataRace]
| `- note: sending value of non-Sendable type 'any KSPlayerLayerDelegate' to main actor-isolated instance method 'player(layer:currentTime:totalTime:)' risks causing races in between code in the current isolation context and main actor-isolated uses
180 | if self.player.playbackState == .playing, self.player.loadState == .playable, self.state == .buffering {
181 | // 一个兜底保护,正常不能走到这里
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/KSPlayer.build/Debug/KSPlayer-t.build/DerivedSources/resource_bundle_accessor.swift (in target 'KSPlayer' from project 'KSPlayer')
cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
builtin-SwiftPerFileCompile resource_bundle_accessor.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/KSAVPlayer.swift (in target 'KSPlayer' from project 'KSPlayer')
cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
builtin-SwiftPerFileCompile KSAVPlayer.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/KSOptions.swift (in target 'KSPlayer' from project 'KSPlayer')
cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
builtin-SwiftPerFileCompile KSOptions.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/KSPictureInPictureController.swift (in target 'KSPlayer' from project 'KSPlayer')
cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
builtin-SwiftPerFileCompile KSPictureInPictureController.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/KSPlayerLayer.swift (in target 'KSPlayer' from project 'KSPlayer')
cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
builtin-SwiftPerFileCompile KSPlayerLayer.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/AVPlayer/KSVideoPlayer.swift (in target 'KSPlayer' from project 'KSPlayer')
cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
builtin-SwiftPerFileCompile KSVideoPlayer.swift
[#ActorIsolatedCall]: <https://docs.swift.org/compiler/documentation/diagnostics/actor-isolated-call>
[#ConformanceIsolation]: <https://docs.swift.org/compiler/documentation/diagnostics/conformance-isolation>
[#MutableGlobalVariable]: <https://docs.swift.org/compiler/documentation/diagnostics/mutable-global-variable>
[#RegionIsolation]: <https://docs.swift.org/compiler/documentation/diagnostics/region-isolation>
[#SendableClosureCaptures]: <https://docs.swift.org/compiler/documentation/diagnostics/sendable-closure-captures>
[#SendingRisksDataRace]: <https://docs.swift.org/compiler/documentation/diagnostics/sending-risks-data-race>
[#VariableNeverMutated]: <https://docs.swift.org/compiler/documentation/diagnostics/variable-never-mutated>
SwiftDriverJobDiscovery normal arm64 Emitting module for KSPlayer (in target 'KSPlayer' from project 'KSPlayer')
SwiftDriver\ Compilation\ Requirements KSPlayer normal arm64 com.apple.xcode.tools.swift.compiler (in target 'KSPlayer' from project 'KSPlayer')
cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
builtin-Swift-Compilation-Requirements -- /Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swiftc -parse-as-library -module-name KSPlayer -Onone @/Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/KSPlayer.build/Debug/KSPlayer-t.build/Objects-normal/arm64/KSPlayer.SwiftFileList -DSWIFT_PACKAGE -DDEBUG -DSWIFT_MODULE_RESOURCE_BUNDLE_AVAILABLE -Xcc -fmodule-map-file\=/Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/GeneratedModuleMaps/FFmpegKit.modulemap -Xcc -fmodule-map-file\=/Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/GeneratedModuleMaps/DisplayCriteria.modulemap -DXcode -enable-experimental-feature StrictConcurrency -plugin-path /Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/host/plugins/testing -enable-experimental-feature DebugDescriptionMacro -sdk /Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX27.0.sdk -target arm64-apple-macos12.0 -g -module-cache-path /Users/admin/builder/spi-builder-workspace/.derivedData/ModuleCache.noindex -Xfrontend -serialize-debugging-options -profile-coverage-mapping -profile-generate -enable-testing -index-store-path /Users/admin/builder/spi-builder-workspace/.derivedData/Index.noindex/DataStore -Xcc -D_LIBCPP_HARDENING_MODE\=_LIBCPP_HARDENING_MODE_DEBUG -swift-version 5 -I /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Products/Debug -Isystem /Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/MacOSX.platform/Developer/usr/lib -F /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Products/Debug/PackageFrameworks -F /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Products/Debug -F /Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/MacOSX.platform/Developer/Library/Frameworks -emit-localized-strings -emit-localized-strings-path /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/KSPlayer.build/Debug/KSPlayer-t.build/Objects-normal/arm64 -c -j10 -enable-batch-mode -incremental -Xcc -ivfsstatcache -Xcc /Users/admin/builder/spi-builder-workspace/.derivedData/SDKStatCaches.noindex/macosx27.0-26A425-e829b21a6f8c9b70876ba0858053c0446a22442a12e9d48fe1a705f55a1adfc4.sdkstatcache -output-file-map /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/KSPlayer.build/Debug/KSPlayer-t.build/Objects-normal/arm64/KSPlayer-OutputFileMap.json -save-temps -no-color-diagnostics -explicit-module-build -module-cache-path /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/SwiftExplicitPrecompiledModules -clang-scanner-module-cache-path /Users/admin/builder/spi-builder-workspace/.derivedData/ModuleCache.noindex -sdk-module-cache-path /Users/admin/builder/spi-builder-workspace/.derivedData/SDKExplicitPrecompiledModules -emit-dependencies -emit-module -emit-module-path /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/KSPlayer.build/Debug/KSPlayer-t.build/Objects-normal/arm64/KSPlayer.swiftmodule -serialize-diagnostics -dependency-scan-serialize-diagnostics-path /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/KSPlayer.build/Debug/KSPlayer-t.build/Objects-normal/arm64/KSPlayer-dependency-scan.dia -validate-clang-modules-once -clang-build-session-file /Users/admin/builder/spi-builder-workspace/.derivedData/ModuleCache.noindex/Session.modulevalidation -Xcc -fmodules-prune-interval\=86400 -Xcc -fmodules-prune-after\=345600 -package-name spi_builder_workspace -emit-const-values -const-gather-protocols-list /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/KSPlayer.build/Debug/KSPlayer-t.build/Objects-normal/arm64/KSPlayer_const_extract_protocols.json -Xcc -I/Users/admin/builder/spi-builder-workspace/.dependencies/checkouts/FFmpegKit/Sources/FFmpegKit/include -Xcc -I/Users/admin/builder/spi-builder-workspace/Sources/DisplayCriteria/include -Xcc -I/Users/admin/builder/spi-builder-workspace/.derivedData/Build/Products/Debug/include -Xcc -I/Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/KSPlayer.build/Debug/KSPlayer-t.build/DerivedSources-normal/arm64 -Xcc -I/Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/KSPlayer.build/Debug/KSPlayer-t.build/DerivedSources/arm64 -Xcc -I/Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/KSPlayer.build/Debug/KSPlayer-t.build/DerivedSources -Xcc -DSWIFT_PACKAGE -Xcc -DDEBUG\=1 -emit-objc-header -emit-objc-header-path /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/KSPlayer.build/Debug/KSPlayer-t.build/Objects-normal/arm64/KSPlayer-Swift.h -working-directory /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode -experimental-emit-module-separately -disable-cmo
SwiftDriverJobDiscovery normal arm64 Compiling AudioGraphPlayer.swift, AudioRendererPlayer.swift, AudioUnitPlayer.swift, CircularBuffer.swift, EmbedDataSouce.swift, FFmpegAssetTrack.swift (in target 'KSPlayer' from project 'KSPlayer')
SwiftMergeGeneratedHeaders /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/GeneratedModuleMaps/KSPlayer-Swift.h /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/KSPlayer.build/Debug/KSPlayer-t.build/Objects-normal/arm64/KSPlayer-Swift.h (in target 'KSPlayer' from project 'KSPlayer')
cd /Users/admin/builder/spi-builder-workspace
builtin-swiftHeaderTool -arch arm64 /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/KSPlayer.build/Debug/KSPlayer-t.build/Objects-normal/arm64/KSPlayer-Swift.h -o /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/GeneratedModuleMaps/KSPlayer-Swift.h
Copy /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Products/Debug/KSPlayer.swiftmodule/arm64-apple-macos.swiftmodule /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/KSPlayer.build/Debug/KSPlayer-t.build/Objects-normal/arm64/KSPlayer.swiftmodule (in target 'KSPlayer' from project 'KSPlayer')
cd /Users/admin/builder/spi-builder-workspace
builtin-copy -exclude .DS_Store -exclude CVS -exclude .svn -exclude .git -exclude .hg -resolve-src-symlinks -rename /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/KSPlayer.build/Debug/KSPlayer-t.build/Objects-normal/arm64/KSPlayer.swiftmodule /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Products/Debug/KSPlayer.swiftmodule/arm64-apple-macos.swiftmodule
Copy /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Products/Debug/KSPlayer.swiftmodule/arm64-apple-macos.swiftdoc /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/KSPlayer.build/Debug/KSPlayer-t.build/Objects-normal/arm64/KSPlayer.swiftdoc (in target 'KSPlayer' from project 'KSPlayer')
cd /Users/admin/builder/spi-builder-workspace
builtin-copy -exclude .DS_Store -exclude CVS -exclude .svn -exclude .git -exclude .hg -resolve-src-symlinks -rename /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/KSPlayer.build/Debug/KSPlayer-t.build/Objects-normal/arm64/KSPlayer.swiftdoc /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Products/Debug/KSPlayer.swiftmodule/arm64-apple-macos.swiftdoc
Copy /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Products/Debug/KSPlayer.swiftmodule/arm64-apple-macos.abi.json /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/KSPlayer.build/Debug/KSPlayer-t.build/Objects-normal/arm64/KSPlayer.abi.json (in target 'KSPlayer' from project 'KSPlayer')
cd /Users/admin/builder/spi-builder-workspace
builtin-copy -exclude .DS_Store -exclude CVS -exclude .svn -exclude .git -exclude .hg -resolve-src-symlinks -rename /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/KSPlayer.build/Debug/KSPlayer-t.build/Objects-normal/arm64/KSPlayer.abi.json /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Products/Debug/KSPlayer.swiftmodule/arm64-apple-macos.abi.json
Copy /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Products/Debug/KSPlayer.swiftmodule/Project/arm64-apple-macos.swiftsourceinfo /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/KSPlayer.build/Debug/KSPlayer-t.build/Objects-normal/arm64/KSPlayer.swiftsourceinfo (in target 'KSPlayer' from project 'KSPlayer')
cd /Users/admin/builder/spi-builder-workspace
builtin-copy -exclude .DS_Store -exclude CVS -exclude .svn -exclude .git -exclude .hg -resolve-src-symlinks -rename /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/KSPlayer.build/Debug/KSPlayer-t.build/Objects-normal/arm64/KSPlayer.swiftsourceinfo /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Products/Debug/KSPlayer.swiftmodule/Project/arm64-apple-macos.swiftsourceinfo
SwiftDriverJobDiscovery normal arm64 Compiling Slider.swift, BrightnessVolume.swift, IOSVideoPlayerView.swift, KSMenu.swift, KSPlayerItem.swift (in target 'KSPlayer' from project 'KSPlayer')
SwiftDriverJobDiscovery normal arm64 Compiling Model.swift, Resample.swift, SubtitleDecode.swift, ThumbnailController.swift, VideoToolboxDecode.swift, DisplayModel.swift (in target 'KSPlayer' from project 'KSPlayer')
SwiftDriverJobDiscovery normal arm64 Compiling MacVideoPlayerView.swift, PlayerFullScreenViewController.swift, PlayerTransitionAnimator.swift, SeekView.swift, VideoPlayerView.swift (in target 'KSPlayer' from project 'KSPlayer')
SwiftDriverJobDiscovery normal arm64 Compiling UIKitExtend.swift, UXKit.swift, Utility.swift, AVFFmpegExtension.swift, AVFoundationExtension.swift, AudioEnginePlayer.swift (in target 'KSPlayer' from project 'KSPlayer')
SwiftDriverJobDiscovery normal arm64 Compiling FFmpegDecode.swift, Filter.swift, KSMEPlayer.swift, MEPlayerItem.swift, MEPlayerItemTrack.swift, MetalPlayView.swift (in target 'KSPlayer' from project 'KSPlayer')
SwiftDriverJobDiscovery normal arm64 Compiling MediaPlayerProtocol.swift, PlayerDefines.swift, AudioPlayerView.swift, AppKitExtend.swift, PlayerToolBar.swift, PlayerView.swift (in target 'KSPlayer' from project 'KSPlayer')
SwiftDriverJobDiscovery normal arm64 Compiling KSSubtitle.swift, SubtitleDataSouce.swift, AirPlayView.swift, KSVideoPlayerView.swift, KSVideoPlayerViewBuilder.swift, LiveTextImage.swift (in target 'KSPlayer' from project 'KSPlayer')
SwiftDriverJobDiscovery normal arm64 Compiling MetalRender.swift, MotionSensor.swift, PixelBufferProtocol.swift, Transforms.swift, AudioRecognize.swift, KSParseProtocol.swift (in target 'KSPlayer' from project 'KSPlayer')
SwiftDriverJobDiscovery normal arm64 Compiling resource_bundle_accessor.swift, KSAVPlayer.swift, KSOptions.swift, KSPictureInPictureController.swift, KSPlayerLayer.swift, KSVideoPlayer.swift (in target 'KSPlayer' from project 'KSPlayer')
SwiftDriver\ Compilation KSPlayer normal arm64 com.apple.xcode.tools.swift.compiler (in target 'KSPlayer' from project 'KSPlayer')
cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
builtin-Swift-Compilation -- /Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swiftc -parse-as-library -module-name KSPlayer -Onone @/Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/KSPlayer.build/Debug/KSPlayer-t.build/Objects-normal/arm64/KSPlayer.SwiftFileList -DSWIFT_PACKAGE -DDEBUG -DSWIFT_MODULE_RESOURCE_BUNDLE_AVAILABLE -Xcc -fmodule-map-file\=/Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/GeneratedModuleMaps/FFmpegKit.modulemap -Xcc -fmodule-map-file\=/Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/GeneratedModuleMaps/DisplayCriteria.modulemap -DXcode -enable-experimental-feature StrictConcurrency -plugin-path /Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/host/plugins/testing -enable-experimental-feature DebugDescriptionMacro -sdk /Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX27.0.sdk -target arm64-apple-macos12.0 -g -module-cache-path /Users/admin/builder/spi-builder-workspace/.derivedData/ModuleCache.noindex -Xfrontend -serialize-debugging-options -profile-coverage-mapping -profile-generate -enable-testing -index-store-path /Users/admin/builder/spi-builder-workspace/.derivedData/Index.noindex/DataStore -Xcc -D_LIBCPP_HARDENING_MODE\=_LIBCPP_HARDENING_MODE_DEBUG -swift-version 5 -I /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Products/Debug -Isystem /Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/MacOSX.platform/Developer/usr/lib -F /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Products/Debug/PackageFrameworks -F /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Products/Debug -F /Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/MacOSX.platform/Developer/Library/Frameworks -emit-localized-strings -emit-localized-strings-path /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/KSPlayer.build/Debug/KSPlayer-t.build/Objects-normal/arm64 -c -j10 -enable-batch-mode -incremental -Xcc -ivfsstatcache -Xcc /Users/admin/builder/spi-builder-workspace/.derivedData/SDKStatCaches.noindex/macosx27.0-26A425-e829b21a6f8c9b70876ba0858053c0446a22442a12e9d48fe1a705f55a1adfc4.sdkstatcache -output-file-map /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/KSPlayer.build/Debug/KSPlayer-t.build/Objects-normal/arm64/KSPlayer-OutputFileMap.json -save-temps -no-color-diagnostics -explicit-module-build -module-cache-path /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/SwiftExplicitPrecompiledModules -clang-scanner-module-cache-path /Users/admin/builder/spi-builder-workspace/.derivedData/ModuleCache.noindex -sdk-module-cache-path /Users/admin/builder/spi-builder-workspace/.derivedData/SDKExplicitPrecompiledModules -emit-dependencies -emit-module -emit-module-path /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/KSPlayer.build/Debug/KSPlayer-t.build/Objects-normal/arm64/KSPlayer.swiftmodule -serialize-diagnostics -dependency-scan-serialize-diagnostics-path /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/KSPlayer.build/Debug/KSPlayer-t.build/Objects-normal/arm64/KSPlayer-dependency-scan.dia -validate-clang-modules-once -clang-build-session-file /Users/admin/builder/spi-builder-workspace/.derivedData/ModuleCache.noindex/Session.modulevalidation -Xcc -fmodules-prune-interval\=86400 -Xcc -fmodules-prune-after\=345600 -package-name spi_builder_workspace -emit-const-values -const-gather-protocols-list /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/KSPlayer.build/Debug/KSPlayer-t.build/Objects-normal/arm64/KSPlayer_const_extract_protocols.json -Xcc -I/Users/admin/builder/spi-builder-workspace/.dependencies/checkouts/FFmpegKit/Sources/FFmpegKit/include -Xcc -I/Users/admin/builder/spi-builder-workspace/Sources/DisplayCriteria/include -Xcc -I/Users/admin/builder/spi-builder-workspace/.derivedData/Build/Products/Debug/include -Xcc -I/Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/KSPlayer.build/Debug/KSPlayer-t.build/DerivedSources-normal/arm64 -Xcc -I/Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/KSPlayer.build/Debug/KSPlayer-t.build/DerivedSources/arm64 -Xcc -I/Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/KSPlayer.build/Debug/KSPlayer-t.build/DerivedSources -Xcc -DSWIFT_PACKAGE -Xcc -DDEBUG\=1 -emit-objc-header -emit-objc-header-path /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/KSPlayer.build/Debug/KSPlayer-t.build/Objects-normal/arm64/KSPlayer-Swift.h -working-directory /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode -experimental-emit-module-separately -disable-cmo
Ld /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Products/Debug/KSPlayer.o normal (in target 'KSPlayer' from project 'KSPlayer')
cd /Users/admin/builder/spi-builder-workspace
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -Xlinker -reproducible -target arm64-apple-macos12.0 -r -isysroot /Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX27.0.sdk -O0 -Xlinker -no_warn_duplicate_libraries -F/Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/EagerLinkingTBDs/Debug -F/Users/admin/builder/spi-builder-workspace/.derivedData/Build/Products/Debug/PackageFrameworks -F/Users/admin/builder/spi-builder-workspace/.derivedData/Build/Products/Debug -iframework /Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/MacOSX.platform/Developer/Library/Frameworks -filelist /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/KSPlayer.build/Debug/KSPlayer-t.build/Objects-normal/arm64/KSPlayer.LinkFileList -nostdlib -Xlinker -object_path_lto -Xlinker /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/KSPlayer.build/Debug/KSPlayer-t.build/Objects-normal/arm64/KSPlayer_lto.o -Xlinker -no_deduplicate -Xlinker -debug_variant -Xlinker -dependency_info -Xlinker /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/KSPlayer.build/Debug/KSPlayer-t.build/Objects-normal/arm64/KSPlayer_dependency_info.dat -fobjc-link-runtime -L/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/macosx -L/usr/lib/swift -Xlinker -add_ast_path -Xlinker /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/KSPlayer.build/Debug/KSPlayer-t.build/Objects-normal/arm64/KSPlayer.swiftmodule -o /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Products/Debug/KSPlayer.o
ExtractAppIntentsMetadata (in target 'KSPlayer' from project 'KSPlayer')
cd /Users/admin/builder/spi-builder-workspace
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/appintentsmetadataprocessor --toolchain-dir /var/run/com.apple.security.cryptexd/mnt/com.apple.MobileAsset.MetalToolchain-v27.1.266.1.Hj2O0m/Metal.xctoolchain --module-name KSPlayer --sdk-root /Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX27.0.sdk --xcode-version 27A266a --platform-family macOS --deployment-target 12.0 --bundle-identifier spi-builder-workspace.KSPlayer --output /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Products/Debug/KSPlayer.appintents --target-triple arm64-apple-macos12.0 --binary-file /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Products/Debug/KSPlayer.o --dependency-file /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/KSPlayer.build/Debug/KSPlayer-t.build/Objects-normal/arm64/KSPlayer_dependency_info.dat --stringsdata-file /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/KSPlayer.build/Debug/KSPlayer-t.build/Objects-normal/arm64/ExtractedAppShortcutsMetadata.stringsdata --source-file-list /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/KSPlayer.build/Debug/KSPlayer-t.build/Objects-normal/arm64/KSPlayer.SwiftFileList --metadata-file-list /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/KSPlayer.build/Debug/KSPlayer-t.build/KSPlayer.DependencyMetadataFileList --static-metadata-file-list /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/KSPlayer.build/Debug/KSPlayer-t.build/KSPlayer.DependencyStaticMetadataFileList --swift-const-vals-list /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/KSPlayer.build/Debug/KSPlayer-t.build/Objects-normal/arm64/KSPlayer.SwiftConstValuesFileList --force --compile-time-extraction --deployment-aware-processing --no-app-shortcuts-localization
2026-09-21 18:02:26.198 appintentsmetadataprocessor[994:6094] Starting appintentsmetadataprocessor export
2026-09-21 18:02:26.285 appintentsmetadataprocessor[994:6094] Extracted no relevant App Intents symbols, skipping writing output
PruneExplicitPrecompiledModules /Users/admin/builder/spi-builder-workspace/.derivedData/SDKExplicitPrecompiledModules
PruneExplicitPrecompiledModules /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/ExplicitPrecompiledModules
PruneExplicitPrecompiledModules /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/SwiftExplicitPrecompiledModules
** BUILD SUCCEEDED **
2026-09-21 18:02:12.016 xcodebuild[781:5198] [MT] IDERunDestination: Supported platforms for the buildables in the current scheme is empty.
--- xcodebuild: WARNING: Using the first of multiple matching destinations:
{ platform:macOS, arch:arm64, id:6e027e3c041280e2dced8f21255f3fef09c9626f, name:My Mac }
{ platform:macOS, arch:arm64, variant:Mac Catalyst, id:6e027e3c041280e2dced8f21255f3fef09c9626f, name:My Mac }
{ platform:macOS, arch:arm64, variant:DriverKit, id:6e027e3c041280e2dced8f21255f3fef09c9626f, name:My Mac }
{ platform:macOS, arch:arm64, variant:Designed for [iPad,iPhone], id:6e027e3c041280e2dced8f21255f3fef09c9626f, name:My Mac }
Build complete.
{
"default_localization" : "en",
"dependencies" : [
{
"identity" : "ffmpegkit",
"requirement" : {
"range" : [
{
"lower_bound" : "6.1.3",
"upper_bound" : "7.0.0"
}
]
},
"type" : "sourceControl",
"url" : "https://github.com/kingslay/FFmpegKit.git"
}
],
"manifest_display_name" : "KSPlayer",
"name" : "KSPlayer",
"path" : "/Users/admin/builder/spi-builder-workspace",
"platforms" : [
{
"name" : "macos",
"version" : "10.15"
},
{
"name" : "maccatalyst",
"version" : "13.0"
},
{
"name" : "ios",
"version" : "13.0"
},
{
"name" : "tvos",
"version" : "13.0"
},
{
"name" : "visionos",
"version" : "1.0"
}
],
"products" : [
{
"name" : "KSPlayer",
"targets" : [
"KSPlayer"
],
"type" : {
"library" : [
"automatic"
]
}
}
],
"targets" : [
{
"c99name" : "KSPlayerTests",
"module_type" : "SwiftTarget",
"name" : "KSPlayerTests",
"path" : "Tests/KSPlayerTests",
"resources" : [
{
"path" : "/Users/admin/builder/spi-builder-workspace/Tests/KSPlayerTests/Resources/test.m3u",
"rule" : {
"process" : {
}
}
}
],
"sources" : [
"AudioTest.swift",
"KSAVPlayerTest.swift",
"KSMEPlayerTest.swift",
"KSPlayerLayerTest.swift",
"M3UParseTest.swift",
"SubtitleTest.swift",
"VideoPlayerControllerTest.swift",
"VideoPlayerViewTest.swift"
],
"target_dependencies" : [
"KSPlayer"
],
"type" : "test"
},
{
"c99name" : "KSPlayer",
"module_type" : "SwiftTarget",
"name" : "KSPlayer",
"path" : "Sources/KSPlayer",
"product_dependencies" : [
"FFmpegKit"
],
"product_memberships" : [
"KSPlayer"
],
"resources" : [
{
"path" : "/Users/admin/builder/spi-builder-workspace/Sources/KSPlayer/Metal/Shaders.metal",
"rule" : {
"process" : {
}
}
}
],
"sources" : [
"AVPlayer/KSAVPlayer.swift",
"AVPlayer/KSOptions.swift",
"AVPlayer/KSPictureInPictureController.swift",
"AVPlayer/KSPlayerLayer.swift",
"AVPlayer/KSVideoPlayer.swift",
"AVPlayer/MediaPlayerProtocol.swift",
"AVPlayer/PlayerDefines.swift",
"Audio/AudioPlayerView.swift",
"Core/AppKitExtend.swift",
"Core/PlayerToolBar.swift",
"Core/PlayerView.swift",
"Core/UIKitExtend.swift",
"Core/UXKit.swift",
"Core/Utility.swift",
"MEPlayer/AVFFmpegExtension.swift",
"MEPlayer/AVFoundationExtension.swift",
"MEPlayer/AudioEnginePlayer.swift",
"MEPlayer/AudioGraphPlayer.swift",
"MEPlayer/AudioRendererPlayer.swift",
"MEPlayer/AudioUnitPlayer.swift",
"MEPlayer/CircularBuffer.swift",
"MEPlayer/EmbedDataSouce.swift",
"MEPlayer/FFmpegAssetTrack.swift",
"MEPlayer/FFmpegDecode.swift",
"MEPlayer/Filter.swift",
"MEPlayer/KSMEPlayer.swift",
"MEPlayer/MEPlayerItem.swift",
"MEPlayer/MEPlayerItemTrack.swift",
"MEPlayer/MetalPlayView.swift",
"MEPlayer/Model.swift",
"MEPlayer/Resample.swift",
"MEPlayer/SubtitleDecode.swift",
"MEPlayer/ThumbnailController.swift",
"MEPlayer/VideoToolboxDecode.swift",
"Metal/DisplayModel.swift",
"Metal/MetalRender.swift",
"Metal/MotionSensor.swift",
"Metal/PixelBufferProtocol.swift",
"Metal/Transforms.swift",
"Subtitle/AudioRecognize.swift",
"Subtitle/KSParseProtocol.swift",
"Subtitle/KSSubtitle.swift",
"Subtitle/SubtitleDataSouce.swift",
"SwiftUI/AirPlayView.swift",
"SwiftUI/KSVideoPlayerView.swift",
"SwiftUI/KSVideoPlayerViewBuilder.swift",
"SwiftUI/LiveTextImage.swift",
"SwiftUI/Slider.swift",
"Video/BrightnessVolume.swift",
"Video/IOSVideoPlayerView.swift",
"Video/KSMenu.swift",
"Video/KSPlayerItem.swift",
"Video/MacVideoPlayerView.swift",
"Video/PlayerFullScreenViewController.swift",
"Video/PlayerTransitionAnimator.swift",
"Video/SeekView.swift",
"Video/VideoPlayerView.swift"
],
"target_dependencies" : [
"DisplayCriteria"
],
"type" : "library"
},
{
"c99name" : "DisplayCriteria",
"module_type" : "ClangTarget",
"name" : "DisplayCriteria",
"path" : "Sources/DisplayCriteria",
"product_memberships" : [
"KSPlayer"
],
"sources" : [
"DisplayCriteria.m"
],
"type" : "library"
}
],
"tools_version" : "5.9"
}
Done.