Make frame number type consistent

The frame numbers are ultimately stored as uint64_t so to avoid any implementation dependent casting we make sure all direct and indirect references to this value are stored as uint64_t

Test: N/A
Change-Id: I080c94b1007f2e884cf0fa3583bf51badc913a05
diff --git a/libs/hwui/FrameMetricsObserver.h b/libs/hwui/FrameMetricsObserver.h
index 2ae7901..498ec57 100644
--- a/libs/hwui/FrameMetricsObserver.h
+++ b/libs/hwui/FrameMetricsObserver.h
@@ -26,11 +26,11 @@
     virtual void notify(const int64_t* buffer) = 0;
     bool waitForPresentTime() const { return mWaitForPresentTime; };
 
-    void reportMetricsFrom(int64_t frameNumber, int32_t surfaceControlId) {
+    void reportMetricsFrom(uint64_t frameNumber, int32_t surfaceControlId) {
         mAttachedFrameNumber = frameNumber;
         mSurfaceControlId = surfaceControlId;
     };
-    int64_t attachedFrameNumber() const { return mAttachedFrameNumber; };
+    uint64_t attachedFrameNumber() const { return mAttachedFrameNumber; };
     int32_t attachedSurfaceControlId() const { return mSurfaceControlId; };
 
     /**
@@ -64,7 +64,7 @@
 
     // The frame number the metrics observer was attached on. Metrics will be sent from this frame
     // number (inclusive) onwards in the case that the surface id is equal to mSurfaceControlId.
-    int64_t mAttachedFrameNumber;
+    uint64_t mAttachedFrameNumber;
 };
 
 }  // namespace uirenderer
diff --git a/libs/hwui/FrameMetricsReporter.cpp b/libs/hwui/FrameMetricsReporter.cpp
index a5b1897..ee32ea1 100644
--- a/libs/hwui/FrameMetricsReporter.cpp
+++ b/libs/hwui/FrameMetricsReporter.cpp
@@ -20,7 +20,7 @@
 namespace uirenderer {
 
 void FrameMetricsReporter::reportFrameMetrics(const int64_t* stats, bool hasPresentTime,
-                                              int64_t frameNumber, int32_t surfaceControlId) {
+                                              uint64_t frameNumber, int32_t surfaceControlId) {
     FatVector<sp<FrameMetricsObserver>, 10> copy;
     {
         std::lock_guard lock(mObserversLock);
diff --git a/libs/hwui/FrameMetricsReporter.h b/libs/hwui/FrameMetricsReporter.h
index 95ca77e..7e51df7c 100644
--- a/libs/hwui/FrameMetricsReporter.h
+++ b/libs/hwui/FrameMetricsReporter.h
@@ -69,7 +69,7 @@
      * stats of frames that are from "old" surfaces (i.e. with surfaceControlIds older than the one
      * the observer was attached on) nor those that are from "old" frame numbers.
      */
-    void reportFrameMetrics(const int64_t* stats, bool hasPresentTime, int64_t frameNumber,
+    void reportFrameMetrics(const int64_t* stats, bool hasPresentTime, uint64_t frameNumber,
                             int32_t surfaceControlId);
 
 private:
diff --git a/libs/hwui/renderthread/CanvasContext.cpp b/libs/hwui/renderthread/CanvasContext.cpp
index e6d31d6..c5ae043 100644
--- a/libs/hwui/renderthread/CanvasContext.cpp
+++ b/libs/hwui/renderthread/CanvasContext.cpp
@@ -513,7 +513,7 @@
                                       mContentDrawBounds, mOpaque, mLightInfo, mRenderNodes,
                                       &(profiler()));
 
-    int64_t frameCompleteNr = getFrameNumber();
+    uint64_t frameCompleteNr = getFrameNumber();
 
     waitOnFences();
 
@@ -704,7 +704,7 @@
     // We want to make sure we aren't reporting frames that have already been queued by the
     // BufferQueueProducer on the rendner thread but are still pending the callback to report their
     // their frame metrics.
-    int64_t nextFrameNumber = getFrameNumber();
+    uint64_t nextFrameNumber = getFrameNumber();
     observer->reportMetricsFrom(nextFrameNumber, mSurfaceControlGenerationId);
     mFrameMetricsReporter->addObserver(observer);
 }
