diff options
author | 2012-02-05 01:49:16 -0800 | |
---|---|---|
committer | 2012-02-05 01:49:16 -0800 | |
commit | 303d538bb012e82c6b9a98c4930a03455000f761 (patch) | |
tree | 420ccba469392811932104ba6c77736744d7fe68 /services/surfaceflinger/SurfaceFlinger.cpp | |
parent | c95dbdc236acf002b5f8aed8c8a9e43047fc75b5 (diff) |
ui freeze workaround: reenable triple buffering mode
we're seeing UI freezes when window updates and
composition are separated. for now we workaround this
by always doing a composition after window updates on
vsync. triple buffering is reenabled for performance.
Change-Id: I693d705000b7452489bb0b4918fbeadb9879315c
Diffstat (limited to 'services/surfaceflinger/SurfaceFlinger.cpp')
-rw-r--r-- | services/surfaceflinger/SurfaceFlinger.cpp | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp index b30adafb17..88666ea04f 100644 --- a/services/surfaceflinger/SurfaceFlinger.cpp +++ b/services/surfaceflinger/SurfaceFlinger.cpp @@ -403,7 +403,8 @@ bool SurfaceFlinger::threadLoop() void SurfaceFlinger::onMessageReceived(int32_t what) { switch (what) { - case MessageQueue::INVALIDATE: { + case MessageQueue::REFRESH: { +// case MessageQueue::INVALIDATE: { // check for transactions if (CC_UNLIKELY(mConsoleSignals)) { handleConsoleEvents(); @@ -419,19 +420,25 @@ void SurfaceFlinger::onMessageReceived(int32_t what) // post surfaces (if needed) handlePageFlip(); - signalRefresh(); - } break; +// signalRefresh(); +// +// } break; +// +// case MessageQueue::REFRESH: { - case MessageQueue::REFRESH: { - // 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()) { +// return; +// } + if (CC_UNLIKELY(mHwWorkListDirty)) { // build the h/w work list handleWorkList(); } + if (CC_LIKELY(hw.canDraw())) { // repaint the framebuffer (if needed) handleRepaint(); |