Performance improvements

This commit is contained in:
Arkadiusz Fal 2022-08-23 23:14:13 +02:00
parent 642354fc8e
commit 9ca905e5c7
5 changed files with 33 additions and 44 deletions

View File

@ -37,39 +37,25 @@ final class PlayerControlsModel: ObservableObject {
}
func handlePresentationChange() {
DispatchQueue.main.async { [weak self] in
guard let self = self,
let player = self.player else { return }
if self.presentingControls {
player.backend.startControlsUpdates()
self.resetTimer()
guard let player = player else { return }
if presentingControls {
player.backend.startControlsUpdates()
resetTimer()
} else {
if !player.musicMode {
player.backend.stopControlsUpdates()
removeTimer()
} else {
if !player.musicMode {
player.backend.stopControlsUpdates()
self.removeTimer()
} else {
self.presentingControls = true
}
presentingControls = true
}
}
}
func handleSettingsOverlayPresentationChange() {
player?.backend.setNeedsNetworkStateUpdates(presentingControlsOverlay && Defaults[.showMPVPlaybackStats])
if presentingControlsOverlay {
removeTimer()
} else {
resetTimer()
}
}
func handleDetailsOverlayPresentationChange() {
if presentingDetailsOverlay {
removeTimer()
} else {
resetTimer()
}
}
func handleDetailsOverlayPresentationChange() {}
var presentingOverlays: Bool {
presentingDetailsOverlay || presentingControlsOverlay

View File

@ -136,12 +136,7 @@ struct PlayerControls: View {
}
.onChange(of: model.presentingOverlays) { newValue in
if newValue {
player.backend.stopControlsUpdates()
} else {
#if os(tvOS)
focusedField = .play
#endif
player.backend.startControlsUpdates()
model.hide()
}
}
#if os(tvOS)

View File

@ -103,7 +103,7 @@ struct VideoDescription: View {
}
func updateUIView(_: UIViewType, context _: Context) {
customizeLabel()
updatePreferredMaxLayoutWidth()
}
func customizeLabel() {
@ -143,6 +143,10 @@ struct VideoDescription: View {
}
}
}
func updatePreferredMaxLayoutWidth() {
label.preferredMaxLayoutWidth = (detailsSize?.width ?? 330) - 30
}
}
#endif

View File

@ -454,10 +454,9 @@ struct VideoPlayerView: View {
if drag > 60,
player.playingFullScreen
{
player.exitFullScreen()
player.exitFullScreen(showControls: false)
if Defaults[.rotateToPortraitOnExitFullScreen] {
Orientation.lockOrientation(.allButUpsideDown, andRotateTo: .portrait)
playerControls.show()
}
}
}

View File

@ -27,20 +27,25 @@ struct ShareButton: View {
private var instanceActions: some View {
Group {
if let url = player.playerAPI.shareURL(contentItem) {
Button(labelForShareURL(accounts.app.name)) {
Button(labelForShareURL(accounts.app.name)) {
if let url = player.playerAPI.shareURL(contentItem) {
shareAction(url)
} else {
navigation.presentAlert(
title: "Could not create share link",
message: "For custom locations you can configure Frontend URL in Locations settings"
)
}
}
if contentItemIsPlayerCurrentVideo {
Button(labelForShareURL(accounts.app.name, withTime: true)) {
shareAction(
player.playerAPI.shareURL(
contentItem,
time: player.backend.currentTime
)!
)
}
if contentItemIsPlayerCurrentVideo {
Button(labelForShareURL(accounts.app.name, withTime: true)) {
shareAction(
player.playerAPI.shareURL(
contentItem,
time: player.backend.currentTime
)!
)
}
}
}