diff options
-rw-r--r-- | core/java/com/android/internal/service/wallpaper/ImageWallpaper.java | 49 |
1 files changed, 26 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 d49902e..78688ee 100644 --- a/core/java/com/android/internal/service/wallpaper/ImageWallpaper.java +++ b/core/java/com/android/internal/service/wallpaper/ImageWallpaper.java @@ -187,33 +187,36 @@ public class ImageWallpaper extends WallpaperService { } SurfaceHolder sh = getSurfaceHolder(); + final Rect frame = sh.getSurfaceFrame(); + final Drawable background = mBackground; + final int dw = frame.width(); + final int dh = frame.height(); + final int bw = background != null ? background.getIntrinsicWidth() : 0; + final int bh = background != null ? background.getIntrinsicHeight() : 0; + final int availw = dw - bw; + final int availh = dh - bh; + int xPixels = availw < 0 ? (int)(availw * mXOffset + .5f) : (availw / 2); + int yPixels = availh < 0 ? (int)(availh * mYOffset + .5f) : (availh / 2); + + mOffsetsChanged = false; + if (!mRedrawNeeded + && xPixels == mLastXTranslation && yPixels == mLastYTranslation) { + if (DEBUG) { + Log.d(TAG, "Suppressed drawFrame since the image has not " + + "actually moved an integral number of pixels."); + } + return; + } + mRedrawNeeded = false; + mLastXTranslation = xPixels; + mLastYTranslation = yPixels; + Canvas c = sh.lockCanvas(); if (c != null) { try { - final Rect frame = sh.getSurfaceFrame(); - final Drawable background = mBackground; - final int dw = frame.width(); - final int dh = frame.height(); - final int bw = background != null ? background.getIntrinsicWidth() : 0; - final int bh = background != null ? background.getIntrinsicHeight() : 0; - final int availw = dw-bw; - final int availh = dh-bh; - int xPixels = availw < 0 ? (int)(availw*mXOffset+.5f) : (availw/2); - int yPixels = availh < 0 ? (int)(availh*mYOffset+.5f) : (availh/2); - - mOffsetsChanged = false; - if (!mRedrawNeeded) { - if (xPixels == mLastXTranslation && yPixels == mLastYTranslation) { - if (DEBUG) { - Log.d(TAG, "Suppressed drawFrame since the image has not " - + "actually moved an integral number of pixels."); - } - return; - } + if (DEBUG) { + Log.d(TAG, "Redrawing: xPixels=" + xPixels + ", yPixels=" + yPixels); } - mRedrawNeeded = false; - mLastXTranslation = xPixels; - mLastYTranslation = yPixels; c.translate(xPixels, yPixels); if (availw < 0 || availh < 0) { |