summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNicolas Roard <nicolasroard@google.com>2011-12-08 17:08:44 -0800
committerAndroid Git Automerger <android-git-automerger@android.com>2011-12-08 17:08:44 -0800
commit5f0a489e7a7dbb42ae725b31e34a92901c65eb0a (patch)
tree7ffc3a59251ef4b70e18dcdd1c58df5134831334
parent397afc9c161292e163bf2381973fced88c7123bf (diff)
parentc52e5656adae84b9be8d0e10f0e68bfca988fe9a (diff)
downloadexternal_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.cpp13
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;
}