diff options
author | Simon Hausmann <simon.hausmann@digia.com> | 2012-10-17 16:21:14 +0200 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@digia.com> | 2012-10-17 16:21:14 +0200 |
commit | 8995b83bcbfbb68245f779b64e5517627c6cc6ea (patch) | |
tree | 17985605dab9263cc2444bd4d45f189e142cca7c /Source/WebCore/platform/graphics/filters/FETurbulence.cpp | |
parent | b9c9652036d5e9f1e29c574f40bc73a35c81ace6 (diff) |
Imported WebKit commit cf4f8fc6f19b0629f51860cb2d4b25e139d07e00 (http://svn.webkit.org/repository/webkit/trunk@131592)
New snapshot that includes the build fixes for Mac OS X 10.6 and earlier as well
as the previously cherry-picked changes
Diffstat (limited to 'Source/WebCore/platform/graphics/filters/FETurbulence.cpp')
-rw-r--r-- | Source/WebCore/platform/graphics/filters/FETurbulence.cpp | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/Source/WebCore/platform/graphics/filters/FETurbulence.cpp b/Source/WebCore/platform/graphics/filters/FETurbulence.cpp index 03df56b30..17688746f 100644 --- a/Source/WebCore/platform/graphics/filters/FETurbulence.cpp +++ b/Source/WebCore/platform/graphics/filters/FETurbulence.cpp @@ -376,19 +376,20 @@ void FETurbulence::platformApplySoftware() // Fill the parameter array int i = parallelJobs.numberOfJobs(); if (i > 1) { + // Split the job into "stepY"-sized jobs but there a few jobs that need to be slightly larger since + // stepY * jobs < total size. These extras are handled by the remainder "jobsWithExtra". + const int stepY = absolutePaintRect().height() / i; + const int jobsWithExtra = absolutePaintRect().height() % i; + int startY = 0; - int stepY = absolutePaintRect().height() / i; for (; i > 0; --i) { FillRegionParameters& params = parallelJobs.parameter(i-1); params.filter = this; params.pixelArray = pixelArray; params.paintingData = &paintingData; params.startY = startY; - if (i != 1) { - params.endY = startY + stepY; - startY = startY + stepY; - } else - params.endY = absolutePaintRect().height(); + startY += i < jobsWithExtra ? stepY + 1 : stepY; + params.endY = startY; } // Execute parallel jobs |