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

Commit 7e6a5f29 authored by Pablo Gamito's avatar Pablo Gamito
Browse files

Set uninitialized frame number to 0

Now that the frame number is a uint instead of an int it's clearer if the uninitailized value is 0. Frame numbers start from 1 so 0 doesn't collide with any valid frame numbers. It also means comparing frame numbers to check if the frame is newer always works even when comparing to the uninitialized frame number.

Test: N/A
Change-Id: I0901ffeaefbdd6378e59d8858a06de92b0104cd9
parent 35b80cde
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -219,7 +219,7 @@ void CanvasContext::setupPipelineSurface() {

    }

    mFrameNumber = -1;
    mFrameNumber = 0;

    if (mNativeSurface != nullptr && hasSurface) {
        mHaveNewSurface = true;
@@ -581,7 +581,7 @@ nsecs_t CanvasContext::draw() {
        mCurrentFrameInfo->set(FrameInfoIndex::DequeueBufferDuration) = swap.dequeueDuration;
        mCurrentFrameInfo->set(FrameInfoIndex::QueueBufferDuration) = swap.queueDuration;
        mHaveNewSurface = false;
        mFrameNumber = -1;
        mFrameNumber = 0;
    } else {
        mCurrentFrameInfo->set(FrameInfoIndex::DequeueBufferDuration) = 0;
        mCurrentFrameInfo->set(FrameInfoIndex::QueueBufferDuration) = 0;
@@ -891,8 +891,8 @@ void CanvasContext::enqueueFrameWork(std::function<void()>&& func) {
}

uint64_t CanvasContext::getFrameNumber() {
    // mFrameNumber is reset to -1 when the surface changes or we swap buffers
    if (mFrameNumber == -1 && mNativeSurface.get()) {
    // mFrameNumber is reset to 0 when the surface changes or we swap buffers
    if (mFrameNumber == 0 && mNativeSurface.get()) {
        mFrameNumber = ANativeWindow_getNextFrameId(mNativeSurface->getNativeWindow());
    }
    return mFrameNumber;
+2 −1
Original line number Diff line number Diff line
@@ -281,7 +281,8 @@ private:

    // Need at least 4 because we do quad buffer. Add a 5th for good measure.
    RingBuffer<SwapHistory, 5> mSwapHistory;
    uint64_t mFrameNumber = -1;
    // Frame numbers start at 1, 0 means uninitialized
    uint64_t mFrameNumber = 0;
    int64_t mDamageId = 0;

    // last vsync for a dropped frame due to stuffed queue