summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Stoza <stoza@google.com>2014-12-02 16:58:17 -0800
committerDan Stoza <stoza@google.com>2014-12-02 16:58:17 -0800
commit5878444fb8da043021f30d3de739531f15390df5 (patch)
tree30e9dde7b125270c4d06f1239ba4b39f7bd53cb6
parentb947f29a6af1622cda16d0b7112595082750dd07 (diff)
downloadnative-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.cpp6
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;