From fea12b87f2988f20ea87314c4a1b47e1a0f4d95e Mon Sep 17 00:00:00 2001 From: Romain Guy Date: Thu, 27 Jan 2011 15:36:40 -0800 Subject: Catch exception when ViewRoot's surface is not valid. Bug #3399426 Change-Id: Id4e0b8714c9520c4e84e81c2978752d46c912b6b --- core/java/android/view/ViewRoot.java | 1 + core/jni/android_view_Surface.cpp | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/core/java/android/view/ViewRoot.java b/core/java/android/view/ViewRoot.java index 41fc6c6..b21af41 100644 --- a/core/java/android/view/ViewRoot.java +++ b/core/java/android/view/ViewRoot.java @@ -1537,6 +1537,7 @@ public final class ViewRoot extends Handler implements ViewParent, int top = dirty.top; int right = dirty.right; int bottom = dirty.bottom; + canvas = surface.lockCanvas(dirty); if (left != dirty.left || top != dirty.top || right != dirty.right || diff --git a/core/jni/android_view_Surface.cpp b/core/jni/android_view_Surface.cpp index e4af33f..aa9c107 100644 --- a/core/jni/android_view_Surface.cpp +++ b/core/jni/android_view_Surface.cpp @@ -296,8 +296,10 @@ static inline SkBitmap::Config convertPixelFormat(PixelFormat format) static jobject Surface_lockCanvas(JNIEnv* env, jobject clazz, jobject dirtyRect) { const sp& surface(getSurface(env, clazz)); - if (!Surface::isValid(surface)) + if (!Surface::isValid(surface)) { + doThrow(env, "java/lang/IllegalArgumentException", NULL); return 0; + } // get dirty region Region dirtyRegion; -- cgit v1.1