diff options
Diffstat (limited to 'libs/gui')
| -rw-r--r-- | libs/gui/DisplayEventDispatcher.cpp | 1 | ||||
| -rw-r--r-- | libs/gui/include/gui/DisplayEventDispatcher.h | 3 | ||||
| -rw-r--r-- | libs/gui/include/gui/DisplayEventReceiver.h | 1 | ||||
| -rw-r--r-- | libs/gui/tests/DisplayEventStructLayout_test.cpp | 3 |
4 files changed, 7 insertions, 1 deletions
diff --git a/libs/gui/DisplayEventDispatcher.cpp b/libs/gui/DisplayEventDispatcher.cpp index 9cd3f631c8..e1b1efc0ed 100644 --- a/libs/gui/DisplayEventDispatcher.cpp +++ b/libs/gui/DisplayEventDispatcher.cpp @@ -152,6 +152,7 @@ bool DisplayEventDispatcher::processPendingEvents(nsecs_t* outTimestamp, *outCount = ev.vsync.count; outVsyncEventData->id = ev.vsync.vsyncId; outVsyncEventData->deadlineTimestamp = ev.vsync.deadlineTimestamp; + outVsyncEventData->frameInterval = ev.vsync.frameInterval; break; case DisplayEventReceiver::DISPLAY_EVENT_HOTPLUG: dispatchHotplug(ev.header.timestamp, ev.header.displayId, ev.hotplug.connected); diff --git a/libs/gui/include/gui/DisplayEventDispatcher.h b/libs/gui/include/gui/DisplayEventDispatcher.h index d74c2ba72b..4ade240dcf 100644 --- a/libs/gui/include/gui/DisplayEventDispatcher.h +++ b/libs/gui/include/gui/DisplayEventDispatcher.h @@ -30,6 +30,9 @@ struct VsyncEventData { // The deadline in CLOCK_MONOTONIC that the app needs to complete its // frame by (both on the CPU and the GPU) int64_t deadlineTimestamp = std::numeric_limits<int64_t>::max(); + + // The current frame interval in ns when this frame was scheduled. + int64_t frameInterval = 0; }; class DisplayEventDispatcher : public LooperCallback { diff --git a/libs/gui/include/gui/DisplayEventReceiver.h b/libs/gui/include/gui/DisplayEventReceiver.h index 7179a20d22..0dffbde88a 100644 --- a/libs/gui/include/gui/DisplayEventReceiver.h +++ b/libs/gui/include/gui/DisplayEventReceiver.h @@ -75,6 +75,7 @@ public: uint32_t count; nsecs_t expectedVSyncTimestamp __attribute__((aligned(8))); nsecs_t deadlineTimestamp __attribute__((aligned(8))); + nsecs_t frameInterval __attribute__((aligned(8))); int64_t vsyncId; }; diff --git a/libs/gui/tests/DisplayEventStructLayout_test.cpp b/libs/gui/tests/DisplayEventStructLayout_test.cpp index 7dbba31ba8..bcd39dbbf4 100644 --- a/libs/gui/tests/DisplayEventStructLayout_test.cpp +++ b/libs/gui/tests/DisplayEventStructLayout_test.cpp @@ -34,7 +34,8 @@ TEST(DisplayEventStructLayoutTest, TestEventAlignment) { CHECK_OFFSET(DisplayEventReceiver::Event::VSync, count, 0); CHECK_OFFSET(DisplayEventReceiver::Event::VSync, expectedVSyncTimestamp, 8); CHECK_OFFSET(DisplayEventReceiver::Event::VSync, deadlineTimestamp, 16); - CHECK_OFFSET(DisplayEventReceiver::Event::VSync, vsyncId, 24); + CHECK_OFFSET(DisplayEventReceiver::Event::VSync, frameInterval, 24); + CHECK_OFFSET(DisplayEventReceiver::Event::VSync, vsyncId, 32); CHECK_OFFSET(DisplayEventReceiver::Event::Hotplug, connected, 0); |