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() { void MessageQueue::invalidate() {
// mHandler->signalInvalidate(); mHandler->signalInvalidate();
mEvents->requestNextVsync();
} }
void MessageQueue::refresh() { void MessageQueue::refresh() {

View File

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