Bug 36366 - Repaint loop when painting using scaled CTMs with different translations
Summary: Repaint loop when painting using scaled CTMs with different translations
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: Layout and Rendering (show other bugs)
Version: 528+ (Nightly build)
Hardware: PC OS X 10.5
: P2 Normal
Assignee: Nobody
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2010-03-19 07:26 PDT by Antti Koivisto
Modified: 2010-03-19 08:34 PDT (History)
3 users (show)

See Also:


Attachments
patch (2.02 KB, patch)
2010-03-19 07:56 PDT, Antti Koivisto
hausmann: review+
Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
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>