From 65ddb154c75126bbef8bf03494e6fd0d98ee0127 Mon Sep 17 00:00:00 2001 From: John Reck Date: Tue, 2 Aug 2016 09:38:26 -0700 Subject: [PATCH] Fix FrameMetricsObserver crash Bug: 30587465 Someday maybe the technology will exist to allow sharing a simple constant between Java and C++, but today is not that day. Change-Id: I17694746cb8712058133cd5ea10c47b9909f740b --- core/java/android/view/FrameMetrics.java | 2 +- libs/hwui/FrameInfo.cpp | 3 +++ libs/hwui/FrameInfo.h | 1 + 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/core/java/android/view/FrameMetrics.java b/core/java/android/view/FrameMetrics.java index 5c4450a4ed183..2b938d0df7eb4 100644 --- a/core/java/android/view/FrameMetrics.java +++ b/core/java/android/view/FrameMetrics.java @@ -198,7 +198,7 @@ public final class FrameMetrics { int SWAP_BUFFERS = 12; int FRAME_COMPLETED = 13; - int FRAME_STATS_COUNT = 14; // must always be last + int FRAME_STATS_COUNT = 16; // must always be last } /* diff --git a/libs/hwui/FrameInfo.cpp b/libs/hwui/FrameInfo.cpp index 09b3945c7f55a..826f0bba294cf 100644 --- a/libs/hwui/FrameInfo.cpp +++ b/libs/hwui/FrameInfo.cpp @@ -43,6 +43,9 @@ static_assert((sizeof(FrameInfoNames)/sizeof(FrameInfoNames[0])) == static_cast(FrameInfoIndex::NumIndexes), "size mismatch: FrameInfoNames doesn't match the enum!"); +static_assert(static_cast(FrameInfoIndex::NumIndexes) == 16, + "Must update value in FrameMetrics.java#FRAME_STATS_COUNT (and here)"); + void FrameInfo::importUiThreadInfo(int64_t* info) { memcpy(mFrameInfo, info, UI_THREAD_FRAME_INFO_SIZE * sizeof(int64_t)); } diff --git a/libs/hwui/FrameInfo.h b/libs/hwui/FrameInfo.h index 1fe54591cf7ee..45b57de0b5044 100644 --- a/libs/hwui/FrameInfo.h +++ b/libs/hwui/FrameInfo.h @@ -52,6 +52,7 @@ enum class FrameInfoIndex { QueueBufferDuration, // Must be the last value! + // Also must be kept in sync with FrameMetrics.java#FRAME_STATS_COUNT NumIndexes };