diff options
| author | 2010-10-10 18:41:58 -0700 | |
|---|---|---|
| committer | 2010-10-10 18:41:58 -0700 | |
| commit | 2aaa1ce1768d3425c07e55d43aaa400282424f8c (patch) | |
| tree | 7f8b57d4a45bf16155a9b6afc83ed472355592b0 | |
| parent | 0e430ccc2c8a4bb9d96002676d7742652bd28477 (diff) | |
| parent | cd4e4279804288a941c308b88df8bafa4f3f7458 (diff) | |
Merge "Hold partial wakelock during shutdown to avoid entering sleep"
| -rw-r--r-- | core/java/com/android/internal/app/ShutdownThread.java | 31 |
1 files changed, 24 insertions, 7 deletions
diff --git a/core/java/com/android/internal/app/ShutdownThread.java b/core/java/com/android/internal/app/ShutdownThread.java index e35edc3400b0..37d98beb41d7 100644 --- a/core/java/com/android/internal/app/ShutdownThread.java +++ b/core/java/com/android/internal/app/ShutdownThread.java @@ -67,7 +67,8 @@ public final class ShutdownThread extends Thread { private boolean mActionDone; private Context mContext; private PowerManager mPowerManager; - private PowerManager.WakeLock mWakeLock; + private PowerManager.WakeLock mCpuWakeLock; + private PowerManager.WakeLock mScreenWakeLock; private Handler mHandler; private ShutdownThread() { @@ -155,20 +156,36 @@ public final class ShutdownThread extends Thread { pd.show(); - // start the thread that initiates shutdown sInstance.mContext = context; sInstance.mPowerManager = (PowerManager)context.getSystemService(Context.POWER_SERVICE); - sInstance.mWakeLock = null; + + // make sure we never fall asleep again + sInstance.mCpuWakeLock = null; + try { + sInstance.mCpuWakeLock = sInstance.mPowerManager.newWakeLock( + PowerManager.PARTIAL_WAKE_LOCK, TAG + "-cpu"); + sInstance.mCpuWakeLock.setReferenceCounted(false); + sInstance.mCpuWakeLock.acquire(); + } catch (SecurityException e) { + Log.w(TAG, "No permission to acquire wake lock", e); + sInstance.mCpuWakeLock = null; + } + + // also make sure the screen stays on for better user experience + sInstance.mScreenWakeLock = null; if (sInstance.mPowerManager.isScreenOn()) { try { - sInstance.mWakeLock = sInstance.mPowerManager.newWakeLock( - PowerManager.FULL_WAKE_LOCK, "Shutdown"); - sInstance.mWakeLock.acquire(); + sInstance.mScreenWakeLock = sInstance.mPowerManager.newWakeLock( + PowerManager.FULL_WAKE_LOCK, TAG + "-screen"); + sInstance.mScreenWakeLock.setReferenceCounted(false); + sInstance.mScreenWakeLock.acquire(); } catch (SecurityException e) { Log.w(TAG, "No permission to acquire wake lock", e); - sInstance.mWakeLock = null; + sInstance.mScreenWakeLock = null; } } + + // start the thread that initiates shutdown sInstance.mHandler = new Handler() { }; sInstance.start(); |