surfaceflinger: add getDisplayStats() method
This is used by media service to schedule video frames at the
proper time, based on precise vsync timings.
Bug: 14659809
Change-Id: I1a90603f3dc09dca9aa4f90a3aa845fab56e0a5e
diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp
index 043b075..12f22a7 100644
--- a/services/surfaceflinger/SurfaceFlinger.cpp
+++ b/services/surfaceflinger/SurfaceFlinger.cpp
@@ -35,6 +35,7 @@
#include <binder/PermissionCache.h>
#include <ui/DisplayInfo.h>
+#include <ui/DisplayStatInfo.h>
#include <gui/BitTube.h>
#include <gui/BufferQueue.h>
@@ -603,6 +604,19 @@
return NO_ERROR;
}
+status_t SurfaceFlinger::getDisplayStats(const sp<IBinder>& display,
+ DisplayStatInfo* stats) {
+ if (stats == NULL) {
+ return BAD_VALUE;
+ }
+
+ // FIXME for now we always return stats for the primary display
+ memset(stats, 0, sizeof(*stats));
+ stats->vsyncTime = mPrimaryDispSync.computeNextRefresh(0);
+ stats->vsyncPeriod = mPrimaryDispSync.getPeriod();
+ return NO_ERROR;
+}
+
int SurfaceFlinger::getActiveConfig(const sp<IBinder>& display) {
return getDisplayDevice(display)->getActiveConfig();
}