OSDN Git Service

DispSync: Don't resync if HW vsync is unavailable
authorDan Stoza <stoza@google.com>
Tue, 19 Apr 2016 18:56:20 +0000 (11:56 -0700)
committerThe Android Automerger <android-build@google.com>
Wed, 20 Apr 2016 00:07:40 +0000 (17:07 -0700)
Don't attempt to resync to hardware vsync if it's not available (if
the display is blanked), which should prevent unusual sequences of
commands (enable vsync, then unblank) to hardware composer.

Bug: 28177844
Change-Id: I9d6046fb0a346830e98829fd250642f0809d7e31

services/surfaceflinger/SurfaceFlinger.cpp
services/surfaceflinger/SurfaceFlinger_hwc1.cpp

index c09920c..a69b11b 100644 (file)
@@ -800,7 +800,8 @@ void SurfaceFlinger::resyncToHardwareVsync(bool makeAvailable) {
     if (makeAvailable) {
         mHWVsyncAvailable = true;
     } else if (!mHWVsyncAvailable) {
-        ALOGE("resyncToHardwareVsync called when HW vsync unavailable");
+        // Hardware vsync is not currently available, so abort the resync
+        // attempt for now
         return;
     }
 
@@ -834,7 +835,7 @@ void SurfaceFlinger::disableHardwareVsync(bool makeUnavailable) {
 void SurfaceFlinger::resyncWithRateLimit() {
     static constexpr nsecs_t kIgnoreDelay = ms2ns(500);
     if (systemTime() - mLastSwapTime > kIgnoreDelay) {
-        resyncToHardwareVsync(true);
+        resyncToHardwareVsync(false);
     }
 }
 
index b011598..00700ab 100644 (file)
@@ -820,7 +820,8 @@ void SurfaceFlinger::resyncToHardwareVsync(bool makeAvailable) {
     if (makeAvailable) {
         mHWVsyncAvailable = true;
     } else if (!mHWVsyncAvailable) {
-        ALOGE("resyncToHardwareVsync called when HW vsync unavailable");
+        // Hardware vsync is not currently available, so abort the resync
+        // attempt for now
         return;
     }
 
@@ -854,7 +855,7 @@ void SurfaceFlinger::disableHardwareVsync(bool makeUnavailable) {
 void SurfaceFlinger::resyncWithRateLimit() {
     static constexpr nsecs_t kIgnoreDelay = ms2ns(500);
     if (systemTime() - mLastSwapTime > kIgnoreDelay) {
-        resyncToHardwareVsync(true);
+        resyncToHardwareVsync(false);
     }
 }