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

Commit a3d7333e authored by Fang Hui's avatar Fang Hui
Browse files

Use ANDROID_NATIVE_UNSIGNED_CAST() in GraphicBufferMapper::lockAsync() and...


Use ANDROID_NATIVE_UNSIGNED_CAST() in GraphicBufferMapper::lockAsync() and GraphicBuffer::lockAsync()

If bit 31 of the return value of android_convertGralloc1To0Usage() is 1,
the high 32 bits of "usage" is all 1.
To fix, add ANDROID_NATIVE_UNSIGNED_CAST().

Change-Id: Ie8fe138e4626a179284f079d728e1fd14d83b130
Signed-off-by: default avatarFang Hui <hui.fang@nxp.com>
parent 454e2fef
Loading
Loading
Loading
Loading
+2 −2
Original line number Original line Diff line number Diff line
@@ -388,8 +388,8 @@ status_t GraphicBuffer::lockAsync(uint64_t inProducerUsage, uint64_t inConsumerU
        }
        }
    }
    }


    const uint64_t usage = static_cast<uint64_t>(
    const uint64_t usage = static_cast<uint64_t>(ANDROID_NATIVE_UNSIGNED_CAST(
            android_convertGralloc1To0Usage(inProducerUsage, inConsumerUsage));
            android_convertGralloc1To0Usage(inProducerUsage, inConsumerUsage)));


    auto result = getBufferMapper().lock(handle, usage, rect, base::unique_fd{fenceFd});
    auto result = getBufferMapper().lock(handle, usage, rect, base::unique_fd{fenceFd});


+4 −2
Original line number Original line Diff line number Diff line
@@ -208,8 +208,10 @@ status_t GraphicBufferMapper::lockAsync(buffer_handle_t handle, uint32_t usage,
status_t GraphicBufferMapper::lockAsync(buffer_handle_t handle, uint64_t producerUsage,
status_t GraphicBufferMapper::lockAsync(buffer_handle_t handle, uint64_t producerUsage,
                                        uint64_t consumerUsage, const Rect& bounds, void** vaddr,
                                        uint64_t consumerUsage, const Rect& bounds, void** vaddr,
                                        int fenceFd) {
                                        int fenceFd) {
    return lockAsync(handle, android_convertGralloc1To0Usage(producerUsage, consumerUsage), bounds,
    return lockAsync(handle,
                     vaddr, fenceFd);
                     ANDROID_NATIVE_UNSIGNED_CAST(
                             android_convertGralloc1To0Usage(producerUsage, consumerUsage)),
                     bounds, vaddr, fenceFd);
}
}


status_t GraphicBufferMapper::lockAsyncYCbCr(buffer_handle_t handle, uint32_t usage,
status_t GraphicBufferMapper::lockAsyncYCbCr(buffer_handle_t handle, uint32_t usage,