resume from suspend

以下ののスレッドで、ボタンからのサスペンド復帰に成功したとのリポート。
http://groups.google.com/group/android-x86/browse_thread/thread/7b90d22458547de4?hl=en
現状は、サスペンドに落ちると、うまく上がってこれずに、再度サスペンドに落ちてしまう。
対処は2つ。kernelとPhoneWindowManager.java


kernelはこれ。
http://groups.google.com/group/android-porting/browse_thread/thread/f85e79e292e8ce55/945ce5ebe668fcd5

--- a/kernel/power/suspend.c 
+++ b/kernel/power/suspend.c 
@@ -248,6 +248,9 @@ int suspend_devices_and_enter(suspend_state_t state) 
   */ 
  static void suspend_finish(void) 
  { 
+#ifdef CONFIG_EARLYSUSPEND 
+       request_suspend_state(PM_SUSPEND_ON); 
+#endif 
         suspend_thaw_processes(); 
         usermodehelper_enable(); 
         pm_notifier_call_chain(PM_POST_SUSPEND); 


PhoneWindowManager.javaはこれ。

diff --git a/policy/src/com/android/internal/policy/impl/ 
PhoneWindowManager.java b/policy/src/com/android/internal/policy/impl/ 
PhoneWindowManager.java 
index ca3d864..d90ce5c 100755 
--- a/policy/src/com/android/internal/policy/impl/ 
PhoneWindowManager.java 
+++ b/policy/src/com/android/internal/policy/impl/ 
PhoneWindowManager.java 
@@ -2266,6 +2266,8 @@ public class PhoneWindowManager implements 
WindowManagerPolicy { 
             final boolean isWakeKey = (policyFlags 
                     & (WindowManagerPolicy.FLAG_WAKE | 
WindowManagerPolicy.FLAG_WAKE_DROPPED)) != 0; 
             if (down && isWakeKey) { 
+           mKeyguardMediator.pokeWakelock(30000); 
+           mPowerManager.userActivity(SystemClock.uptimeMillis(), false, LocalPowerManager.BUTTON_EVENT); 
+           android.os.SystemProperties.set("sys.power.state", "waking"); 
                 if (keyguardActive) { 
                     // If the keyguard is showing, let it decide what 
to do with the wake key. 

あとで試そう。