Prevent multiple seeks

This commit is contained in:
Arkadiusz Fal 2022-02-16 22:51:37 +01:00
parent 70ea098378
commit ae861bce65
2 changed files with 19 additions and 2 deletions

View File

@ -15,6 +15,8 @@ final class MPVClient: ObservableObject {
var glView: MPVOGLView!
var backend: MPVBackend!
var seeking = false
func create(frame: CGRect) -> MPVOGLView {
glView = MPVOGLView(frame: frame)
@ -121,13 +123,27 @@ final class MPVClient: ObservableObject {
}
func seek(relative time: CMTime, completionHandler: ((Bool) -> Void)? = nil) {
command("seek", args: [String(time.seconds)]) { _ in
guard !seeking else {
logger.warning("ignoring seek, another in progress")
return
}
seeking = true
command("seek", args: [String(time.seconds)]) { [weak self] _ in
self?.seeking = false
completionHandler?(true)
}
}
func seek(to time: CMTime, completionHandler: ((Bool) -> Void)? = nil) {
command("seek", args: [String(time.seconds), "absolute"]) { _ in
guard !seeking else {
logger.warning("ignoring seek, another in progress")
return
}
seeking = true
command("seek", args: [String(time.seconds), "absolute"]) { [weak self] _ in
self?.seeking = false
completionHandler?(true)
}
}

View File

@ -5,6 +5,7 @@ struct PlayerControls: View {
static let animation = Animation.easeInOut(duration: 0)
private var player: PlayerModel!
@EnvironmentObject<PlayerControlsModel> private var model
@Environment(\.verticalSizeClass) private var verticalSizeClass