Browse Source

File: improve a bit pdf loading

feature/fga/small_timeline_improvements
ganfra 1 year ago
parent
commit
be009baed7
  1. 16
      features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/media/local/pdf/PdfRendererManager.kt

16
features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/media/local/pdf/PdfRendererManager.kt

@ -43,11 +43,11 @@ class PdfRendererManager(
mutex.withLock { mutex.withLock {
withContext(Dispatchers.IO) { withContext(Dispatchers.IO) {
pdfRenderer = PdfRenderer(parcelFileDescriptor).apply { pdfRenderer = PdfRenderer(parcelFileDescriptor).apply {
(0 until pageCount).map { pageIndex -> // Preload just 3 pages so we can render faster
PdfPage(width, pageIndex, mutex, this, coroutineScope) val firstPages = loadPages(from = 0, to = 3)
}.also { mutablePdfPages.value = firstPages
mutablePdfPages.value = it val nextPages = loadPages(from = 3, to = pageCount)
} mutablePdfPages.value = firstPages + nextPages
} }
} }
} }
@ -65,4 +65,10 @@ class PdfRendererManager(
} }
} }
} }
private fun PdfRenderer.loadPages(from: Int, to: Int): List<PdfPage> {
return (from until minOf(to, pageCount)).map { pageIndex ->
PdfPage(width, pageIndex, mutex, this, coroutineScope)
}
}
} }

Loading…
Cancel
Save