[Title] fix resume operation after suspend state.
authorSon Hyunjun <hj79.son@samsung.com>
Fri, 23 Mar 2012 07:33:58 +0000 (16:33 +0900)
committerSon Hyunjun <hj79.son@samsung.com>
Fri, 23 Mar 2012 07:33:58 +0000 (16:33 +0900)
[Type] Bugfix
[Module]
[Priority] Major
[CQ#]
[Redmine#]
[Problem]
[Cause]
[Solution]

Change-Id: I0d55b64a8e14c0d66091a098eb17f207c1b98308

tizen/src/maru_sdl.c
tizen/src/skin/maruskin_operation.c

index e250ec8545a3b84dc3e5517cbd17f7c9538e546e..9703c823fd276af764407587ff20ed1e73d4010b 100644 (file)
@@ -188,17 +188,7 @@ static void put_hardkey_code( SDL_UserEvent event ) {
     if ( KEY_PRESSED == event_type ) {
 
         if ( kbd_mouse_is_absolute() ) {
-
-            // home key or power key is used for resume.
-            if ( ( HARD_KEY_HOME == keycode ) || ( HARD_KEY_POWER == keycode ) ) {
-                if ( is_suspended_state() ) {
-                    INFO( "user requests system resume.\n" );
-                    resume();
-                }
-            }
-
             ps2kbd_put_keycode( keycode & 0x7f );
-
         }
 
     } else if ( KEY_RELEASED == event_type ) {
index 19d70ffe4b7e7528b02643c5fc839b877d230a38..93d01585c8c28fcff58552fb346bf522d3f454da 100644 (file)
@@ -43,7 +43,8 @@
 
 MULTI_DEBUG_CHANNEL(qemu, skin_operation);
 
-#define CLOSE_POWER_KEY_INTERVAL 1.2 // seconds
+#define RESUME_KEY_SEND_INTERVAL 500 // milli-seconds
+#define CLOSE_POWER_KEY_INTERVAL 1200 // milli-seconds
 
 void start_display( int handle_id, int lcd_size_width, int lcd_size_height, double scale_factor, short rotation_type )
 {
@@ -113,6 +114,23 @@ void do_hardkey_event( int event_type, int keycode )
 {
     TRACE( "do_hardkey_event event_type:%d, keycode:%d\n", event_type, keycode );
 
+    if ( KEY_PRESSED == event_type ) {
+        if ( kbd_mouse_is_absolute() ) {
+            // home key or power key is used for resume.
+            if ( ( HARD_KEY_HOME == keycode ) || ( HARD_KEY_POWER == keycode ) ) {
+                if ( is_suspended_state() ) {
+                    INFO( "user requests system resume.\n" );
+                    resume();
+#ifdef _WIN32
+                    Sleep( RESUME_KEY_SEND_INTERVAL );
+#else
+                    usleep( RESUME_KEY_SEND_INTERVAL * 1000 );
+#endif
+                }
+            }
+        }
+    }
+
     SDL_Event event;
     memset( &event, 0, sizeof(SDL_Event) );
 
@@ -217,9 +235,9 @@ void request_close( void )
     do_hardkey_event( KEY_PRESSED, HARD_KEY_POWER );
 
 #ifdef _WIN32
-        Sleep( CLOSE_POWER_KEY_INTERVAL * 1000 ); // 1.6 seconds
+        Sleep( CLOSE_POWER_KEY_INTERVAL );
 #else
-        usleep( CLOSE_POWER_KEY_INTERVAL * 1000 * 1000 ); // 1.6 seconds
+        usleep( CLOSE_POWER_KEY_INTERVAL * 1000 );
 #endif
 
     do_hardkey_event( KEY_RELEASED, HARD_KEY_POWER );