|
|
@ -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) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|