@@ -890,7 +890,7 @@
     mFrameFences.push_back(CommonPool::async(std::move(func)));
 }
 
-int64_t CanvasContext::getFrameNumber() {
+uint64_t CanvasContext::getFrameNumber() {
     // mFrameNumber is reset to -1 when the surface changes or we swap buffers
     if (mFrameNumber == -1 && mNativeSurface.get()) {
         mFrameNumber = ANativeWindow_getNextFrameId(mNativeSurface->getNativeWindow());
diff --git a/libs/hwui/renderthread/CanvasContext.h b/libs/hwui/renderthread/CanvasContext.h
index b21dc75..852cbda6 100644
--- a/libs/hwui/renderthread/CanvasContext.h
+++ b/libs/hwui/renderthread/CanvasContext.h
@@ -173,7 +173,7 @@
     // Used to queue up work that needs to be completed before this frame completes
     void enqueueFrameWork(std::function<void()>&& func);
 
-    int64_t getFrameNumber();
+    uint64_t getFrameNumber();
 
     void waitOnFences();
 
@@ -281,7 +281,7 @@
 
     // Need at least 4 because we do quad buffer. Add a 5th for good measure.
     RingBuffer<SwapHistory, 5> mSwapHistory;
-    int64_t mFrameNumber = -1;
+    uint64_t mFrameNumber = -1;
     int64_t mDamageId = 0;
 
     // last vsync for a dropped frame due to stuffed queue
diff --git a/libs/hwui/tests/unit/FrameMetricsReporterTests.cpp b/libs/hwui/tests/unit/FrameMetricsReporterTests.cpp
index 6c1aee0..fb04700 100644
--- a/libs/hwui/tests/unit/FrameMetricsReporterTests.cpp
+++ b/libs/hwui/tests/unit/FrameMetricsReporterTests.cpp
@@ -44,7 +44,7 @@
 
     const int64_t* stats;
     bool hasPresentTime = false;
-    int64_t frameNumber = 0;
+    uint64_t frameNumber = 1;
     int32_t surfaceControlId = 0;
     reporter->reportFrameMetrics(stats, hasPresentTime, frameNumber, surfaceControlId);
 
@@ -69,7 +69,7 @@
 
     const int64_t* stats;
     bool hasPresentTime = false;
-    int64_t frameNumber = 3;
+    uint64_t frameNumber = 3;
     int32_t surfaceControlId = 0;
 
     EXPECT_CALL(*observer, notify).Times(1);
@@ -88,7 +88,7 @@
 
     const int64_t* stats;
     bool hasPresentTime = false;
-    int64_t frameNumber = 3;
+    uint64_t frameNumber = 3;
     int32_t surfaceControlId = 0;
 
     EXPECT_CALL(*observer, notify).Times(0);
@@ -136,9 +136,9 @@
     bool hasPresentTime = false;
 
     std::vector<uint64_t> frameNumbers{1, 10};
-    std::vector<uint32_t> surfaceControlIds{0, 1, 10};
+    std::vector<int32_t> surfaceControlIds{0, 1, 10};
     for (uint64_t frameNumber : frameNumbers) {
-        for (uint32_t surfaceControlId : surfaceControlIds) {
+        for (int32_t surfaceControlId : surfaceControlIds) {
             auto reporter = std::make_shared<FrameMetricsReporter>();
 
             auto observer =
@@ -161,7 +161,7 @@
 TEST(FrameMetricsReporter, canRemoveObservers) {
     const int64_t* stats;
     bool hasPresentTime = false;
-    int64_t frameNumber = 3;
+    uint64_t frameNumber = 3;
     int32_t surfaceControlId = 0;
 
     auto reporter = std::make_shared<FrameMetricsReporter>();
@@ -183,7 +183,7 @@
 TEST(FrameMetricsReporter, canSupportMultipleObservers) {
     const int64_t* stats;
     bool hasPresentTime = false;
-    int64_t frameNumber = 3;
+    uint64_t frameNumber = 3;
     int32_t surfaceControlId = 0;
 
     auto reporter = std::make_shared<FrameMetricsReporter>();