Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 463c4d367dff65f9fdfda6ad0726d27c3a900f25
      
https://github.com/WebKit/WebKit/commit/463c4d367dff65f9fdfda6ad0726d27c3a900f25
  Author: Simon Fraser <simon.fra...@apple.com>
  Date:   2024-02-24 (Sat, 24 Feb 2024)

  Changed paths:
    M Source/WebCore/platform/graphics/TiledBacking.h
    M Source/WebCore/platform/graphics/ca/TileController.cpp
    M Source/WebKit/WebProcess/Plugins/PDF/UnifiedPDF/AsyncPDFRenderer.h
    M Source/WebKit/WebProcess/Plugins/PDF/UnifiedPDF/AsyncPDFRenderer.mm
    M Source/WebKit/WebProcess/Plugins/PDF/UnifiedPDF/UnifiedPDFPlugin.h
    M Source/WebKit/WebProcess/Plugins/PDF/UnifiedPDF/UnifiedPDFPlugin.mm

  Log Message:
  -----------
  [Unified PDF] Document turns blank white, flashes / flickers, while 
scrolling/zooming
https://bugs.webkit.org/show_bug.cgi?id=270042
rdar://123458964

Reviewed by Tim Horton.

With async tile rendering, we don't always have tiles to paint for a given 
rect, resulting
in flashing, e.g. when resizing the window or zooming.

Ameliorate this by generating a preview for each page, and painting this when 
we don't have
tiles. Currently we generate previews at 0.5x scale for a 1x page scale.

AsyncPDFRenderer takes care of generating page previews, using a new callback 
from the
TiledBacking client when page coverage changes. The page previews are generated 
on the
concurrent work queue. Unlike tiles, these page previews are not invalidate on 
configuration
changes (there's a FIXME to update them when PDF content changes).

* Source/WebCore/platform/graphics/TiledBacking.h:
* Source/WebCore/platform/graphics/ca/TileController.cpp:
(WebCore::TileController::setCoverageRect):
* Source/WebKit/WebProcess/Plugins/PDF/UnifiedPDF/AsyncPDFRenderer.h:
* Source/WebKit/WebProcess/Plugins/PDF/UnifiedPDF/AsyncPDFRenderer.mm:
(WebKit::AsyncPDFRenderer::generatePreviewImageForPage):
(WebKit::AsyncPDFRenderer::removePreviewForPage):
(WebKit::AsyncPDFRenderer::paintPagePreviewOnWorkQueue):
(WebKit::AsyncPDFRenderer::previewImageForPage const):
(WebKit::AsyncPDFRenderer::coverageRectDidChange):
(WebKit::AsyncPDFRenderer::paintPDFPageIntoBuffer):
(WebKit::AsyncPDFRenderer::paintTilesForPage):
(WebKit::AsyncPDFRenderer::updateTilesForPaintingRect):
(WebKit::AsyncPDFRenderer::paintTilesForPaintingRect): Deleted.
* Source/WebKit/WebProcess/Plugins/PDF/UnifiedPDF/UnifiedPDFPlugin.h:
* Source/WebKit/WebProcess/Plugins/PDF/UnifiedPDF/UnifiedPDFPlugin.mm:
(WebKit::UnifiedPDFPlugin::paintPDFContent): drawingRect was unused. Move 
documentScale out of the loop. Rename pageBoundsInDocumentCoordinates.
(WebKit::UnifiedPDFPlugin::heightForPageAtIndex const): Rename.
(WebKit::UnifiedPDFPlugin::firstPageHeight const):
(WebKit::UnifiedPDFPlugin::layoutBoundsForPageAtIndex const):
(WebKit::UnifiedPDFPlugin::scrollToPDFDestination):
(WebKit::UnifiedPDFPlugin::heightForPage const): Deleted.

Canonical link: https://commits.webkit.org/275289@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to