Bug 36366

Summary: Repaint loop when painting using scaled CTMs with different translations
Product: WebKit Reporter: Antti Koivisto <koivisto>
Component: Layout and RenderingAssignee: Nobody <webkit-unassigned>
Status: RESOLVED FIXED    
Severity: Normal CC: hausmann, manyoso, oliver
Priority: P2    
Version: 528+ (Nightly build)   
Hardware: PC   
OS: OS X 10.5   
Attachments:
Description Flags
patch hausmann: review+

Description Antti Koivisto 2010-03-19 07:26:23 PDT
The code in RenderBoxModelScaleObserver::shouldPaintBackgroundAtLowQuality tests if the scaling has changed from the previous value by comparing the transformations:

    // We are scaled, but we painted already at this size, so just keep using whatever mode we last painted with.
    if ((!contextIsScaled || data->transform() == currentTransform) && data->size() == size)
        return data->useLowQualityScale();

This test fails if the scale is the same but the translation changes. This can lead to infinite repaint loop, if the document is painted in pieces using different translations (for example for tiling).
Comment 1 Antti Koivisto 2010-03-19 07:56:01 PDT
Created attachment 51154 [details]
patch
Comment 2 Simon Hausmann 2010-03-19 08:26:46 PDT
Comment on attachment 51154 [details]
patch

Landing manually
Comment 3 Simon Hausmann 2010-03-19 08:28:29 PDT
Committed r56239: <http://trac.webkit.org/changeset/56239>