summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/SystemUI/src/com/android/systemui/ImageWallpaper.java44
1 files changed, 26 insertions, 18 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/ImageWallpaper.java b/packages/SystemUI/src/com/android/systemui/ImageWallpaper.java
index a874c6d12fc8..356689f27b53 100644
--- a/packages/SystemUI/src/com/android/systemui/ImageWallpaper.java
+++ b/packages/SystemUI/src/com/android/systemui/ImageWallpaper.java
@@ -156,7 +156,7 @@ public class ImageWallpaper extends WallpaperService {
mBackgroundWidth = mBackgroundHeight = -1;
mBackground = null;
mRedrawNeeded = true;
- drawFrameLocked();
+ drawFrameLocked(false);
}
}
}
@@ -234,7 +234,7 @@ public class ImageWallpaper extends WallpaperService {
Log.d(TAG, "Visibility changed to visible=" + visible);
}
mVisible = visible;
- drawFrameLocked();
+ drawFrameLocked(false);
}
}
}
@@ -263,7 +263,7 @@ public class ImageWallpaper extends WallpaperService {
mYOffset = yOffset;
mOffsetsChanged = true;
}
- drawFrameLocked();
+ drawFrameLocked(false);
}
}
@@ -277,7 +277,8 @@ public class ImageWallpaper extends WallpaperService {
synchronized (mLock) {
mRedrawNeeded = true;
- drawFrameLocked();
+ mBackgroundWidth = mBackgroundHeight = -1;
+ drawFrameLocked(true);
}
}
@@ -290,25 +291,26 @@ public class ImageWallpaper extends WallpaperService {
synchronized (mLock) {
mRedrawNeeded = true;
- drawFrameLocked();
+ drawFrameLocked(false);
}
}
- void drawFrameLocked() {
- if (!mVisible) {
- if (DEBUG) {
- Log.d(TAG, "Suppressed drawFrame since wallpaper is not visible.");
+ void drawFrameLocked(boolean force) {
+ if (!force) {
+ if (!mVisible) {
+ if (DEBUG) {
+ Log.d(TAG, "Suppressed drawFrame since wallpaper is not visible.");
+ }
+ return;
}
- return;
- }
- if (!mRedrawNeeded && !mOffsetsChanged) {
- if (DEBUG) {
- Log.d(TAG, "Suppressed drawFrame since redraw is not needed "
- + "and offsets have not changed.");
+ if (!mRedrawNeeded && !mOffsetsChanged) {
+ if (DEBUG) {
+ Log.d(TAG, "Suppressed drawFrame since redraw is not needed "
+ + "and offsets have not changed.");
+ }
+ return;
}
- return;
}
-
// If we don't yet know the size of the wallpaper bitmap,
// we need to get it now.
boolean updateWallpaper = mBackgroundWidth < 0 || mBackgroundHeight < 0 ;
@@ -332,7 +334,8 @@ public class ImageWallpaper extends WallpaperService {
int yPixels = availh < 0 ? (int)(availh * mYOffset + .5f) : (availh / 2);
mOffsetsChanged = false;
- if (!mRedrawNeeded && xPixels == mLastXTranslation && yPixels == mLastYTranslation) {
+ if (!force && !mRedrawNeeded
+ && xPixels == mLastXTranslation && yPixels == mLastYTranslation) {
if (DEBUG) {
Log.d(TAG, "Suppressed drawFrame since the image has not "
+ "actually moved an integral number of pixels.");
@@ -343,6 +346,11 @@ public class ImageWallpaper extends WallpaperService {
mLastXTranslation = xPixels;
mLastYTranslation = yPixels;
+ if (DEBUG) {
+ Log.d(TAG, "drawFrameUnlocked(" + force + "): mBackgroundWxH=" + mBackgroundWidth + "x"
+ + mBackgroundHeight + " SurfaceFrame=" + frame.toShortString()
+ + " X,YOffset=" + mXOffset + "," + mYOffset);
+ }
if (mIsHwAccelerated) {
if (!drawWallpaperWithOpenGL(sh, availw, availh, xPixels, yPixels)) {
drawWallpaperWithCanvas(sh, availw, availh, xPixels, yPixels);