diff options
author | Mathias Agopian <mathias@google.com> | 2012-02-03 17:22:09 -0800 |
---|---|---|
committer | Mathias Agopian <mathias@google.com> | 2012-02-03 17:22:09 -0800 |
commit | af87216387360a91c186e0c49869ab24326cc10d (patch) | |
tree | 1172fdd6d19820e2f697ae4dbc711f85af81b6f7 /services/surfaceflinger | |
parent | 33c84496a6b0a4a1eb9a75b115d97a5e927eec8d (diff) | |
download | frameworks_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.cpp | 12 |
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; } |