diff options
author | Nicolas Roard <nicolasroard@google.com> | 2011-12-08 17:08:44 -0800 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2011-12-08 17:08:44 -0800 |
commit | 5f0a489e7a7dbb42ae725b31e34a92901c65eb0a (patch) | |
tree | 7ffc3a59251ef4b70e18dcdd1c58df5134831334 | |
parent | 397afc9c161292e163bf2381973fced88c7123bf (diff) | |
parent | c52e5656adae84b9be8d0e10f0e68bfca988fe9a (diff) | |
download | external_webkit-5f0a489e7a7dbb42ae725b31e34a92901c65eb0a.zip external_webkit-5f0a489e7a7dbb42ae725b31e34a92901c65eb0a.tar.gz external_webkit-5f0a489e7a7dbb42ae725b31e34a92901c65eb0a.tar.bz2 |
am c52e5656: Merge "Fix ANR when hitting very large layers" into ics-mr1
* commit 'c52e5656adae84b9be8d0e10f0e68bfca988fe9a':
Fix ANR when hitting very large layers
-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; } |