Added vsync debugging information in dumpsys log

Change-Id: I20ef05a73d89caaf6a70dc9ca25ada6e6a1f6ff9
diff --git a/services/surfaceflinger/EventThread.cpp b/services/surfaceflinger/EventThread.cpp
index cc44186..5813eefb 100644
--- a/services/surfaceflinger/EventThread.cpp
+++ b/services/surfaceflinger/EventThread.cpp
@@ -41,7 +41,8 @@
       mHw(flinger->graphicPlane(0).editDisplayHardware()),
       mLastVSyncTimestamp(0),
       mVSyncTimestamp(0),
-      mDeliveredEvents(0)
+      mDeliveredEvents(0),
+      mDebugVsyncEnabled(false)
 {
 }
 
@@ -144,8 +145,7 @@
                 if (!waitForNextVsync) {
                     // we received a VSYNC but we have no clients
                     // don't report it, and disable VSYNC events
-                    mHw.getHwComposer().eventControl(
-                            HWComposer::EVENT_VSYNC, false);
+                    disableVSync();
                 } else {
                     // report VSYNC event
                     break;
@@ -157,8 +157,7 @@
                 // disable VSYNC events then.
                 if (waitForNextVsync) {
                     // enable
-                    mHw.getHwComposer().eventControl(
-                            HWComposer::EVENT_VSYNC, true);
+                    enableVSync();
                 }
             }
 
@@ -234,6 +233,16 @@
     return true;
 }
 
+void EventThread::enableVSync() {
+    mHw.getHwComposer().eventControl(HWComposer::EVENT_VSYNC, true);
+    mDebugVsyncEnabled = true;
+}
+
+void EventThread::disableVSync() {
+    mHw.getHwComposer().eventControl(HWComposer::EVENT_VSYNC, false);
+    mDebugVsyncEnabled = false;
+}
+
 status_t EventThread::readyToRun() {
     ALOGI("EventThread ready to run.");
     return NO_ERROR;
@@ -241,10 +250,16 @@
 
 void EventThread::dump(String8& result, char* buffer, size_t SIZE) const {
     Mutex::Autolock _l(mLock);
-    result.append("VSYNC state:\n");
-    snprintf(buffer, SIZE, "  numListeners=%u, events-delivered: %u\n",
+    result.appendFormat("VSYNC state: %s\n",
+            mDebugVsyncEnabled?"enabled":"disabled");
+    result.appendFormat("  numListeners=%u,\n  events-delivered: %u\n",
             mDisplayEventConnections.size(), mDeliveredEvents);
-    result.append(buffer);
+    for (size_t i=0 ; i<mDisplayEventConnections.size() ; i++) {
+        sp<Connection> connection =
+                mDisplayEventConnections.itemAt(i).promote();
+        result.appendFormat("    %p: count=%d\n",
+                connection.get(), connection!=NULL ? connection->count : 0);
+    }
 }
 
 // ---------------------------------------------------------------------------