Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 35b80cde authored by Pablo Gamito's avatar Pablo Gamito
Browse files

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
parent dfb85a2b
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -26,11 +26,11 @@ public:
    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 @@ private:

    // 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
+1 −1
Original line number Diff line number Diff line
@@ -20,7 +20,7 @@ namespace android {
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);
+1 −1
Original line number Diff line number Diff line
@@ -69,7 +69,7 @@ public:
     * 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:
+3 −3
Original line number Diff line number Diff line
@@ -513,7 +513,7 @@ nsecs_t CanvasContext::draw() {
                                      mContentDrawBounds, mOpaque, mLightInfo, mRenderNodes,
                                      &(profiler()));

    int64_t frameCompleteNr = getFrameNumber();
    uint64_t frameCompleteNr = getFrameNumber();

    waitOnFences();

@@ -704,7 +704,7 @@ void CanvasContext::addFrameMetricsObserver(FrameMetricsObserver* observer) {
    // 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 @@ void CanvasContext::enqueueFrameWork(std::function<void()>&& func) {
    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());
+2 −2
Original line number Diff line number Diff line
@@ -173,7 +173,7 @@ public:
    // 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 @@ private:

    // 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
Loading