From d973340cd0c3ab014b416b5543620eca7bf013e5 Mon Sep 17 00:00:00 2001 From: Arkadiusz Fal Date: Mon, 4 Apr 2022 00:33:09 +0200 Subject: [PATCH] Fix player size handling --- Shared/Player/VideoPlayerView.swift | 59 ++++++++++++++++------------- 1 file changed, 33 insertions(+), 26 deletions(-) diff --git a/Shared/Player/VideoPlayerView.swift b/Shared/Player/VideoPlayerView.swift index 81207764..8f125907 100644 --- a/Shared/Player/VideoPlayerView.swift +++ b/Shared/Player/VideoPlayerView.swift @@ -49,36 +49,43 @@ struct VideoPlayerView: View { .onOpenURL { OpenURLHandler(accounts: accounts, player: player).handle($0) } .frame(minWidth: 950, minHeight: 700) #else - HStack(spacing: 0) { - content - .onAppear { - #if os(iOS) - configureOrientationUpdatesBasedOnAccelerometer() - #endif + GeometryReader { geometry in + HStack(spacing: 0) { + content + .onAppear { + playerSize = geometry.size + + #if os(iOS) + configureOrientationUpdatesBasedOnAccelerometer() + #endif + } + } + .onChange(of: geometry.size) { size in + self.playerSize = size + } + .onChange(of: fullScreenDetails) { value in + player.backend.setNeedsDrawing(!value) + } + #if os(iOS) + .onReceive(NotificationCenter.default.publisher(for: UIDevice.orientationDidChangeNotification)) { _ in + handleOrientationDidChangeNotification() + } + .onDisappear { + guard !playerControls.playingFullscreen else { + return // swiftlint:disable:this implicit_return } - } - .onChange(of: fullScreenDetails) { value in - player.backend.setNeedsDrawing(!value) - } - #if os(iOS) - .onReceive(NotificationCenter.default.publisher(for: UIDevice.orientationDidChangeNotification)) { _ in - handleOrientationDidChangeNotification() - } - .onDisappear { - guard !playerControls.playingFullscreen else { - return // swiftlint:disable:this implicit_return - } - if Defaults[.lockPortraitWhenBrowsing] { - Orientation.lockOrientation(.portrait, andRotateTo: .portrait) - } else { - Orientation.lockOrientation(.allButUpsideDown) - } + if Defaults[.lockPortraitWhenBrowsing] { + Orientation.lockOrientation(.portrait, andRotateTo: .portrait) + } else { + Orientation.lockOrientation(.allButUpsideDown) + } - motionManager?.stopAccelerometerUpdates() - motionManager = nil + motionManager?.stopAccelerometerUpdates() + motionManager = nil + } + #endif } - #endif #endif }