From a0a65f784e4c8a9d4ba5c6c7031076b60af21a7e Mon Sep 17 00:00:00 2001 From: Craig Reyenga <craig.reyenga@gmail.com> Date: Sun, 9 Mar 2025 18:29:36 -0400 Subject: [PATCH 1/4] Remove unused code from player view controller, and associated classes. --- Buildsystem/Testing/UI/VLCTestMenu.swift | 1 - .../Control/VLCPlayerDisplayController.m | 3 +- .../Player/AudioPlayer/AudioPlayerView.swift | 4 - .../AudioPlayerViewController.swift | 13 -- .../MiniPlayer-iOS/AudioMiniPlayer.swift | 4 +- .../Player/PlayerViewController.swift | 3 - .../VideoPlayer-iOS/PlayerController.swift | 10 - .../VideoPlayerViewController.swift | 206 +----------------- VLC.xcodeproj/project.pbxproj | 6 +- 9 files changed, 17 insertions(+), 233 deletions(-) diff --git a/Buildsystem/Testing/UI/VLCTestMenu.swift b/Buildsystem/Testing/UI/VLCTestMenu.swift index 86caa920f..168d9e730 100644 --- a/Buildsystem/Testing/UI/VLCTestMenu.swift +++ b/Buildsystem/Testing/UI/VLCTestMenu.swift @@ -78,6 +78,5 @@ class VLCTestMenu: XCTestCase { helper.tapTabBarItem(VLCAccessibilityIdentifier.settings) app.navigationBars.buttons[VLCAccessibilityIdentifier.about].tap() XCTAssertNotNil(app.navigationBars.buttons[VLCAccessibilityIdentifier.done]) - XCTAssertNotNil(app.navigationBars.buttons[VLCAccessibilityIdentifier.contribute]) } } diff --git a/Sources/Playback/Control/VLCPlayerDisplayController.m b/Sources/Playback/Control/VLCPlayerDisplayController.m index 0ce8275dc..fc92640cb 100644 --- a/Sources/Playback/Control/VLCPlayerDisplayController.m +++ b/Sources/Playback/Control/VLCPlayerDisplayController.m @@ -449,8 +449,7 @@ NSString *const VLCPlayerDisplayControllerHideMiniPlayer = @"VLCPlayerDisplayCon UIViewController *rootViewController = [[[UIApplication sharedApplication] delegate] window].rootViewController; // Until VideoMiniPlayer is integrated, only AudioMiniPlayer is used. - self.miniPlaybackView = miniPlaybackView = [[VLCAudioMiniPlayer alloc] initWithService:[VLCAppCoordinator sharedInstance].mediaLibraryService - draggingDelegate:self]; + self.miniPlaybackView = miniPlaybackView = [[VLCAudioMiniPlayer alloc] initWithDraggingDelegate:self]; if (!_queueViewController) { [self initQueueViewController]; } diff --git a/Sources/Playback/Player/AudioPlayer/AudioPlayerView.swift b/Sources/Playback/Player/AudioPlayer/AudioPlayerView.swift index 1b94c4be2..f9ac9b76e 100644 --- a/Sources/Playback/Player/AudioPlayer/AudioPlayerView.swift +++ b/Sources/Playback/Player/AudioPlayer/AudioPlayerView.swift @@ -23,10 +23,6 @@ protocol AudioPlayerViewDelegate: AnyObject { func audioPlayerViewDelegateDidTapRepeatButton(_ audioPlayerView: AudioPlayerView) func audioPlayerViewDelegateDidTapPlaybackSpeedButton(_ audioPlayerView: AudioPlayerView) func audioPlayerViewDelegateDidLongPressPlaybackSpeedButton(_ audioPlayerView: AudioPlayerView) - #if os(iOS) - func audioPlayerViewDelegateGetVolumeSlider(_ audioPlayerView: AudioPlayerView) -> VolumeControlView - func audioPlayerViewDelegateGetBrightnessSlider(_ audioPlayerView: AudioPlayerView) -> BrightnessControlView - #endif } class AudioPlayerView: UIView, UIGestureRecognizerDelegate { diff --git a/Sources/Playback/Player/AudioPlayer/AudioPlayerViewController.swift b/Sources/Playback/Player/AudioPlayer/AudioPlayerViewController.swift index 189fcee32..2648f99be 100644 --- a/Sources/Playback/Player/AudioPlayer/AudioPlayerViewController.swift +++ b/Sources/Playback/Player/AudioPlayer/AudioPlayerViewController.swift @@ -435,15 +435,6 @@ extension AudioPlayerViewController: AudioPlayerViewDelegate { } } -#if os(iOS) - func audioPlayerViewDelegateGetBrightnessSlider(_ audioPlayerView: AudioPlayerView) -> BrightnessControlView { - return brightnessControlView - } - - func audioPlayerViewDelegateGetVolumeSlider(_ audioPlayerView: AudioPlayerView) -> VolumeControlView { - return volumeControlView - } -#endif } // MARK: - VLCPlaybackServiceDelegate @@ -501,10 +492,6 @@ extension AudioPlayerViewController { comment: "")) } - if currentState == .buffering { - mediaDuration = playbackService.mediaDuration - } - if currentState == .opening || currentState == .stopped { resetABRepeat() } diff --git a/Sources/Playback/Player/MiniPlayer-iOS/AudioMiniPlayer.swift b/Sources/Playback/Player/MiniPlayer-iOS/AudioMiniPlayer.swift index 961431cc9..41c96f2a1 100644 --- a/Sources/Playback/Player/MiniPlayer-iOS/AudioMiniPlayer.swift +++ b/Sources/Playback/Player/MiniPlayer-iOS/AudioMiniPlayer.swift @@ -61,7 +61,6 @@ class AudioMiniPlayer: UIView, MiniPlayer, QueueViewControllerDelegate { private let animationDuration = 0.2 - private var mediaService: MediaLibraryService private lazy var playbackService = PlaybackService.sharedInstance() private var queueViewController: QueueViewController? @@ -79,8 +78,7 @@ class AudioMiniPlayer: UIView, MiniPlayer, QueueViewControllerDelegate { } } - @objc init(service: MediaLibraryService, draggingDelegate: MiniPlayerDraggingDelegate) { - self.mediaService = service + @objc init(draggingDelegate: MiniPlayerDraggingDelegate) { self.draggingDelegate = draggingDelegate super.init(frame: .zero) initView() diff --git a/Sources/Playback/Player/PlayerViewController.swift b/Sources/Playback/Player/PlayerViewController.swift index 19490da2c..86d6df377 100644 --- a/Sources/Playback/Player/PlayerViewController.swift +++ b/Sources/Playback/Player/PlayerViewController.swift @@ -90,7 +90,6 @@ class PlayerViewController: UIViewController { var seekBackwardBySwipe: Int = 0 var forwardBackwardEqual: Bool = true var tapSwipeEqual: Bool = true - var numberOfTapSeek: Int = 0 var previousSeekState: PlayerSeekState = .default // MARK: UI Elements @@ -280,8 +279,6 @@ class PlayerViewController: UIViewController { var addBookmarksView: AddBookmarksView? = nil - var mediaDuration: Int = 0 - private var isGestureActive: Bool = false private var currentPanType: PlayerPanType = .none diff --git a/Sources/Playback/Player/VideoPlayer-iOS/PlayerController.swift b/Sources/Playback/Player/VideoPlayer-iOS/PlayerController.swift index 07217a3b4..f1759ab28 100644 --- a/Sources/Playback/Player/VideoPlayer-iOS/PlayerController.swift +++ b/Sources/Playback/Player/VideoPlayer-iOS/PlayerController.swift @@ -36,14 +36,8 @@ class PlayerController: NSObject { var isInterfaceLocked: Bool = false - var isTapSeeking: Bool = false - // MARK: - UserDefaults computed properties getters - var displayRemainingTime: Bool { - return UserDefaults.standard.bool(forKey: kVLCShowRemainingTime) - } - var isVolumeGestureEnabled: Bool { return UserDefaults.standard.bool(forKey: kVLCSettingVolumeGesture) } @@ -91,10 +85,6 @@ class PlayerController: NSObject { setupObservers() } - func updateUserDefaults() { - - } - private func setupObservers() { let notificationCenter = NotificationCenter.default diff --git a/Sources/Playback/Player/VideoPlayer-iOS/VideoPlayerViewController.swift b/Sources/Playback/Player/VideoPlayer-iOS/VideoPlayerViewController.swift index 33dde55a8..8a6a38d4f 100644 --- a/Sources/Playback/Player/VideoPlayer-iOS/VideoPlayerViewController.swift +++ b/Sources/Playback/Player/VideoPlayer-iOS/VideoPlayerViewController.swift @@ -26,8 +26,6 @@ protocol VideoPlayerViewControllerDelegate: AnyObject { class VideoPlayerViewController: PlayerViewController { @objc weak var delegate: VideoPlayerViewControllerDelegate? - var playAsAudio: Bool = false - // MARK: - Constants private let ZOOM_SENSITIVITY: CGFloat = 5 @@ -145,8 +143,6 @@ class VideoPlayerViewController: PlayerViewController { return aspectRatioActionSheet }() - let notificationCenter = NotificationCenter.default - private(set) lazy var titleSelectionView: TitleSelectionView = { #if os(iOS) let isLandscape = UIDevice.current.orientation.isLandscape @@ -160,8 +156,6 @@ class VideoPlayerViewController: PlayerViewController { return titleSelectionView }() - private var projectionLocation: CGPoint = .zero - private lazy var longPressPlaybackSpeedView: LongPressPlaybackSpeedView = { let view = LongPressPlaybackSpeedView() view.translatesAutoresizingMaskIntoConstraints = false @@ -279,8 +273,6 @@ class VideoPlayerViewController: PlayerViewController { private var isGestureActive: Bool = false - private var minimizationInitialCenter: CGPoint? - // MARK: - Popup Views lazy var trackSelectorPopupView: PopupView = { @@ -467,22 +459,6 @@ class VideoPlayerViewController: PlayerViewController { override func viewDidDisappear(_ animated: Bool) { super.viewDidDisappear(animated) deviceMotion.stopDeviceMotion() -#if os(iOS) - let defaults = UserDefaults.standard - if defaults.bool(forKey: kVLCPlayerShouldRememberBrightness) { - let currentBrightness = UIScreen.main.brightness - self.brightnessControl.value = Float(currentBrightness) // helper in indicating change in the system brightness - defaults.set(currentBrightness, forKey: KVLCPlayerBrightness) - } - - //set the value of system brightness after closing the app x - //even if the Player Should Remember Brightness option is disabled - animateBrightness(to: systemBrightness!, duration: 0.35) - - // remove the observer when the view disappears to avoid breaking the brightness view value - // when the video player is not shown to save the persisted values - removePlayerBrightnessObservers() -#endif } override func viewDidLoad() { @@ -716,51 +692,6 @@ class VideoPlayerViewController: PlayerViewController { titleSelectionView.mainStackView.distribution = isLandscape ? .fillEqually : .fill } -#if os(iOS) - private func addPlayerBrightnessObservers() { - NotificationCenter.default.addObserver( - self, - selector: #selector(systemBrightnessChanged), - name: UIApplication.didBecomeActiveNotification, - object: nil - ) - - NotificationCenter.default.addObserver( - self, - selector: #selector(playerWillResignActive), - name: UIApplication.willResignActiveNotification, - object: nil - ) - - NotificationCenter.default.addObserver( - self, - selector: #selector(playerWillEnterForeground), - name: UIApplication.willEnterForegroundNotification, - object: nil - ) - } - - private func removePlayerBrightnessObservers() { - NotificationCenter.default.removeObserver( - self, - name: UIApplication.didBecomeActiveNotification, - object: nil - ) - - NotificationCenter.default.removeObserver( - self, - name: UIApplication.willResignActiveNotification, - object: nil - ) - - NotificationCenter.default.removeObserver( - self, - name: UIApplication.willEnterForegroundNotification, - object: nil - ) - } -#endif - // MARK: - Private helpers #if os(iOS) @@ -1065,31 +996,6 @@ class VideoPlayerViewController: PlayerViewController { executeSeekFromGesture(.tap) } - private func applyYaw(yaw: CGFloat, pitch: CGFloat) { - //Add and limit new pitch and yaw - deviceMotion.yaw += yaw - deviceMotion.pitch += pitch - - playbackService.updateViewpoint(deviceMotion.yaw, - pitch: deviceMotion.pitch, - roll: 0, - fov: fov, absolute: true) - } - - private func updateProjection(with recognizer: UIPanGestureRecognizer) { - let newLocationInView: CGPoint = recognizer.location(in: view) - - let diffX = newLocationInView.x - projectionLocation.x - let diffY = newLocationInView.y - projectionLocation.y - projectionLocation = newLocationInView - - // ScreenSizePixel width is used twice to get a constant speed on the movement. - let diffYaw = fov * -diffX / screenPixelSize.width - let diffPitch = fov * -diffY / screenPixelSize.width - - applyYaw(yaw: diffYaw, pitch: diffPitch) - } - @objc private func handleLongPressGesture(_ gestureRecognizer: UILongPressGestureRecognizer) { guard playerController.isSpeedUpGestureEnabled, playbackService.isPlaying else { @@ -1384,29 +1290,6 @@ class VideoPlayerViewController: PlayerViewController { displayAndApplySeekDuration(currentSeek) } - private func applyCustomEqualizerProfileIfNeeded() { - let userDefaults = UserDefaults.standard - guard userDefaults.bool(forKey: kVLCCustomProfileEnabled) else { - return - } - - let profileIndex = userDefaults.integer(forKey: kVLCSettingEqualizerProfile) - let encodedData = userDefaults.data(forKey: kVLCCustomEqualizerProfiles) - - guard let encodedData = encodedData, - let customProfiles = NSKeyedUnarchiver(forReadingWith: encodedData).decodeObject(forKey: "root") as? CustomEqualizerProfiles, - profileIndex < customProfiles.profiles.count else { - return - } - - let selectedProfile = customProfiles.profiles[profileIndex] - playbackService.preAmplification = CGFloat(selectedProfile.preAmpLevel) - - for (index, frequency) in selectedProfile.frequencies.enumerated() { - playbackService.setAmplification(CGFloat(frequency), forBand: UInt32(index)) - } - } - private func hideSystemVolumeInfo() { #if os(iOS) volumeView.alpha = 0.00001 @@ -1477,6 +1360,18 @@ class VideoPlayerViewController: PlayerViewController { playerController.isInterfaceLocked = !enabled } + + private func showIcon(button: UIButton) { + UIView.animate(withDuration: 0.5, animations: { + button.isHidden = false + }, completion: nil) + } + + private func hideIcon(button: UIButton) { + UIView.animate(withDuration: 0.5, animations: { + button.isHidden = true + }, completion: nil) + } } // MARK: - Delegation @@ -1806,83 +1701,6 @@ extension VideoPlayerViewController { } } -// MARK: - OptionsNavigationBarDelegate - -extension VideoPlayerViewController { - private func resetVideoFilters() { - hideIcon(button: optionsNavigationBar.videoFiltersButton) - moreOptionsActionSheet.resetVideoFilters() - } - - private func resetPlaybackSpeed() { - hideIcon(button: optionsNavigationBar.playbackSpeedButton) - moreOptionsActionSheet.resetPlaybackSpeed() - } - - private func resetEqualizer() { - moreOptionsActionSheet.resetEqualizer() - hideIcon(button: optionsNavigationBar.equalizerButton) - } - - private func resetSleepTimer() { - hideIcon(button: optionsNavigationBar.sleepTimerButton) - moreOptionsActionSheet.resetSleepTimer() - } - - private func resetABRepeatMarks(_ shouldDisplayView: Bool = false) { - hideIcon(button: optionsNavigationBar.abRepeatMarksButton) - aMark.removeFromSuperview() - aMark.isEnabled = false - - bMark.removeFromSuperview() - bMark.isEnabled = false - - guard let abRepeatView = abRepeatView, - shouldDisplayView else { - return - } - - mediaMoreOptionsActionSheetPresentABRepeatView(with: abRepeatView) - } - - private func showIcon(button: UIButton) { - UIView.animate(withDuration: 0.5, animations: { - button.isHidden = false - }, completion: nil) - } - - private func hideIcon(button: UIButton) { - UIView.animate(withDuration: 0.5, animations: { - button.isHidden = true - }, completion: nil) - } - - private func handleReset(button: UIButton) { - switch button { - case optionsNavigationBar.videoFiltersButton: - resetVideoFilters() - return - case optionsNavigationBar.playbackSpeedButton: - resetPlaybackSpeed() - return - case optionsNavigationBar.equalizerButton: - resetEqualizer() - return - case optionsNavigationBar.sleepTimerButton: - resetSleepTimer() - return - case optionsNavigationBar.abRepeatButton: - resetABRepeat() - return - case optionsNavigationBar.abRepeatMarksButton: - resetABRepeatMarks(true) - return - default: - assertionFailure("VideoPlayerViewController: Invalid button.") - } - } -} - // MARK: - Download More SPU extension VideoPlayerViewController { diff --git a/VLC.xcodeproj/project.pbxproj b/VLC.xcodeproj/project.pbxproj index 94af9dff1..22a31cd48 100644 --- a/VLC.xcodeproj/project.pbxproj +++ b/VLC.xcodeproj/project.pbxproj @@ -5282,7 +5282,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; INFOPLIST_FILE = Buildsystem/Testing/UI/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 12; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -5336,7 +5336,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; INFOPLIST_FILE = Buildsystem/Testing/UI/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 12; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -5391,7 +5391,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; INFOPLIST_FILE = Buildsystem/Testing/UI/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 12; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", -- GitLab From 30e2fc80fc4e8e780299a195aafb1d1f7fcf9f48 Mon Sep 17 00:00:00 2001 From: Craig Reyenga <craig.reyenga@gmail.com> Date: Sun, 9 Mar 2025 19:03:03 -0400 Subject: [PATCH 2/4] Remove duplicate brightness, and method call to set up gestures. --- .../AudioPlayerViewController.swift | 10 +++++-- .../Player/PlayerViewController.swift | 30 ++++++++++++++----- .../VideoPlayer-iOS/PlayerController.swift | 4 --- .../VideoPlayerViewController.swift | 21 +++++-------- 4 files changed, 37 insertions(+), 28 deletions(-) diff --git a/Sources/Playback/Player/AudioPlayer/AudioPlayerViewController.swift b/Sources/Playback/Player/AudioPlayer/AudioPlayerViewController.swift index 2648f99be..c4a63408d 100644 --- a/Sources/Playback/Player/AudioPlayer/AudioPlayerViewController.swift +++ b/Sources/Playback/Player/AudioPlayer/AudioPlayerViewController.swift @@ -60,8 +60,13 @@ class AudioPlayerViewController: PlayerViewController { // MARK: - Init #if os(iOS) - @objc override init(mediaLibraryService: MediaLibraryService, rendererDiscovererManager: VLCRendererDiscovererManager, playerController: PlayerController) { - super.init(mediaLibraryService: mediaLibraryService, rendererDiscovererManager: rendererDiscovererManager, playerController: playerController) + @objc init(mediaLibraryService: MediaLibraryService, + rendererDiscovererManager: VLCRendererDiscovererManager, + playerController: PlayerController) { + super.init(mediaLibraryService: mediaLibraryService, + rendererDiscovererManager: rendererDiscovererManager, + playerController: playerController, + isBrightnessControlEnabled: false) NotificationCenter.default.addObserver(self, selector: #selector(playbackSpeedHasChanged(_:)), name: Notification.Name("ChangePlaybackSpeed"), object: nil) self.playerController.delegate = self @@ -111,7 +116,6 @@ class AudioPlayerViewController: PlayerViewController { audioPlayerView.setupBackgroundColor() audioPlayerView.setupPlaybackSpeed() mediaScrubProgressBar.updateInterfacePosition() - setupGestures() playModeUpdated() if playbackService.isPlayingOnExternalScreen() { diff --git a/Sources/Playback/Player/PlayerViewController.swift b/Sources/Playback/Player/PlayerViewController.swift index 86d6df377..f4eb3e368 100644 --- a/Sources/Playback/Player/PlayerViewController.swift +++ b/Sources/Playback/Player/PlayerViewController.swift @@ -279,6 +279,8 @@ class PlayerViewController: UIViewController { var addBookmarksView: AddBookmarksView? = nil + private let isBrightnessControlEnabled: Bool + private var isGestureActive: Bool = false private var currentPanType: PlayerPanType = .none @@ -365,20 +367,29 @@ class PlayerViewController: UIViewController { // MARK: - Init #if os(iOS) - @objc init(mediaLibraryService: MediaLibraryService, rendererDiscovererManager: VLCRendererDiscovererManager, playerController: PlayerController) { + init(mediaLibraryService: MediaLibraryService, + rendererDiscovererManager: VLCRendererDiscovererManager, + playerController: PlayerController, + isBrightnessControlEnabled: Bool) { self.mediaLibraryService = mediaLibraryService self.rendererDiscovererManager = rendererDiscovererManager self.playerController = playerController + self.isBrightnessControlEnabled = isBrightnessControlEnabled + super.init(nibName: nil, bundle: nil) + mediaNavigationBar.chromeCastButton = rendererButton mediaNavigationBar.addGestureRecognizer(minimizeGestureRecognizer) systemBrightness = UIScreen.main.brightness } #else - @objc init(mediaLibraryService: MediaLibraryService, playerController: PlayerController) { + init(mediaLibraryService: MediaLibraryService, playerController: PlayerController) { self.mediaLibraryService = mediaLibraryService self.playerController = playerController + self.isBrightnessControlEnabled = false + super.init(nibName: nil, bundle: nil) + mediaNavigationBar.addGestureRecognizer(minimizeGestureRecognizer) } #endif @@ -388,11 +399,16 @@ class PlayerViewController: UIViewController { } override func viewDidLoad() { + super.viewDidLoad() + setupObservers() + setupGestures() hideSystemVolumeInfo() } override func viewWillAppear(_ animated: Bool) { + super.viewWillAppear(animated) + #if os(iOS) setupRendererDiscovererManager() #endif @@ -422,7 +438,7 @@ class PlayerViewController: UIViewController { //update the value of brightness control view //In case of remember brightness option is disabled, this will update the brightness bar with current brightness. - if !playerController.isRememberBrightnessEnabled && self is VideoPlayerViewController { + if !playerController.isRememberBrightnessEnabled && isBrightnessControlEnabled { brightnessControlView.updateIcon(level: brightnessControl.fetchAndGetDeviceValue()) } #endif @@ -432,7 +448,7 @@ class PlayerViewController: UIViewController { override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) - if playerController.isRememberBrightnessEnabled && self is VideoPlayerViewController { + if playerController.isRememberBrightnessEnabled && isBrightnessControlEnabled { if let brightness = userDefaults.value(forKey: KVLCPlayerBrightness) as? CGFloat { animateBrightness(to: brightness) self.brightnessControl.value = Float(brightness) @@ -454,7 +470,7 @@ class PlayerViewController: UIViewController { override func viewDidDisappear(_ animated: Bool) { super.viewDidDisappear(animated) - if playerController.isRememberBrightnessEnabled && self is VideoPlayerViewController { + if playerController.isRememberBrightnessEnabled && isBrightnessControlEnabled { let currentBrightness = UIScreen.main.brightness self.brightnessControl.value = Float(currentBrightness) // helper in indicating change in the system brightness userDefaults.set(currentBrightness, forKey: KVLCPlayerBrightness) @@ -485,7 +501,7 @@ class PlayerViewController: UIViewController { } func setControlsHidden(_ hidden: Bool, animated: Bool) { - // HIDE THE CONTROLS IF NEEDED + // Empty implementation. Should override in subclasses. } func setupGestures() { @@ -653,7 +669,7 @@ class PlayerViewController: UIViewController { resetABRepeatMarks(true) break default: - assertionFailure("VideoPlayerViewController: Unvalid button.") + assertionFailure("PlayerViewController: Invalid button.") } } diff --git a/Sources/Playback/Player/VideoPlayer-iOS/PlayerController.swift b/Sources/Playback/Player/VideoPlayer-iOS/PlayerController.swift index f1759ab28..261fc9c25 100644 --- a/Sources/Playback/Player/VideoPlayer-iOS/PlayerController.swift +++ b/Sources/Playback/Player/VideoPlayer-iOS/PlayerController.swift @@ -26,14 +26,10 @@ protocol PlayerControllerDelegate: AnyObject { class PlayerController: NSObject { weak var delegate: PlayerControllerDelegate? - private var playbackService: PlaybackService = PlaybackService.sharedInstance() - // MARK: - States var isControlsHidden: Bool = false - var lockedOrientation: UIInterfaceOrientation = .unknown - var isInterfaceLocked: Bool = false // MARK: - UserDefaults computed properties getters diff --git a/Sources/Playback/Player/VideoPlayer-iOS/VideoPlayerViewController.swift b/Sources/Playback/Player/VideoPlayer-iOS/VideoPlayerViewController.swift index 8a6a38d4f..6c02d0cfe 100644 --- a/Sources/Playback/Player/VideoPlayer-iOS/VideoPlayerViewController.swift +++ b/Sources/Playback/Player/VideoPlayer-iOS/VideoPlayerViewController.swift @@ -311,8 +311,13 @@ class VideoPlayerViewController: PlayerViewController { // MARK: - Init methods #if os(iOS) - @objc override init(mediaLibraryService: MediaLibraryService, rendererDiscovererManager: VLCRendererDiscovererManager, playerController: PlayerController) { - super.init(mediaLibraryService: mediaLibraryService, rendererDiscovererManager: rendererDiscovererManager, playerController: playerController) + @objc init(mediaLibraryService: MediaLibraryService, + rendererDiscovererManager: VLCRendererDiscovererManager, + playerController: PlayerController) { + super.init(mediaLibraryService: mediaLibraryService, + rendererDiscovererManager: rendererDiscovererManager, + playerController: playerController, + isBrightnessControlEnabled: true) self.playerController.delegate = self self.mediaNavigationBar.addGestureRecognizer(minimizeGestureRecognizer) @@ -341,7 +346,6 @@ class VideoPlayerViewController: PlayerViewController { super.viewWillAppear(animated) playbackService.delegate = self playbackService.recoverPlaybackState() - playerController.lockedOrientation = .portrait navigationController?.navigationBar.isHidden = true mediaScrubProgressBar.updateInterfacePosition() @@ -392,16 +396,6 @@ class VideoPlayerViewController: PlayerViewController { override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) -#if os(iOS) - let defaults = UserDefaults.standard - if defaults.bool(forKey: kVLCPlayerShouldRememberBrightness) { - if let brightness = defaults.value(forKey: KVLCPlayerBrightness) as? CGFloat { - animateBrightness(to: brightness) - self.brightnessControl.value = Float(brightness) - } - } -#endif - playbackService.recoverDisplayedMetadata() // The video output view is not initialized when the play as audio option was chosen @@ -467,7 +461,6 @@ class VideoPlayerViewController: PlayerViewController { setupObservers() setupViews() setupAccessibility() - setupGestures() setupConstraints() #if os(iOS) setupRendererDiscoverer() -- GitLab From 8766189a3c6c19395480bbd3bf03a1178a9ae380 Mon Sep 17 00:00:00 2001 From: Craig Reyenga <craig.reyenga@gmail.com> Date: Sun, 9 Mar 2025 20:38:20 -0400 Subject: [PATCH 3/4] Remove other duplicate code from player view controllers, including duplicate methods in the same file. --- .../AudioPlayerViewController.swift | 2 + .../Player/PlayerViewController.swift | 73 +++++----- .../VideoPlayerViewController.swift | 127 ++---------------- 3 files changed, 43 insertions(+), 159 deletions(-) diff --git a/Sources/Playback/Player/AudioPlayer/AudioPlayerViewController.swift b/Sources/Playback/Player/AudioPlayer/AudioPlayerViewController.swift index c4a63408d..eee67f0d4 100644 --- a/Sources/Playback/Player/AudioPlayer/AudioPlayerViewController.swift +++ b/Sources/Playback/Player/AudioPlayer/AudioPlayerViewController.swift @@ -589,6 +589,8 @@ extension AudioPlayerViewController { extension AudioPlayerViewController { override func mediaMoreOptionsActionSheetDidToggleInterfaceLock(state: Bool) { + super.mediaMoreOptionsActionSheetDidToggleInterfaceLock(state: state) + setPlayerInterfaceEnabled(!state) } diff --git a/Sources/Playback/Player/PlayerViewController.swift b/Sources/Playback/Player/PlayerViewController.swift index f4eb3e368..7e41a4b25 100644 --- a/Sources/Playback/Player/PlayerViewController.swift +++ b/Sources/Playback/Player/PlayerViewController.swift @@ -19,7 +19,7 @@ enum PlayerSeekState { case backward } -enum PlayerPanType { +fileprivate enum PlayerPanType { case none #if os(iOS) case brightness @@ -28,7 +28,7 @@ enum PlayerPanType { case projection } -enum PlayerSeekGestureType { +fileprivate enum PlayerSeekGestureType { case tap case swipe } @@ -72,12 +72,13 @@ class PlayerViewController: UIViewController { } // MARK: - Properties - var mediaLibraryService: MediaLibraryService + let mediaLibraryService: MediaLibraryService #if os(iOS) - var rendererDiscovererManager: VLCRendererDiscovererManager + let rendererDiscovererManager: VLCRendererDiscovererManager #endif - var playerController: PlayerController - var playbackService: PlaybackService = PlaybackService.sharedInstance() + let playerController: PlayerController + let playbackService: PlaybackService = PlaybackService.sharedInstance() + var queueViewController: QueueViewController? var alertController: UIAlertController? @@ -244,9 +245,7 @@ class PlayerViewController: UIViewController { vc.alpha = 0 return vc }() -#endif -#if os(iOS) lazy var rendererButton: UIButton = { let rendererButton = rendererDiscovererManager.setupRendererButton() rendererButton.tintColor = .white @@ -271,9 +270,7 @@ class PlayerViewController: UIViewController { return rendererButton }() -#endif -#if os(iOS) let volumeView = MPVolumeView(frame: .zero) #endif @@ -297,10 +294,7 @@ class PlayerViewController: UIViewController { return deviceMotion }() - var systemBrightness: Double? - - // MARK: Constants - private let ZOOM_SENSITIVITY: CGFloat = 5 + private var systemBrightness: Double? #if os(iOS) private let screenPixelSize = CGSize(width: UIScreen.main.bounds.width, @@ -387,6 +381,7 @@ class PlayerViewController: UIViewController { self.mediaLibraryService = mediaLibraryService self.playerController = playerController self.isBrightnessControlEnabled = false + self.systemBrightness = 1.0 super.init(nibName: nil, bundle: nil) @@ -585,16 +580,28 @@ class PlayerViewController: UIViewController { } } - // MARK: - Private methods + func showIcon(button: UIButton) { + UIView.animate(withDuration: 0.5, animations: { + button.isHidden = false + }, completion: nil) + } - private func jumpBackwards(_ interval: Int = 10) { + func hideIcon(button: UIButton) { + UIView.animate(withDuration: 0.5, animations: { + button.isHidden = true + }, completion: nil) + } + + func jumpBackwards(_ interval: Int = 10) { playbackService.jumpBackward(Int32(interval)) } - private func jumpForwards(_ interval: Int = 10) { + func jumpForwards(_ interval: Int = 10) { playbackService.jumpForward(Int32(interval)) } + // MARK: - Private methods + private func executeSeekFromGesture(_ type: PlayerSeekGestureType) { let currentSeek: Int if numberOfGestureSeek > 0 { @@ -610,24 +617,12 @@ class PlayerViewController: UIViewController { displayAndApplySeekDuration(currentSeek) } - private func showIcon(button: UIButton) { - UIView.animate(withDuration: 0.5, animations: { - button.isHidden = false - }, completion: nil) - } - private func openOptionView(view: ActionSheetCellIdentifier) { present(moreOptionsActionSheet, animated: true, completion: { self.moreOptionsActionSheet.addView(view) }) } - private func hideIcon(button: UIButton) { - UIView.animate(withDuration: 0.5, animations: { - button.isHidden = true - }, completion: nil) - } - private func resetVideoFilters() { hideIcon(button: optionsNavigationBar.videoFiltersButton) moreOptionsActionSheet.resetVideoFilters() @@ -1016,14 +1011,7 @@ class PlayerViewController: UIViewController { } @objc func handlePinchGesture(recognizer: UIPinchGestureRecognizer) { - if playbackService.currentMediaIs360Video { - let zoom: CGFloat = MediaProjection.FOV.default * -(ZOOM_SENSITIVITY * recognizer.velocity / screenPixelSize.width) - if playbackService.updateViewpoint(0, pitch: 0, - roll: 0, fov: zoom, absolute: false) { - // Clam FOV between min and max - fov = max(min(fov + zoom, MediaProjection.FOV.max), MediaProjection.FOV.min) - } - } + // Empty implementation. Override in subclasses. } @objc func handleSwipeGestures(recognizer: UISwipeGestureRecognizer) { @@ -1096,8 +1084,6 @@ class PlayerViewController: UIViewController { } @objc func handleDoubleTapGesture(_ sender: UITapGestureRecognizer) { - // CHECK THE TAP LOCATION - executeSeekFromGesture(.tap) } @@ -1120,15 +1106,18 @@ extension PlayerViewController: VLCPlaybackServiceDelegate { } func mediaPlayerStateChanged(_ currentState: VLCMediaPlayerState, isPlaying: Bool, currentMediaHasTrackToChooseFrom: Bool, currentMediaHasChapters: Bool, for playbackService: PlaybackService) { - if currentState == .opening { + switch currentState { + case .opening: applyCustomEqualizerProfileIfNeeded() - } - if currentState == .stopped { + case .stopped: moreOptionsActionSheet.resetPlaybackSpeed() mediaMoreOptionsActionSheetHideIcon(for: .playbackSpeed) moreOptionsActionSheet.resetSleepTimer() mediaMoreOptionsActionSheetHideIcon(for: .sleepTimer) + + default: + break } } diff --git a/Sources/Playback/Player/VideoPlayer-iOS/VideoPlayerViewController.swift b/Sources/Playback/Player/VideoPlayer-iOS/VideoPlayerViewController.swift index 6c02d0cfe..65839b6ac 100644 --- a/Sources/Playback/Player/VideoPlayer-iOS/VideoPlayerViewController.swift +++ b/Sources/Playback/Player/VideoPlayer-iOS/VideoPlayerViewController.swift @@ -329,11 +329,7 @@ class VideoPlayerViewController: PlayerViewController { @objc override init(mediaLibraryService: MediaLibraryService, playerController: PlayerController) { super.init(mediaLibraryService: mediaLibraryService, playerController: playerController) - self.mediaLibraryService = mediaLibraryService - self.playerController = playerController - self.playerController.delegate = self - systemBrightness = 1.0 self.mediaNavigationBar.addGestureRecognizer(minimizeGestureRecognizer) } #endif @@ -351,8 +347,6 @@ class VideoPlayerViewController: PlayerViewController { setControlsHidden(false, animated: false) - setupSeekDurations() - // Make sure interface is enabled on setPlayerInterfaceEnabled(true) @@ -458,7 +452,6 @@ class VideoPlayerViewController: PlayerViewController { override func viewDidLoad() { super.viewDidLoad() navigationController?.navigationBar.isHidden = true - setupObservers() setupViews() setupAccessibility() setupConstraints() @@ -469,18 +462,9 @@ class VideoPlayerViewController: PlayerViewController { // MARK: - Setup methods - private func setupObservers() { - try? AVAudioSession.sharedInstance().setActive(true) - AVAudioSession.sharedInstance().addObserver(self, forKeyPath: "outputVolume", options: NSKeyValueObservingOptions.new, context: nil) - - NotificationCenter.default.addObserver(self, selector: #selector(updatePlayerControls), name: .VLCDidAppendMediaToQueue, object: nil) - NotificationCenter.default.addObserver(self, selector: #selector(updatePlayerControls), name: .VLCDidRemoveMediaFromQueue, object: nil) - } - private func setupViews() { view.backgroundColor = .black view.addSubview(mediaNavigationBar) - hideSystemVolumeInfo() videoPlayerButtons() if playerController.isRememberStateEnabled { setupVideoControlsState() @@ -788,30 +772,6 @@ class VideoPlayerViewController: PlayerViewController { ]) } - private func setupSeekDurations() { - let defaults = UserDefaults.standard - - tapSwipeEqual = defaults.bool(forKey: kVLCSettingPlaybackTapSwipeEqual) - forwardBackwardEqual = defaults.bool(forKey: kVLCSettingPlaybackForwardBackwardEqual) - seekForwardBy = defaults.integer(forKey: kVLCSettingPlaybackForwardSkipLength) - seekBackwardBy = forwardBackwardEqual ? seekForwardBy : defaults.integer(forKey: kVLCSettingPlaybackBackwardSkipLength) - seekForwardBySwipe = tapSwipeEqual ? seekForwardBy : defaults.integer(forKey: kVLCSettingPlaybackForwardSkipLengthSwipe) - - if tapSwipeEqual, forwardBackwardEqual { - // if tap = swipe, and backward = forward, then backward swipe = forward tap - seekBackwardBySwipe = seekForwardBy - } else if tapSwipeEqual, !forwardBackwardEqual { - // if tap = swipe, and backward != forward, then backward swipe = backward tap - seekBackwardBySwipe = seekBackwardBy - } else if !tapSwipeEqual, forwardBackwardEqual { - // if tap != swipe, and backward = forward, then backward swipe = forward swipe - seekBackwardBySwipe = seekForwardBySwipe - } else { - // otherwise backward swipe = backward swipe - seekBackwardBySwipe = defaults.integer(forKey: kVLCSettingPlaybackBackwardSkipLengthSwipe) - } - } - private func setupForMediaProjection() { let mediaHasProjection = playbackService.currentMediaIs360Video @@ -828,6 +788,8 @@ class VideoPlayerViewController: PlayerViewController { } } + // MARK: - Accessibility + @objc private func handleAccessibilityPlayPause() -> Bool { togglePlayPause() return true @@ -881,6 +843,11 @@ class VideoPlayerViewController: PlayerViewController { let tapPosition = sender.location(in: view) + // Limit y position in order to avoid conflicts with the bottom controls + guard tapPosition.y <= mediaScrubProgressBar.frame.origin.y else { + return + } + // Reset number(set to -1/1) of seek when orientation has been changed. if tapPosition.x < backwardBoundary { numberOfGestureSeek = previousSeekState == .forward ? -1 : numberOfGestureSeek - 1 @@ -956,39 +923,6 @@ class VideoPlayerViewController: PlayerViewController { } } - func jumpBackwards(_ interval: Int = 10) { - playbackService.jumpBackward(Int32(interval)) - } - - func jumpForwards(_ interval: Int = 10) { - playbackService.jumpForward(Int32(interval)) - } - - @objc func handleDoubleTapGesture(recognizer: UITapGestureRecognizer) { - let screenWidth: CGFloat = view.frame.size.width - let backwardBoundary: CGFloat = screenWidth / 3.0 - let forwardBoundary: CGFloat = 2 * screenWidth / 3.0 - - let tapPosition = recognizer.location(in: view) - - // Limit y position in order to avoid conflicts with the bottom controls - if tapPosition.y > mediaScrubProgressBar.frame.origin.y { - return - } - - // Reset number(set to -1/1) of seek when orientation has been changed. - if tapPosition.x < backwardBoundary { - numberOfGestureSeek = previousSeekState == .forward ? -1 : numberOfGestureSeek - 1 - } else if tapPosition.x > forwardBoundary { - numberOfGestureSeek = previousSeekState == .backward ? 1 : numberOfGestureSeek + 1 - } else { - playbackService.switchAspectRatio(true) - return - } - //_isTapSeeking = YES; - executeSeekFromGesture(.tap) - } - @objc private func handleLongPressGesture(_ gestureRecognizer: UILongPressGestureRecognizer) { guard playerController.isSpeedUpGestureEnabled, playbackService.isPlaying else { @@ -1267,29 +1201,6 @@ class VideoPlayerViewController: PlayerViewController { } } - private func executeSeekFromGesture(_ type: PlayerSeekGestureType) { - - let currentSeek: Int - if numberOfGestureSeek > 0 { - currentSeek = type == .tap ? seekForwardBy : seekForwardBySwipe - totalSeekDuration = previousSeekState == .backward ? currentSeek : totalSeekDuration + currentSeek - previousSeekState = .forward - } else { - currentSeek = type == .tap ? seekBackwardBy : seekBackwardBySwipe - totalSeekDuration = previousSeekState == .forward ? -currentSeek : totalSeekDuration - currentSeek - previousSeekState = .backward - } - - displayAndApplySeekDuration(currentSeek) - } - - private func hideSystemVolumeInfo() { -#if os(iOS) - volumeView.alpha = 0.00001 - view.addSubview(volumeView) -#endif - } - private func videoPlayerButtons() { let audioMedia: Bool = playbackService.metadata.isAudioOnly if audioMedia || playbackService.playAsAudio { @@ -1353,18 +1264,6 @@ class VideoPlayerViewController: PlayerViewController { playerController.isInterfaceLocked = !enabled } - - private func showIcon(button: UIButton) { - UIView.animate(withDuration: 0.5, animations: { - button.isHidden = false - }, completion: nil) - } - - private func hideIcon(button: UIButton) { - UIView.animate(withDuration: 0.5, animations: { - button.isHidden = true - }, completion: nil) - } } // MARK: - Delegation @@ -1451,7 +1350,7 @@ extension VideoPlayerViewController { if playbackService.isPlayingOnExternalScreen() { #if os(iOS) if let renderer = playbackService.renderer { - externalVideoOutputView.updateUI(rendererName: playbackService.renderer?.name, title: metadata.title) + externalVideoOutputView.updateUI(rendererName: renderer.name, title: metadata.title) } #else externalVideoOutputView.updateUI(rendererName: nil, title: metadata.title) @@ -1507,14 +1406,6 @@ extension VideoPlayerViewController { videoPlayerControls.shuffleButton.tintColor = playbackService.isShuffleMode ? orangeColor : .white } - - override func reloadPlayQueue() { - guard let queueViewController = queueViewController else { - return - } - - queueViewController.reload() - } } // MARK: - PlayerControllerDelegate @@ -1604,6 +1495,8 @@ extension VideoPlayerViewController { extension VideoPlayerViewController { override func mediaMoreOptionsActionSheetDidToggleInterfaceLock(state: Bool) { + super.mediaMoreOptionsActionSheetDidToggleInterfaceLock(state: state) + #if os(iOS) let mask = getInterfaceOrientationMask(orientation: UIApplication.shared.statusBarOrientation) -- GitLab From 7d01fc64d78ddbf5e8231297e294346ae306f43c Mon Sep 17 00:00:00 2001 From: Craig Reyenga <craig.reyenga@gmail.com> Date: Sun, 13 Apr 2025 20:41:45 -0400 Subject: [PATCH 4/4] MR feedback --- Buildsystem/Testing/UI/VLCTestMenu.swift | 1 + .../AudioPlayer/AudioPlayerViewController.swift | 2 +- Sources/Playback/Player/PlayerViewController.swift | 14 +++++++------- .../VideoPlayerViewController.swift | 2 +- VLC.xcodeproj/project.pbxproj | 6 +++--- 5 files changed, 13 insertions(+), 12 deletions(-) diff --git a/Buildsystem/Testing/UI/VLCTestMenu.swift b/Buildsystem/Testing/UI/VLCTestMenu.swift index 168d9e730..86caa920f 100644 --- a/Buildsystem/Testing/UI/VLCTestMenu.swift +++ b/Buildsystem/Testing/UI/VLCTestMenu.swift @@ -78,5 +78,6 @@ class VLCTestMenu: XCTestCase { helper.tapTabBarItem(VLCAccessibilityIdentifier.settings) app.navigationBars.buttons[VLCAccessibilityIdentifier.about].tap() XCTAssertNotNil(app.navigationBars.buttons[VLCAccessibilityIdentifier.done]) + XCTAssertNotNil(app.navigationBars.buttons[VLCAccessibilityIdentifier.contribute]) } } diff --git a/Sources/Playback/Player/AudioPlayer/AudioPlayerViewController.swift b/Sources/Playback/Player/AudioPlayer/AudioPlayerViewController.swift index eee67f0d4..31e324299 100644 --- a/Sources/Playback/Player/AudioPlayer/AudioPlayerViewController.swift +++ b/Sources/Playback/Player/AudioPlayer/AudioPlayerViewController.swift @@ -66,7 +66,7 @@ class AudioPlayerViewController: PlayerViewController { super.init(mediaLibraryService: mediaLibraryService, rendererDiscovererManager: rendererDiscovererManager, playerController: playerController, - isBrightnessControlEnabled: false) + isBrightnessControlAvailable: false) NotificationCenter.default.addObserver(self, selector: #selector(playbackSpeedHasChanged(_:)), name: Notification.Name("ChangePlaybackSpeed"), object: nil) self.playerController.delegate = self diff --git a/Sources/Playback/Player/PlayerViewController.swift b/Sources/Playback/Player/PlayerViewController.swift index 7e41a4b25..67fec51e1 100644 --- a/Sources/Playback/Player/PlayerViewController.swift +++ b/Sources/Playback/Player/PlayerViewController.swift @@ -276,7 +276,7 @@ class PlayerViewController: UIViewController { var addBookmarksView: AddBookmarksView? = nil - private let isBrightnessControlEnabled: Bool + private let isBrightnessControlAvailable: Bool private var isGestureActive: Bool = false @@ -364,11 +364,11 @@ class PlayerViewController: UIViewController { init(mediaLibraryService: MediaLibraryService, rendererDiscovererManager: VLCRendererDiscovererManager, playerController: PlayerController, - isBrightnessControlEnabled: Bool) { + isBrightnessControlAvailable: Bool) { self.mediaLibraryService = mediaLibraryService self.rendererDiscovererManager = rendererDiscovererManager self.playerController = playerController - self.isBrightnessControlEnabled = isBrightnessControlEnabled + self.isBrightnessControlAvailable = isBrightnessControlAvailable super.init(nibName: nil, bundle: nil) @@ -380,7 +380,7 @@ class PlayerViewController: UIViewController { init(mediaLibraryService: MediaLibraryService, playerController: PlayerController) { self.mediaLibraryService = mediaLibraryService self.playerController = playerController - self.isBrightnessControlEnabled = false + self.isBrightnessControlAvailable = false self.systemBrightness = 1.0 super.init(nibName: nil, bundle: nil) @@ -433,7 +433,7 @@ class PlayerViewController: UIViewController { //update the value of brightness control view //In case of remember brightness option is disabled, this will update the brightness bar with current brightness. - if !playerController.isRememberBrightnessEnabled && isBrightnessControlEnabled { + if !playerController.isRememberBrightnessEnabled && isBrightnessControlAvailable { brightnessControlView.updateIcon(level: brightnessControl.fetchAndGetDeviceValue()) } #endif @@ -443,7 +443,7 @@ class PlayerViewController: UIViewController { override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) - if playerController.isRememberBrightnessEnabled && isBrightnessControlEnabled { + if playerController.isRememberBrightnessEnabled && isBrightnessControlAvailable { if let brightness = userDefaults.value(forKey: KVLCPlayerBrightness) as? CGFloat { animateBrightness(to: brightness) self.brightnessControl.value = Float(brightness) @@ -465,7 +465,7 @@ class PlayerViewController: UIViewController { override func viewDidDisappear(_ animated: Bool) { super.viewDidDisappear(animated) - if playerController.isRememberBrightnessEnabled && isBrightnessControlEnabled { + if playerController.isRememberBrightnessEnabled && isBrightnessControlAvailable { let currentBrightness = UIScreen.main.brightness self.brightnessControl.value = Float(currentBrightness) // helper in indicating change in the system brightness userDefaults.set(currentBrightness, forKey: KVLCPlayerBrightness) diff --git a/Sources/Playback/Player/VideoPlayer-iOS/VideoPlayerViewController.swift b/Sources/Playback/Player/VideoPlayer-iOS/VideoPlayerViewController.swift index 65839b6ac..ceb6249f3 100644 --- a/Sources/Playback/Player/VideoPlayer-iOS/VideoPlayerViewController.swift +++ b/Sources/Playback/Player/VideoPlayer-iOS/VideoPlayerViewController.swift @@ -317,7 +317,7 @@ class VideoPlayerViewController: PlayerViewController { super.init(mediaLibraryService: mediaLibraryService, rendererDiscovererManager: rendererDiscovererManager, playerController: playerController, - isBrightnessControlEnabled: true) + isBrightnessControlAvailable: true) self.playerController.delegate = self self.mediaNavigationBar.addGestureRecognizer(minimizeGestureRecognizer) diff --git a/VLC.xcodeproj/project.pbxproj b/VLC.xcodeproj/project.pbxproj index 22a31cd48..94af9dff1 100644 --- a/VLC.xcodeproj/project.pbxproj +++ b/VLC.xcodeproj/project.pbxproj @@ -5282,7 +5282,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; INFOPLIST_FILE = Buildsystem/Testing/UI/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 12; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -5336,7 +5336,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; INFOPLIST_FILE = Buildsystem/Testing/UI/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 12; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -5391,7 +5391,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; INFOPLIST_FILE = Buildsystem/Testing/UI/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 12; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", -- GitLab