summaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
authorFilip Gruszczynski <gruszczy@google.com>2015-04-17 00:59:39 +0000
committerAndroid Git Automerger <android-git-automerger@android.com>2015-04-17 00:59:39 +0000
commit47e743b9e276d89ded2b9c50af61db2ce5529706 (patch)
treef5c1bb1bc3ea74dce8fd45756fa2fb2dbca10e16 /core
parenta9d740003fe2ca0a809918e14b4c72d66c6dfc44 (diff)
parent4544b927d7f3575bf609490b42d521a12bf95a07 (diff)
downloadframeworks_base-47e743b9e276d89ded2b9c50af61db2ce5529706.zip
frameworks_base-47e743b9e276d89ded2b9c50af61db2ce5529706.tar.gz
frameworks_base-47e743b9e276d89ded2b9c50af61db2ce5529706.tar.bz2
am 4544b927: Hold a wake lock while dozing when wallpaper draws.
* commit '4544b927d7f3575bf609490b42d521a12bf95a07': Hold a wake lock while dozing when wallpaper draws.
Diffstat (limited to 'core')
-rw-r--r--core/java/android/service/wallpaper/WallpaperService.java23
1 files changed, 20 insertions, 3 deletions
diff --git a/core/java/android/service/wallpaper/WallpaperService.java b/core/java/android/service/wallpaper/WallpaperService.java
index 1674950..016541f 100644
--- a/core/java/android/service/wallpaper/WallpaperService.java
+++ b/core/java/android/service/wallpaper/WallpaperService.java
@@ -17,6 +17,7 @@
package android.service.wallpaper;
import android.content.res.TypedArray;
+import android.graphics.Canvas;
import android.os.SystemProperties;
import android.view.WindowInsets;
@@ -185,6 +186,7 @@ public abstract class WallpaperService extends Service {
DisplayManager mDisplayManager;
Display mDisplay;
+ private int mDisplayState;
final BaseSurfaceHolder mSurfaceHolder = new BaseSurfaceHolder() {
{
@@ -228,7 +230,19 @@ public abstract class WallpaperService extends Service {
throw new UnsupportedOperationException(
"Wallpapers do not support keep screen on");
}
-
+
+ @Override
+ public Canvas lockCanvas() {
+ if (mDisplayState == Display.STATE_DOZE
+ || mDisplayState == Display.STATE_DOZE_SUSPEND) {
+ try {
+ mSession.pokeDrawLock(mWindow);
+ } catch (RemoteException e) {
+ // System server died, can be ignored.
+ }
+ }
+ return super.lockCanvas();
+ }
};
final class WallpaperInputEventReceiver extends InputEventReceiver {
@@ -831,9 +845,12 @@ public abstract class WallpaperService extends Service {
mWindow.setSession(mSession);
+ mLayout.packageName = getPackageName();
+
mDisplayManager = (DisplayManager)getSystemService(Context.DISPLAY_SERVICE);
mDisplayManager.registerDisplayListener(mDisplayListener, mCaller.getHandler());
mDisplay = mDisplayManager.getDisplay(Display.DEFAULT_DISPLAY);
+ mDisplayState = mDisplay.getState();
if (DEBUG) Log.v(TAG, "onCreate(): " + this);
onCreate(mSurfaceHolder);
@@ -873,8 +890,8 @@ public abstract class WallpaperService extends Service {
void reportVisibility() {
if (!mDestroyed) {
- boolean visible = mVisible
- & mDisplay != null && mDisplay.getState() != Display.STATE_OFF;
+ mDisplayState = mDisplay == null ? Display.STATE_UNKNOWN : mDisplay.getState();
+ boolean visible = mVisible && mDisplayState != Display.STATE_OFF;
if (mReportedVisible != visible) {
mReportedVisible = visible;
if (DEBUG) Log.v(TAG, "onVisibilityChanged(" + visible