diff options
| author | 2010-10-10 18:51:43 -0700 | |
|---|---|---|
| committer | 2010-10-10 18:51:43 -0700 | |
| commit | c43189e76964facad8bac6ee7a17ea1016bba4e3 (patch) | |
| tree | 466eb3d111d93b6f4a4f47f47f77e638113bc558 | |
| parent | 5bf55c801dfd67e8cf98278f3590d352f9e6d64f (diff) | |
| parent | 2aaa1ce1768d3425c07e55d43aaa400282424f8c (diff) | |
am 2aaa1ce1: Merge "Hold partial wakelock during shutdown to avoid entering sleep"
Merge commit '2aaa1ce1768d3425c07e55d43aaa400282424f8c' into gingerbread-plus-aosp
* commit '2aaa1ce1768d3425c07e55d43aaa400282424f8c':
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 e07c54f59c34..fed6785f15d2 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(); |