Skip to content

Commit 21f7e5e

Browse files
committed
perf: Create a dispatch work item to avoid piling up aync queue to set isSeeking flag
1 parent c0cb652 commit 21f7e5e

File tree

1 file changed

+7
-1
lines changed

1 file changed

+7
-1
lines changed

FileBrowserClient/FileBrowserClient/Views/MediaPlayerView.swift

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ struct MediaPlayerView: View {
3838
@State private var currentPlaybackTime: Double = 0
3939
@State private var lastSavedTime: Double = 0
4040
@State private var isSeeking = false
41+
@State private var seekResetWorkItem: DispatchWorkItem?
4142
@State private var resumePromptData: ResumePromptData?
4243
@State private var pendingPlayer: AVPlayer?
4344
@State private var pendingItem: AVPlayerItem?
@@ -230,8 +231,13 @@ struct MediaPlayerView: View {
230231
// Time jumped (seek), playback stalled, access log entries → immediately republish full info
231232
let nc1 = NotificationCenter.default.addObserver(forName: .AVPlayerItemTimeJumped, object: item, queue: .main) { _ in
232233
self.isSeeking = true
234+
seekResetWorkItem?.cancel()
233235
self.publishNowPlaying()
234-
DispatchQueue.main.asyncAfter(deadline: .now() + 1.0) { self.isSeeking = false }
236+
let workItem = DispatchWorkItem {
237+
self.isSeeking = false
238+
}
239+
seekResetWorkItem = workItem
240+
DispatchQueue.main.asyncAfter(deadline: .now() + 1.0, execute: workItem)
235241
}
236242
// Playback stalled (e.g., buffering, network hiccup) → update Now Playing to reflect paused state
237243
let nc2 = NotificationCenter.default.addObserver(forName: .AVPlayerItemPlaybackStalled, object: item, queue: .main) { _ in

0 commit comments

Comments
 (0)