From cc7d7ec478a866e3f9de14605d5c05db2a33a801 Mon Sep 17 00:00:00 2001 From: Blatzar <46196380+Blatzar@users.noreply.github.com> Date: Sat, 18 Jun 2022 19:10:32 +0200 Subject: [PATCH] Fixed online subs resetting progress (for real this time) --- .../cloudstream3/ui/player/CS3IPlayer.kt | 20 +++++++++---------- .../cloudstream3/ui/player/GeneratorPlayer.kt | 6 +++++- .../cloudstream3/ui/player/IPlayer.kt | 2 ++ 3 files changed, 16 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/com/lagradost/cloudstream3/ui/player/CS3IPlayer.kt b/app/src/main/java/com/lagradost/cloudstream3/ui/player/CS3IPlayer.kt index d667006d..03af78e3 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/ui/player/CS3IPlayer.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/ui/player/CS3IPlayer.kt @@ -187,6 +187,9 @@ class CS3IPlayer : IPlayer { } var currentSubtitles: SubtitleData? = null + /** + * @return True if the player should be reloaded + * */ override fun setPreferredSubtitles(subtitle: SubtitleData?): Boolean { Log.i(TAG, "setPreferredSubtitles init $subtitle") currentSubtitles = subtitle @@ -199,15 +202,11 @@ class CS3IPlayer : IPlayer { ) } else { when (subtitleHelper.subtitleStatus(subtitle)) { - - // Uncommenting this will lead to online subtitles resetting player to 00:00 on reload - -// SubtitleStatus.REQUIRES_RELOAD -> { -// Log.i(TAG, "setPreferredSubtitles REQUIRES_RELOAD") -// return@let true -// // reloadPlayer(context) -// } - SubtitleStatus.IS_ACTIVE, SubtitleStatus.REQUIRES_RELOAD -> { + SubtitleStatus.REQUIRES_RELOAD -> { + Log.i(TAG, "setPreferredSubtitles REQUIRES_RELOAD") + return@let true + } + SubtitleStatus.IS_ACTIVE -> { Log.i(TAG, "setPreferredSubtitles IS_ACTIVE") trackSelector.setParameters( @@ -230,7 +229,6 @@ class CS3IPlayer : IPlayer { //} } SubtitleStatus.NOT_FOUND -> { - // not found Log.i(TAG, "setPreferredSubtitles NOT_FOUND") return@let true } @@ -272,7 +270,7 @@ class CS3IPlayer : IPlayer { subtitleHelper.setSubStyle(style) } - private fun saveData() { + override fun saveData() { Log.i(TAG, "saveData") updatedTime() diff --git a/app/src/main/java/com/lagradost/cloudstream3/ui/player/GeneratorPlayer.kt b/app/src/main/java/com/lagradost/cloudstream3/ui/player/GeneratorPlayer.kt index 9691eec7..506a9cbe 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/ui/player/GeneratorPlayer.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/ui/player/GeneratorPlayer.kt @@ -376,6 +376,9 @@ class GeneratorPlayer : FullScreenPlayer() { // this is used instead of observe, because observe is too slow val subs = currentSubs + subtitleData + + // Save current time as to not reset player to 00:00 + player.saveData() player.setActiveSubtitles(subs) player.reloadPlayer(ctx) @@ -773,11 +776,11 @@ class GeneratorPlayer : FullScreenPlayer() { private fun autoSelectFromSettings(): Boolean { // auto select subtitle based of settings val langCode = preferredAutoSelectSubtitles - if (!langCode.isNullOrEmpty() && player.getCurrentPreferredSubtitle() == null) { getAutoSelectSubtitle(currentSubs, settings = true, downloads = false)?.let { sub -> context?.let { ctx -> if (setSubtitles(sub)) { + player.saveData() player.reloadPlayer(ctx) player.handleEvent(CSPlayerEvent.Play) return true @@ -793,6 +796,7 @@ class GeneratorPlayer : FullScreenPlayer() { getAutoSelectSubtitle(currentSubs, settings = false, downloads = true)?.let { sub -> context?.let { ctx -> if (setSubtitles(sub)) { + player.saveData() player.reloadPlayer(ctx) player.handleEvent(CSPlayerEvent.Play) return true diff --git a/app/src/main/java/com/lagradost/cloudstream3/ui/player/IPlayer.kt b/app/src/main/java/com/lagradost/cloudstream3/ui/player/IPlayer.kt index 5dd05399..aa93c104 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/ui/player/IPlayer.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/ui/player/IPlayer.kt @@ -90,6 +90,8 @@ interface IPlayer { ) fun updateSubtitleStyle(style: SaveCaptionStyle) + fun saveData() + fun loadPlayer( context: Context, sameEpisode: Boolean,