diff options
author | Dan Stoza <stoza@google.com> | 2014-12-02 16:58:17 -0800 |
---|---|---|
committer | Dan Stoza <stoza@google.com> | 2014-12-02 16:58:17 -0800 |
commit | 5878444fb8da043021f30d3de739531f15390df5 (patch) | |
tree | 30e9dde7b125270c4d06f1239ba4b39f7bd53cb6 | |
parent | b947f29a6af1622cda16d0b7112595082750dd07 (diff) | |
download | native-5878444fb8da043021f30d3de739531f15390df5.tar.gz |
SurfaceFlinger: Listen to HWC invalidate
"Do less work when using PTS" broke the invalidate path up from HWC
to SurfaceFlinger. When HWC would signal an invalidate, SurfaceFinger
would wake up, see no new buffers, and go back to sleep. This is fine,
except when the invalidate is a result of an HDMI hotplug, in which
case the screen remains blank. This change makes that functionality
work again.
Bug: 18564815
Bug: 18558468
Change-Id: I2e2171d86839945f4e4e6555d66f7e2895bd096a
-rw-r--r-- | services/surfaceflinger/SurfaceFlinger.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp index b8b6472663..80d3cc2c32 100644 --- a/services/surfaceflinger/SurfaceFlinger.cpp +++ b/services/surfaceflinger/SurfaceFlinger.cpp @@ -836,9 +836,11 @@ void SurfaceFlinger::onMessageReceived(int32_t what) { case MessageQueue::INVALIDATE: { bool refreshNeeded = handleMessageTransaction(); refreshNeeded |= handleMessageInvalidate(); + refreshNeeded |= mRepaintEverything; if (refreshNeeded) { - // Signal a refresh if a transaction modified the window state or if - // a new buffer was latched + // Signal a refresh if a transaction modified the window state, + // a new buffer was latched, or if HWC has requested a full + // repaint signalRefresh(); } break; |