mirror of
https://github.com/recloudstream/cloudstream.git
synced 2024-08-15 01:53:11 +00:00
More robust player release (#601)
This commit is contained in:
parent
8fe34d3d2a
commit
a5450e5da2
2 changed files with 12 additions and 4 deletions
|
@ -517,6 +517,7 @@ abstract class AbstractPlayerFragment(
|
||||||
canEnterPipMode = false
|
canEnterPipMode = false
|
||||||
mMediaSession?.release()
|
mMediaSession?.release()
|
||||||
mMediaSession = null
|
mMediaSession = null
|
||||||
|
playerView?.player = null
|
||||||
SubtitlesFragment.applyStyleEvent -= ::onSubStyleChanged
|
SubtitlesFragment.applyStyleEvent -= ::onSubStyleChanged
|
||||||
|
|
||||||
keepScreenOn(false)
|
keepScreenOn(false)
|
||||||
|
|
|
@ -51,6 +51,7 @@ import com.lagradost.cloudstream3.AcraApplication.Companion.getKey
|
||||||
import com.lagradost.cloudstream3.AcraApplication.Companion.setKey
|
import com.lagradost.cloudstream3.AcraApplication.Companion.setKey
|
||||||
import com.lagradost.cloudstream3.USER_AGENT
|
import com.lagradost.cloudstream3.USER_AGENT
|
||||||
import com.lagradost.cloudstream3.app
|
import com.lagradost.cloudstream3.app
|
||||||
|
import com.lagradost.cloudstream3.mvvm.debugAssert
|
||||||
import com.lagradost.cloudstream3.mvvm.logError
|
import com.lagradost.cloudstream3.mvvm.logError
|
||||||
import com.lagradost.cloudstream3.mvvm.normalSafeApiCall
|
import com.lagradost.cloudstream3.mvvm.normalSafeApiCall
|
||||||
import com.lagradost.cloudstream3.ui.subtitles.SaveCaptionStyle
|
import com.lagradost.cloudstream3.ui.subtitles.SaveCaptionStyle
|
||||||
|
@ -85,6 +86,12 @@ const val toleranceAfterUs = 300_000L
|
||||||
class CS3IPlayer : IPlayer {
|
class CS3IPlayer : IPlayer {
|
||||||
private var isPlaying = false
|
private var isPlaying = false
|
||||||
private var exoPlayer: ExoPlayer? = null
|
private var exoPlayer: ExoPlayer? = null
|
||||||
|
set(value) {
|
||||||
|
// If the old value is not null then the player has not been properly released.
|
||||||
|
debugAssert({ field != null && value != null }, { "Previous player instance should be released!" })
|
||||||
|
field = value
|
||||||
|
}
|
||||||
|
|
||||||
var cacheSize = 0L
|
var cacheSize = 0L
|
||||||
var simpleCacheSize = 0L
|
var simpleCacheSize = 0L
|
||||||
var videoBufferMs = 0L
|
var videoBufferMs = 0L
|
||||||
|
@ -682,13 +689,13 @@ class CS3IPlayer : IPlayer {
|
||||||
metadataRendererOutput
|
metadataRendererOutput
|
||||||
).map {
|
).map {
|
||||||
if (it is TextRenderer) {
|
if (it is TextRenderer) {
|
||||||
currentTextRenderer = CustomTextRenderer(
|
val currentTextRenderer = CustomTextRenderer(
|
||||||
subtitleOffset,
|
subtitleOffset,
|
||||||
textRendererOutput,
|
textRendererOutput,
|
||||||
eventHandler.looper,
|
eventHandler.looper,
|
||||||
CustomSubtitleDecoderFactory()
|
CustomSubtitleDecoderFactory()
|
||||||
)
|
).also { this.currentTextRenderer = it }
|
||||||
currentTextRenderer!!
|
currentTextRenderer
|
||||||
} else it
|
} else it
|
||||||
}.toTypedArray()
|
}.toTypedArray()
|
||||||
}
|
}
|
||||||
|
@ -1323,7 +1330,7 @@ class CS3IPlayer : IPlayer {
|
||||||
override fun reloadPlayer(context: Context) {
|
override fun reloadPlayer(context: Context) {
|
||||||
Log.i(TAG, "reloadPlayer")
|
Log.i(TAG, "reloadPlayer")
|
||||||
|
|
||||||
exoPlayer?.release()
|
releasePlayer(false)
|
||||||
currentLink?.let {
|
currentLink?.let {
|
||||||
loadOnlinePlayer(context, it)
|
loadOnlinePlayer(context, it)
|
||||||
} ?: currentDownloadedFile?.let {
|
} ?: currentDownloadedFile?.let {
|
||||||
|
|
Loading…
Reference in a new issue