diff options
author | Android (Google) Code Review <android-gerrit@google.com> | 2009-08-11 14:43:02 -0700 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2009-08-11 14:43:02 -0700 |
commit | c5ea43920919eeaec4ec0686de9fa3d034d82337 (patch) | |
tree | a025d086c3fc44d335c2fc73333e4cf468877bed | |
parent | b028f92e75e03811fe122093171c51ea88cbfe98 (diff) | |
parent | b4f59bffc03575739776d91c5a61b09451042f8a (diff) | |
download | frameworks_base-c5ea43920919eeaec4ec0686de9fa3d034d82337.zip frameworks_base-c5ea43920919eeaec4ec0686de9fa3d034d82337.tar.gz frameworks_base-c5ea43920919eeaec4ec0686de9fa3d034d82337.tar.bz2 |
Merge change 20812
* changes:
Fix possible exception in default live wallpaper
-rw-r--r-- | core/java/com/android/internal/service/wallpaper/ImageWallpaper.java | 50 |
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); } } |