summaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
authorRomain Guy <romainguy@android.com>2009-08-11 14:42:19 -0700
committerRomain Guy <romainguy@android.com>2009-08-11 14:42:19 -0700
commitb4f59bffc03575739776d91c5a61b09451042f8a (patch)
tree4b12b6964f8411948efe86e12008a3cc1d2eac10 /core
parent2b7d44ed8454b7c8093f535fef518e5496db629f (diff)
downloadframeworks_base-b4f59bffc03575739776d91c5a61b09451042f8a.zip
frameworks_base-b4f59bffc03575739776d91c5a61b09451042f8a.tar.gz
frameworks_base-b4f59bffc03575739776d91c5a61b09451042f8a.tar.bz2
Fix possible exception in default live wallpaper
Diffstat (limited to 'core')
-rw-r--r--core/java/com/android/internal/service/wallpaper/ImageWallpaper.java50
1 files changed, 27 insertions, 23 deletions
diff --git a/core/java/com/android/internal/service/wallpaper/ImageWallpaper.java b/core/java/com/android/internal/service/wallpaper/ImageWallpaper.java
index 7aa4f47..b9b07a8 100644
--- a/core/java/com/android/internal/service/wallpaper/ImageWallpaper.java
+++ b/core/java/com/android/internal/service/wallpaper/ImageWallpaper.java
@@ -99,32 +99,36 @@ public class ImageWallpaper extends WallpaperService {
void drawFrame(boolean drawText) {
SurfaceHolder sh = getSurfaceHolder();
- Canvas c = sh.lockCanvas();
- if (c != null) {
- final Rect frame = sh.getSurfaceFrame();
- mBackground.setBounds(frame);
- mBackground.draw(c);
-
- if (drawText) {
- // Figure out animation.
- long now = SystemClock.uptimeMillis();
- while (mAnimStartTime < (now-1000)) {
- mAnimStartTime += 1000;
- mAnimLarger = !mAnimLarger;
+ Canvas c = null;
+ try {
+ c = sh.lockCanvas();
+ if (c != null) {
+ final Rect frame = sh.getSurfaceFrame();
+ mBackground.setBounds(frame);
+ mBackground.draw(c);
+
+ if (drawText) {
+ // Figure out animation.
+ long now = SystemClock.uptimeMillis();
+ while (mAnimStartTime < (now-1000)) {
+ mAnimStartTime += 1000;
+ mAnimLarger = !mAnimLarger;
+ }
+ float size = (now-mAnimStartTime) / (float)1000;
+ if (!mAnimLarger) size = 1-size;
+ int alpha = (int)(255*(size*size));
+ mTextPaint.setARGB(alpha, 255, 255, 255);
+ mTextPaint.setShadowLayer(5*mDensity, 3*mDensity, 3*mDensity,
+ alpha<<24);
+ mTextPaint.setTextSize(100 * mDensity * size);
+ c.drawText("Am I live?",
+ frame.left + (frame.right-frame.left)/2,
+ frame.top + (frame.bottom-frame.top)/2, mTextPaint);
}
- float size = (now-mAnimStartTime) / (float)1000;
- if (!mAnimLarger) size = 1-size;
- int alpha = (int)(255*(size*size));
- mTextPaint.setARGB(alpha, 255, 255, 255);
- mTextPaint.setShadowLayer(5*mDensity, 3*mDensity, 3*mDensity,
- alpha<<24);
- mTextPaint.setTextSize(100 * mDensity * size);
- c.drawText("Am I live?",
- frame.left + (frame.right-frame.left)/2,
- frame.top + (frame.bottom-frame.top)/2, mTextPaint);
}
+ } finally {
+ if (c != null) sh.unlockCanvasAndPost(c);
}
- sh.unlockCanvasAndPost(c);
}
}