summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAhan Wu <ahanwu@google.com>2020-06-03 04:21:45 +0800
committerAnis Assi <anisassi@google.com>2020-06-04 11:26:36 -0700
commitba882622fe03e16bfa4b9231213cff03f5c6217e (patch)
tree535c0ff1efaa1dba1f1a99e44b69af47de405560
parent32884bbdb69658548e554513e2d43c5694b50a8a (diff)
downloadbase-ba882622fe03e16bfa4b9231213cff03f5c6217e.tar.gz
DO NOT MERGE Prevent ImageWallpaper from keeping crashingandroid-8.0.0_r49
GLUtil.texImage2D may throw exception that indicates bad image format. We should catch this exception, otherwise, systemui may keep crashing. Bug: 156087409 Test: Set a 16-bit rgb image as wallpaper Test: Systemui shouldn't keep crashing Change-Id: I6c9715c049b7848ecd5559ab76612a98dcd4ee6f (cherry picked from commit a3bff94e184590351fd95f630e8b8313d1d2053b)
-rw-r--r--packages/SystemUI/src/com/android/systemui/ImageWallpaper.java11
1 files changed, 10 insertions, 1 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/ImageWallpaper.java b/packages/SystemUI/src/com/android/systemui/ImageWallpaper.java
index 9a4179f4fef5..5a3601314fd0 100644
--- a/packages/SystemUI/src/com/android/systemui/ImageWallpaper.java
+++ b/packages/SystemUI/src/com/android/systemui/ImageWallpaper.java
@@ -603,7 +603,16 @@ public class ImageWallpaper extends WallpaperService {
final FloatBuffer triangleVertices = createMesh(left, top, right, bottom);
- final int texture = loadTexture(mBackground);
+ int texture = 0;
+ try {
+ texture = loadTexture(mBackground);
+ } catch (IllegalArgumentException e) {
+ mEgl.eglMakeCurrent(mEglDisplay, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT);
+ mEgl.eglDestroySurface(mEglDisplay, mEglSurface);
+ mEgl.eglDestroyContext(mEglDisplay, mEglContext);
+ mEgl.eglTerminate(mEglDisplay);
+ return false;
+ }
final int program = buildProgram(sSimpleVS, sSimpleFS);
final int attribPosition = glGetAttribLocation(program, "position");