From 69f4c471c848481eb07765ac98a0161a9eec350d Mon Sep 17 00:00:00 2001 From: Bnyro Date: Tue, 19 Nov 2024 10:33:04 +0100 Subject: [PATCH] fix: crash when closing player before video started --- .../ui/fragments/AudioPlayerFragment.kt | 6 ++++++ .../libretube/ui/fragments/PlayerFragment.kt | 16 ++++++++++++---- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/com/github/libretube/ui/fragments/AudioPlayerFragment.kt b/app/src/main/java/com/github/libretube/ui/fragments/AudioPlayerFragment.kt index defd18f6e..ab0e87086 100644 --- a/app/src/main/java/com/github/libretube/ui/fragments/AudioPlayerFragment.kt +++ b/app/src/main/java/com/github/libretube/ui/fragments/AudioPlayerFragment.kt @@ -93,6 +93,12 @@ class AudioPlayerFragment : Fragment(), AudioPlayerOptions { if (isOffline) OfflinePlayerService::class.java else OnlinePlayerService::class.java, bundleOf() ) { + if (_binding == null) { + it.sendCustomCommand(AbstractPlayerService.stopServiceCommand, Bundle.EMPTY) + it.release() + return@startMediaService + } + playerController = it handleServiceConnection() } diff --git a/app/src/main/java/com/github/libretube/ui/fragments/PlayerFragment.kt b/app/src/main/java/com/github/libretube/ui/fragments/PlayerFragment.kt index fd45e59b5..49bf4f355 100644 --- a/app/src/main/java/com/github/libretube/ui/fragments/PlayerFragment.kt +++ b/app/src/main/java/com/github/libretube/ui/fragments/PlayerFragment.kt @@ -458,6 +458,12 @@ class PlayerFragment : Fragment(), OnlinePlayerOptions { VideoOnlinePlayerService::class.java, bundleOf(IntentData.playerData to playerData) ) { + if (_binding == null) { + playerController.sendCustomCommand(AbstractPlayerService.stopServiceCommand, Bundle.EMPTY) + playerController.release() + return@startMediaService + } + playerController = it playerController.addListener(playerListener) } @@ -847,11 +853,13 @@ class PlayerFragment : Fragment(), OnlinePlayerOptions { handler.removeCallbacksAndMessages(null) - playerController.removeListener(playerListener) - playerController.pause() + if (::playerController.isInitialized) { + playerController.removeListener(playerListener) + playerController.pause() - playerController.sendCustomCommand(AbstractPlayerService.stopServiceCommand, Bundle.EMPTY) - playerController.release() + playerController.sendCustomCommand(AbstractPlayerService.stopServiceCommand, Bundle.EMPTY) + playerController.release() + } if (PlayerHelper.pipEnabled) { // disable the auto PiP mode for SDK >= 32