summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Ahan Wu <ahanwu@google.com> 2020-06-03 04:21:45 +0800
committer Wu Ahan <ahanwu@google.com> 2020-06-03 15:18:52 +0000
commita3bff94e184590351fd95f630e8b8313d1d2053b (patch)
treee9ed14641c06aeabf11ce251ddadb33d65b0977a
parent6255311d39f0b6f7de19b4fa46a6daa0f3690789 (diff)
DO NOT MERGE Prevent ImageWallpaper from keeping crashing
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
-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");