am 01a58129: am 0250bc2f: Merge "Catch exception when ViewRoot\'s surface is not valid. Bug #3399426" into honeycomb

* commit '01a5812902668d0dbba51cd0efe22bfba3711230':
  Catch exception when ViewRoot's surface is not valid. Bug #3399426
diff --git a/core/java/android/view/ViewRoot.java b/core/java/android/view/ViewRoot.java
index a8772fe..e1f6b00 100644
--- a/core/java/android/view/ViewRoot.java
+++ b/core/java/android/view/ViewRoot.java
@@ -1542,6 +1542,7 @@
                 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 jobject Surface_lockCanvas(JNIEnv* env, jobject clazz, jobject dirtyRect)
 {
     const sp<Surface>& 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;