handle surfaces posts independently from composition

surfaceflinger will now handle each surface post
as soon as possible and handle the composition
itself at VSYNC time as usual.

Change-Id: I6b1ae33fd56062d86e5419ebab8def0ca5803fbf
This commit is contained in:
Mathias Agopian 2012-03-24 17:47:24 -07:00
parent ea0c6c9396
commit 562f4b2c1e
2 changed files with 7 additions and 13 deletions

View File

@ -133,8 +133,7 @@ status_t MessageQueue::postMessage(
}
void MessageQueue::invalidate() {
// mHandler->signalInvalidate();
mEvents->requestNextVsync();
mHandler->signalInvalidate();
}
void MessageQueue::refresh() {

View File

@ -407,8 +407,7 @@ void SurfaceFlinger::onMessageReceived(int32_t what)
{
ATRACE_CALL();
switch (what) {
case MessageQueue::REFRESH: {
// case MessageQueue::INVALIDATE: {
case MessageQueue::INVALIDATE: {
// if we're in a global transaction, don't do anything.
const uint32_t mask = eTransactionNeeded | eTraversalNeeded;
uint32_t transactionFlags = peekTransactionFlags(mask);
@ -419,20 +418,16 @@ void SurfaceFlinger::onMessageReceived(int32_t what)
// post surfaces (if needed)
handlePageFlip();
// signalRefresh();
//
// } break;
//
// case MessageQueue::REFRESH: {
signalRefresh();
} break;
case MessageQueue::REFRESH: {
handleRefresh();
const DisplayHardware& hw(graphicPlane(0).displayHardware());
// if (mDirtyRegion.isEmpty()) {
// return;
// }
if (CC_UNLIKELY(mHwWorkListDirty)) {
// build the h/w work list
handleWorkList();