Merge "Replace native crash with IAE when calling picture.draw() w/ a HW canvas" into lmp-dev
diff --git a/core/java/android/view/GLES20Canvas.java b/core/java/android/view/GLES20Canvas.java
index ceea9f8..076f1e2 100644
--- a/core/java/android/view/GLES20Canvas.java
+++ b/core/java/android/view/GLES20Canvas.java
@@ -800,28 +800,6 @@
}
@Override
- public void drawPicture(Picture picture, Rect dst) {
- save();
- translate(dst.left, dst.top);
- if (picture.getWidth() > 0 && picture.getHeight() > 0) {
- scale(dst.width() / picture.getWidth(), dst.height() / picture.getHeight());
- }
- drawPicture(picture);
- restore();
- }
-
- @Override
- public void drawPicture(Picture picture, RectF dst) {
- save();
- translate(dst.left, dst.top);
- if (picture.getWidth() > 0 && picture.getHeight() > 0) {
- scale(dst.width() / picture.getWidth(), dst.height() / picture.getHeight());
- }
- drawPicture(picture);
- restore();
- }
-
- @Override
public void drawPoint(float x, float y, Paint paint) {
float[] point = getPointStorage();
point[0] = x;
diff --git a/graphics/java/android/graphics/Canvas.java b/graphics/java/android/graphics/Canvas.java
index f18694b..0927ffd 100644
--- a/graphics/java/android/graphics/Canvas.java
+++ b/graphics/java/android/graphics/Canvas.java
@@ -203,7 +203,7 @@
*/
public void setBitmap(@Nullable Bitmap bitmap) {
if (isHardwareAccelerated()) {
- throw new RuntimeException("Can't set a bitmap device on a GL canvas");
+ throw new RuntimeException("Can't set a bitmap device on a HW accelerated canvas");
}
if (bitmap == null) {
diff --git a/graphics/java/android/graphics/Picture.java b/graphics/java/android/graphics/Picture.java
index 5aa7c6a..d28c3d5 100644
--- a/graphics/java/android/graphics/Picture.java
+++ b/graphics/java/android/graphics/Picture.java
@@ -122,6 +122,11 @@
* @param canvas The picture is drawn to this canvas
*/
public void draw(Canvas canvas) {
+ if (canvas.isHardwareAccelerated()) {
+ throw new IllegalArgumentException(
+ "Picture playback is only supported on software canvas.");
+ }
+
if (mRecordingCanvas != null) {
endRecording();
}