[Power] Always fetch current display state
authorPrzemyslaw Ciezkowski <p.ciezkowski@samsung.com>
Mon, 18 May 2015 09:49:29 +0000 (11:49 +0200)
committerPrzemyslaw Ciezkowski <p.ciezkowski@samsung.com>
Mon, 18 May 2015 09:49:29 +0000 (11:49 +0200)
If screen was OFF, requested state was DIM and Release was called
sreen state change was called with state NORMAL.
The fix is to fetch current state always.

[Verification]
PowerManager_setScreenStateChangeListener now doesn't block
on mobile emulator.

Change-Id: I286ad5c2d231dec6af9d6fe2766485d2f4cb59f6
Signed-off-by: Przemyslaw Ciezkowski <p.ciezkowski@samsung.com>
src/power/power_manager.cc

index afcf8730ec8c526c8f5b167f1c97dd2f96d45c46..71e1d3de42ced1729179a600ec923afddd435985 100755 (executable)
@@ -235,14 +235,18 @@ PlatformResult PowerManager::Release(PowerResource resource) {
     display_state_e platform_state = DISPLAY_STATE_NORMAL;
     if(current_requested_state_ == POWER_STATE_SCREEN_DIM) {
       ret = PowerPlatformProxy::GetInstance().UnlockState();
-    } else {
-      ret = device_display_get_state(&platform_state);
+      if (DEVICE_ERROR_NONE != ret) {
+        LoggerE("Failed to UnlockState (%d)", ret);
+      }
     }
-    if (DEVICE_ERROR_NONE != ret)
+    ret = device_display_get_state(&platform_state);
+    if (DEVICE_ERROR_NONE != ret) {
       LoggerE("device_display_get_state failed (%d)", ret);
-
-    if (DISPLAY_STATE_NORMAL == platform_state)
-      BroadcastScreenState(POWER_STATE_SCREEN_NORMAL);
+    } else {
+      if (DISPLAY_STATE_NORMAL == platform_state) {
+        BroadcastScreenState(POWER_STATE_SCREEN_NORMAL);
+      }
+    }
 
     current_requested_state_ = POWER_STATE_NONE;
   } else if (POWER_RESOURCE_CPU == resource) {