feat: render placeholders while waiting for images to render (#1003)
This commit is contained in:
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user