Skip to content

Commit

Permalink
[APT-10393] Prevent crashing if content does not load
Browse files Browse the repository at this point in the history
Adds a catch block to content loading - this area isn't caught by things in the normal Reducer patterns that happens in playback.
  • Loading branch information
kabliz committed Sep 17, 2024
1 parent 0439384 commit da7de4f
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import com.scribd.armadillo.ArmadilloPlayerChoreographer
import com.scribd.armadillo.Constants
import com.scribd.armadillo.Milliseconds
import com.scribd.armadillo.StateStore
import com.scribd.armadillo.actions.ErrorAction
import com.scribd.armadillo.actions.FastForwardAction
import com.scribd.armadillo.actions.NewAudioPlayableAction
import com.scribd.armadillo.actions.PlaybackEngineReady
Expand All @@ -24,7 +25,9 @@ import com.scribd.armadillo.actions.SkipNextAction
import com.scribd.armadillo.actions.SkipPrevAction
import com.scribd.armadillo.di.Injector
import com.scribd.armadillo.encryption.ExoplayerEncryption
import com.scribd.armadillo.error.ArmadilloException
import com.scribd.armadillo.error.MissingDataException
import com.scribd.armadillo.error.PlaybackStartFailureException
import com.scribd.armadillo.models.AudioPlayable
import com.scribd.armadillo.models.Chapter
import com.scribd.armadillo.models.PlaybackState
Expand Down Expand Up @@ -137,16 +140,21 @@ internal class ExoplayerPlaybackEngine(private var audioPlayable: AudioPlayable)

exoPlayer = createExoplayerInstance(context, audioAttributes.exoPlayerAttrs, loadControl)

val mediaSource = mediaSourceRetriever.generateMediaSource(audioPlayable.request, context)
exoPlayer.setMediaSource(mediaSource)
exoPlayer.prepare()
try {
val mediaSource = mediaSourceRetriever.generateMediaSource(audioPlayable.request, context)
exoPlayer.setMediaSource(mediaSource)
exoPlayer.prepare()

exoPlayer.addListener(playerEventListener)
exoPlayer.addListener(playerEventListener)

exoPlayer.playWhenReady = config.isAutoPlay
exoPlayer.playWhenReady = config.isAutoPlay

stateModifier.dispatch(PlaybackEngineReady(true))
stateModifier.dispatch(PlayerStateAction(PlaybackState.PAUSED))
stateModifier.dispatch(PlaybackEngineReady(true))
stateModifier.dispatch(PlayerStateAction(PlaybackState.PAUSED))
} catch (ex: Exception) {
val armadilloException = if(ex is ArmadilloException) ex else PlaybackStartFailureException(cause = ex)
stateModifier.dispatch(ErrorAction(armadilloException))
}
}

override fun updateMediaRequest(mediaRequest: AudioPlayable.MediaRequest) {
Expand Down
3 changes: 3 additions & 0 deletions RELEASE.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
# Project Armadillo Release Notes

## 1.6.1
- Prevents fatal crashing when content fails to load

## 1.6.0
- Encrypts widevine drm keys. The Android minSDK has been changed to version 23 in order to support this feature.

Expand Down
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ org.gradle.jvmargs=-Xmx1536m
# org.gradle.parallel=true
PACKAGE_NAME=com.scribd.armadillo
GRADLE_PLUGIN_VERSION=7.2.0
LIBRARY_VERSION=1.6.0
LIBRARY_VERSION=1.6.1
EXOPLAYER_VERSION=2.19.1
RXJAVA_VERSION=2.2.4
RXANDROID_VERSION=2.0.1
Expand Down

0 comments on commit da7de4f

Please sign in to comment.