Unreviewed, rolling out r211967.
authorcarlosgc@webkit.org <carlosgc@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 15 Feb 2017 07:37:55 +0000 (07:37 +0000)
committercarlosgc@webkit.org <carlosgc@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 15 Feb 2017 07:37:55 +0000 (07:37 +0000)
Caused rendering issues in HiDPI

Reverted changeset:

"[GTK] scroll with transparent background not repainted after
scrollY >= 32768"
https://bugs.webkit.org/show_bug.cgi?id=154283
http://trac.webkit.org/changeset/211967

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@212346 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebCore/ChangeLog
Source/WebCore/platform/graphics/cairo/CairoUtilities.cpp

index 7cb597e..ad2ab1e 100644 (file)
@@ -1,5 +1,18 @@
 2017-02-14  Carlos Garcia Campos  <cgarcia@igalia.com>
 
+        Unreviewed, rolling out r211967.
+
+        Caused rendering issues in HiDPI
+
+        Reverted changeset:
+
+        "[GTK] scroll with transparent background not repainted after
+        scrollY >= 32768"
+        https://bugs.webkit.org/show_bug.cgi?id=154283
+        http://trac.webkit.org/changeset/211967
+
+2017-02-14  Carlos Garcia Campos  <cgarcia@igalia.com>
+
         [GTK] Update cookie manager API to properly work with ephemeral sessions
         https://bugs.webkit.org/show_bug.cgi?id=168230
 
index 440c6c6..fc48589 100644 (file)
@@ -205,28 +205,8 @@ void drawPatternToCairoContext(cairo_t* cr, cairo_surface_t* image, const IntSiz
     cairo_pattern_t* pattern = cairo_pattern_create_for_surface(image);
     cairo_pattern_set_extend(pattern, CAIRO_EXTEND_REPEAT);
 
-    // Cairo cannot convert a cairo_matrix to a Pixman's matrix if any of its components is bigger than maximum int size of Pixman.
-    // With this condition, Cairo gives up to draw given pattern entirely. To workaround this problem, we reduce the coordinate
-    // space by translating CTM and destRect.
-    cairo_matrix_t ctm;
-    cairo_get_matrix(cr, &ctm);
-    double dx = 0, dy = 0;
-    cairo_matrix_transform_point(&ctm, &dx, &dy);
-    double xScale = 1, yScale = 1;
-    cairo_matrix_transform_distance(&ctm, &xScale, &yScale);
-
-    dx = std::trunc(-dx / tileRect.width()) * tileRect.width() / xScale;
-    dy = std::trunc(-dy / tileRect.height()) * tileRect.height() / yScale;
-    cairo_translate(cr, dx, dy);
-
-    FloatRect adjustedDestRect(destRect);
-    adjustedDestRect.move(-dx, -dy);
-
-    // Again, we need to reduce the coordinate of the transformation matrix we are using for the pattern.
     cairo_matrix_t patternMatrix = cairo_matrix_t(patternTransform);
-    dx = phase.x() - std::trunc(phase.x() / tileRect.width()) * tileRect.width();
-    dy = phase.y() - std::trunc(phase.y() / tileRect.height()) * tileRect.height();
-    cairo_matrix_t phaseMatrix = {1, 0, 0, 1, dx + tileRect.x() * patternTransform.a(), dy + tileRect.y() * patternTransform.d()};
+    cairo_matrix_t phaseMatrix = {1, 0, 0, 1, phase.x() + tileRect.x() * patternTransform.a(), phase.y() + tileRect.y() * patternTransform.d()};
     cairo_matrix_t combined;
     cairo_matrix_multiply(&combined, &patternMatrix, &phaseMatrix);
     cairo_matrix_invert(&combined);
@@ -235,7 +215,7 @@ void drawPatternToCairoContext(cairo_t* cr, cairo_surface_t* image, const IntSiz
     cairo_set_operator(cr, op);
     cairo_set_source(cr, pattern);
     cairo_pattern_destroy(pattern);
-    cairo_rectangle(cr, adjustedDestRect.x(), adjustedDestRect.y(), adjustedDestRect.width(), adjustedDestRect.height());
+    cairo_rectangle(cr, destRect.x(), destRect.y(), destRect.width(), destRect.height());
     cairo_fill(cr);
 
     cairo_restore(cr);