diff options
author | 2012-02-05 01:49:16 -0800 | |
---|---|---|
committer | 2012-02-05 01:49:16 -0800 | |
commit | cf7f0c7328a02b68259c791752944113a1796b6c (patch) | |
tree | d0f6ebf315598ea30f6ecdb1963fa164e0d8af68 /services/surfaceflinger/SurfaceFlinger.cpp | |
parent | 077f29f8aeca3e79005abef0ee3642b8cb21da79 (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 b30adafb1774..88666ea04f6c 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(); |