feat: render placeholders while waiting for images to render (#1003)

This commit is contained in:
Matthías Páll Gissurarson
2026-07-12 21:40:07 +03:00
committed by GitHub
parent 444d87de82
commit 39ea4b045f
5 changed files with 125 additions and 10 deletions
@@ -155,6 +155,8 @@ void EpubReaderActivity::onEnter() {
return;
}
ImageBlock::clearSessionRenderFailures();
// Configure screen orientation based on settings
// NOTE: This affects layout math and must be applied before any render calls.
ReaderUtils::applyOrientation(renderer, SETTINGS.orientation);
@@ -1346,6 +1348,7 @@ void EpubReaderActivity::renderContents(std::unique_ptr<Page> page, const int or
const auto tPrewarm = millis();
const bool pageHasImages = page->hasImages();
const bool pageHasImagesNeedingDecode = pageHasImages && page->hasImagesNeedingDecode();
const bool needsTextGrayscale = SETTINGS.textAntiAliasing;
const bool needsAnyGrayscale = needsTextGrayscale || pageHasImages;
auto renderGrayscalePass = [&]() {
@@ -1356,6 +1359,13 @@ void EpubReaderActivity::renderContents(std::unique_ptr<Page> page, const int or
}
};
if (pageHasImagesNeedingDecode) {
page->renderWithImagePlaceholders(renderer, fontId, orientedMarginLeft, orientedMarginTop);
renderStatusBar();
renderer.displayBuffer(HalDisplay::FAST_REFRESH);
renderer.clearScreen();
}
page->render(renderer, fontId, orientedMarginLeft, orientedMarginTop);
renderStatusBar();
const auto tBwRender = millis();