diff options
author | Nicolas Roard <nicolasroard@google.com> | 2011-12-08 17:06:41 -0800 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2011-12-08 17:06:41 -0800 |
commit | c52e5656adae84b9be8d0e10f0e68bfca988fe9a (patch) | |
tree | 7ffc3a59251ef4b70e18dcdd1c58df5134831334 /Source/WebCore | |
parent | 2ee794607b1a21f2f9a0d19a43821d2fa6965470 (diff) | |
parent | 900fb9639aa20ef442a9f542f1da52fea667589c (diff) | |
download | external_webkit-c52e5656adae84b9be8d0e10f0e68bfca988fe9a.zip external_webkit-c52e5656adae84b9be8d0e10f0e68bfca988fe9a.tar.gz external_webkit-c52e5656adae84b9be8d0e10f0e68bfca988fe9a.tar.bz2 |
Merge "Fix ANR when hitting very large layers" into ics-mr1
Diffstat (limited to 'Source/WebCore')
-rw-r--r-- | Source/WebCore/platform/graphics/android/PaintedSurface.cpp | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/Source/WebCore/platform/graphics/android/PaintedSurface.cpp b/Source/WebCore/platform/graphics/android/PaintedSurface.cpp index d3c1e15..45c7579 100644 --- a/Source/WebCore/platform/graphics/android/PaintedSurface.cpp +++ b/Source/WebCore/platform/graphics/android/PaintedSurface.cpp @@ -52,9 +52,8 @@ #endif // DEBUG -// Allows layers using less than MAX_UNCLIPPED_AREA tiles to -// schedule all of them instead of clipping the area with the visible rect. -#define MAX_UNCLIPPED_AREA 16 +// Layers with an area larger than 2048*2048 should never be unclipped +#define MAX_UNCLIPPED_AREA 4194304 namespace WebCore { @@ -203,10 +202,14 @@ IntRect PaintedSurface::computeVisibleArea(LayerAndroid* layer) { return area; if (!layer->contentIsScrollable() - && layer->state()->layersRenderingMode() == GLWebViewState::kAllTextures) + && layer->state()->layersRenderingMode() == GLWebViewState::kAllTextures) { area = layer->unclippedArea(); - else + double total = ((double) area.width()) * ((double) area.height()); + if (total > MAX_UNCLIPPED_AREA) + area = layer->visibleArea(); + } else { area = layer->visibleArea(); + } return area; } |