don't actuate vsync hint when not needed

Change-Id: I61c43dd76041816ab8cbe9aeaa55c11c1479ed03
diff --git a/services/surfaceflinger/DisplayHardware/PowerHAL.cpp b/services/surfaceflinger/DisplayHardware/PowerHAL.cpp
index 0cb47d5..e41fbbc 100644
--- a/services/surfaceflinger/DisplayHardware/PowerHAL.cpp
+++ b/services/surfaceflinger/DisplayHardware/PowerHAL.cpp
@@ -25,7 +25,7 @@
 namespace android {
 // ---------------------------------------------------------------------------
 
-PowerHAL::PowerHAL() : mPowerModule(0) {
+PowerHAL::PowerHAL() : mPowerModule(0), mVSyncHintEnabled(false) {
     int err = hw_get_module(POWER_HARDWARE_MODULE_ID,
             (const hw_module_t **)&mPowerModule);
     ALOGW_IF(err, "%s module not found", POWER_HARDWARE_MODULE_ID);
@@ -44,7 +44,11 @@
     }
     if (mPowerModule->common.module_api_version >= POWER_MODULE_API_VERSION_0_2) {
         if (mPowerModule->powerHint) {
-            mPowerModule->powerHint(mPowerModule, POWER_HINT_VSYNC, (void*)enabled);
+            if (mVSyncHintEnabled != bool(enabled)) {
+                mPowerModule->powerHint(mPowerModule,
+                        POWER_HINT_VSYNC, (void*)enabled);
+                mVSyncHintEnabled = bool(enabled);
+            }
         }
     }
     return NO_ERROR;
diff --git a/services/surfaceflinger/DisplayHardware/PowerHAL.h b/services/surfaceflinger/DisplayHardware/PowerHAL.h
index 929bc03..ef67b8f 100644
--- a/services/surfaceflinger/DisplayHardware/PowerHAL.h
+++ b/services/surfaceflinger/DisplayHardware/PowerHAL.h
@@ -36,6 +36,7 @@
 
 private:
     power_module_t*   mPowerModule;
+    bool mVSyncHintEnabled;
 };
 
 // ---------------------------------------------------------------------------