summaryrefslogtreecommitdiffstats
path: root/services/surfaceflinger
diff options
context:
space:
mode:
authorMathias Agopian <mathias@google.com>2012-02-03 17:22:09 -0800
committerMathias Agopian <mathias@google.com>2012-02-03 17:22:09 -0800
commitaf87216387360a91c186e0c49869ab24326cc10d (patch)
tree1172fdd6d19820e2f697ae4dbc711f85af81b6f7 /services/surfaceflinger
parent33c84496a6b0a4a1eb9a75b115d97a5e927eec8d (diff)
downloadframeworks_base-af87216387360a91c186e0c49869ab24326cc10d.zip
frameworks_base-af87216387360a91c186e0c49869ab24326cc10d.tar.gz
frameworks_base-af87216387360a91c186e0c49869ab24326cc10d.tar.bz2
attempt to fix an ANR in various apps
recent changes in SF introduced a hang where some windows would stop being refreshed. This is an attemp to fix that. Change-Id: I6aa32ac0d6f1c0a6aea8f6195825dc4f4e6f93f9
Diffstat (limited to 'services/surfaceflinger')
-rw-r--r--services/surfaceflinger/SurfaceFlinger.cpp12
1 files changed, 7 insertions, 5 deletions
diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp
index 870235b..ee37efb 100644
--- a/services/surfaceflinger/SurfaceFlinger.cpp
+++ b/services/surfaceflinger/SurfaceFlinger.cpp
@@ -425,12 +425,12 @@ void SurfaceFlinger::onMessageReceived(int32_t what)
} break;
case MessageQueue::REFRESH: {
- if (!mDirtyRegion.isEmpty()) {
- // NOTE: it is mandatory to call hw.compositionComplete()
- // after handleRefresh()
- handleRefresh();
+ // NOTE: it is mandatory to call hw.compositionComplete()
+ // after handleRefresh()
+ const DisplayHardware& hw(graphicPlane(0).displayHardware());
+ handleRefresh();
- const DisplayHardware& hw(graphicPlane(0).displayHardware());
+ if (!mDirtyRegion.isEmpty()) {
if (CC_UNLIKELY(mHwWorkListDirty)) {
// build the h/w work list
handleWorkList();
@@ -445,6 +445,8 @@ void SurfaceFlinger::onMessageReceived(int32_t what)
// pretend we did the post
hw.compositionComplete();
}
+ } else {
+ hw.compositionComplete();
}
} break;
}