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
diff --git a/services/surfaceflinger/MessageQueue.cpp b/services/surfaceflinger/MessageQueue.cpp
index 290fff4..1ff3567 100644
--- a/services/surfaceflinger/MessageQueue.cpp
+++ b/services/surfaceflinger/MessageQueue.cpp
@@ -133,8 +133,7 @@
 }
 
 void MessageQueue::invalidate() {
-//    mHandler->signalInvalidate();
-    mEvents->requestNextVsync();
+    mHandler->signalInvalidate();
 }
 
 void MessageQueue::refresh() {
diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp
index ce6c4a0..c68f5c1 100644
--- a/services/surfaceflinger/SurfaceFlinger.cpp
+++ b/services/surfaceflinger/SurfaceFlinger.cpp
@@ -407,8 +407,7 @@
 {
     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 @@
             // 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();