From a3bff94e184590351fd95f630e8b8313d1d2053b Mon Sep 17 00:00:00 2001 From: Ahan Wu Date: Wed, 3 Jun 2020 04:21:45 +0800 Subject: [PATCH] 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 --- .../src/com/android/systemui/ImageWallpaper.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/packages/SystemUI/src/com/android/systemui/ImageWallpaper.java b/packages/SystemUI/src/com/android/systemui/ImageWallpaper.java index 9a4179f4fef50..5a3601314fd08 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");