#61 properly finalize thumbnail fetch when MMR cannot open video

This commit is contained in:
Thibault Deckers 2021-09-07 20:04:53 +09:00
parent e5867515e3
commit ff53776697
2 changed files with 12 additions and 3 deletions

View file

@ -50,7 +50,7 @@ internal class SvgFetcher(val model: SvgThumbnail, val width: Int, val height: I
val context = model.context val context = model.context
val uri = model.uri val uri = model.uri
StorageUtils.openInputStream(context, uri)?.use { input -> val bitmap: Bitmap? = StorageUtils.openInputStream(context, uri)?.use { input ->
try { try {
SVG.getFromInputStream(input)?.let { svg -> SVG.getFromInputStream(input)?.let { svg ->
svg.normalizeSize() svg.normalizeSize()
@ -71,12 +71,19 @@ internal class SvgFetcher(val model: SvgThumbnail, val width: Int, val height: I
val canvas = Canvas(bitmap) val canvas = Canvas(bitmap)
svg.renderToCanvas(canvas) svg.renderToCanvas(canvas)
callback.onDataReady(bitmap) bitmap
} }
} catch (ex: SVGParseException) { } catch (ex: SVGParseException) {
callback.onLoadFailed(ex) callback.onLoadFailed(ex)
return
} }
} }
if (bitmap == null) {
callback.onLoadFailed(Exception("failed to load SVG for uri=$uri"))
} else {
callback.onDataReady(bitmap)
}
} }
override fun cleanup() {} override fun cleanup() {}

View file

@ -52,7 +52,9 @@ internal class VideoThumbnailFetcher(private val model: VideoThumbnail) : DataFe
override fun loadData(priority: Priority, callback: DataCallback<in InputStream>) { override fun loadData(priority: Priority, callback: DataCallback<in InputStream>) {
GlobalScope.launch(Dispatchers.IO) { GlobalScope.launch(Dispatchers.IO) {
val retriever = openMetadataRetriever(model.context, model.uri) val retriever = openMetadataRetriever(model.context, model.uri)
if (retriever != null) { if (retriever == null) {
callback.onLoadFailed(Exception("failed to initialize MediaMetadataRetriever for uri=${model.uri}"))
} else {
try { try {
var bytes = retriever.embeddedPicture var bytes = retriever.embeddedPicture
if (bytes == null) { if (bytes == null) {