summaryrefslogtreecommitdiffstats
path: root/core/java
diff options
context:
space:
mode:
authorJoe Onorato <joeo@google.com>2010-11-09 12:27:07 -0800
committerAndroid (Google) Code Review <android-gerrit@google.com>2010-11-09 12:27:07 -0800
commitcee976bebc4ff6e9cdaa879eb911775118d6db01 (patch)
tree6951ec8f1c29e5809b559a79d1fad72d7d6eacbb /core/java
parent0ba75bb22c2992f649ee5f7605a2b45442ad4862 (diff)
parent30693374e8497c83b40592893160a95b428e0c22 (diff)
downloadframeworks_base-cee976bebc4ff6e9cdaa879eb911775118d6db01.zip
frameworks_base-cee976bebc4ff6e9cdaa879eb911775118d6db01.tar.gz
frameworks_base-cee976bebc4ff6e9cdaa879eb911775118d6db01.tar.bz2
Merge "If the image wallpaper fails to load, including via an OutOfMemoryError because of a big bitmap, reset to the default."
Diffstat (limited to 'core/java')
-rw-r--r--core/java/com/android/internal/service/wallpaper/ImageWallpaper.java20
1 files changed, 19 insertions, 1 deletions
diff --git a/core/java/com/android/internal/service/wallpaper/ImageWallpaper.java b/core/java/com/android/internal/service/wallpaper/ImageWallpaper.java
index e961116..d2e53b3 100644
--- a/core/java/com/android/internal/service/wallpaper/ImageWallpaper.java
+++ b/core/java/com/android/internal/service/wallpaper/ImageWallpaper.java
@@ -16,6 +16,8 @@
package com.android.internal.service.wallpaper;
+import java.io.IOException;
+
import com.android.internal.view.WindowManagerPolicyThread;
import android.app.WallpaperManager;
@@ -169,10 +171,26 @@ public class ImageWallpaper extends WallpaperService {
void updateWallpaper() {
synchronized (mLock) {
+ Throwable exception = null;
try {
mBackground = mWallpaperManager.getFastDrawable();
} catch (RuntimeException e) {
- Log.w("ImageWallpaper", "Unable to load wallpaper!", e);
+ exception = e;
+ } catch (OutOfMemoryError e) {
+ exception = e;
+ }
+ if (exception != null) {
+ mBackground = null;
+ // Note that if we do fail at this, and the default wallpaper can't
+ // be loaded, we will go into a cycle. Don't do a build where the
+ // default wallpaper can't be loaded.
+ Log.w("ImageWallpaper", "Unable to load wallpaper!", exception);
+ try {
+ mWallpaperManager.clear();
+ } catch (IOException ex) {
+ // now we're really screwed.
+ Log.w("ImageWallpaper", "Unable reset to default wallpaper!", ex);
+ }
}
}
}