diff options
author | 2024-07-22 22:11:40 +0800 | |
---|---|---|
committer | 2024-07-25 21:31:56 +0800 | |
commit | a3d7333eb90fe3a2fdfebe7bf694ee78900052c6 (patch) | |
tree | 2b2a4cd4be42caebe2e22546a8e818d175366c0e | |
parent | 454e2fef1f5756553128a2c573d34eac9a1815e7 (diff) |
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: Fang Hui <hui.fang@nxp.com>
-rw-r--r-- | libs/ui/GraphicBuffer.cpp | 4 | ||||
-rw-r--r-- | libs/ui/GraphicBufferMapper.cpp | 6 |
2 files changed, 6 insertions, 4 deletions
diff --git a/libs/ui/GraphicBuffer.cpp b/libs/ui/GraphicBuffer.cpp index ffb6cdb6ef..b0c6e44b2b 100644 --- a/libs/ui/GraphicBuffer.cpp +++ b/libs/ui/GraphicBuffer.cpp @@ -388,8 +388,8 @@ status_t GraphicBuffer::lockAsync(uint64_t inProducerUsage, uint64_t inConsumerU } } - const uint64_t usage = static_cast<uint64_t>( - android_convertGralloc1To0Usage(inProducerUsage, inConsumerUsage)); + const uint64_t usage = static_cast<uint64_t>(ANDROID_NATIVE_UNSIGNED_CAST( + android_convertGralloc1To0Usage(inProducerUsage, inConsumerUsage))); auto result = getBufferMapper().lock(handle, usage, rect, base::unique_fd{fenceFd}); diff --git a/libs/ui/GraphicBufferMapper.cpp b/libs/ui/GraphicBufferMapper.cpp index b6ab2f5a47..7b5a27d9e1 100644 --- a/libs/ui/GraphicBufferMapper.cpp +++ b/libs/ui/GraphicBufferMapper.cpp @@ -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, uint64_t consumerUsage, const Rect& bounds, void** vaddr, int fenceFd) { - return lockAsync(handle, android_convertGralloc1To0Usage(producerUsage, consumerUsage), bounds, - vaddr, fenceFd); + return lockAsync(handle, + ANDROID_NATIVE_UNSIGNED_CAST( + android_convertGralloc1To0Usage(producerUsage, consumerUsage)), + bounds, vaddr, fenceFd); } status_t GraphicBufferMapper::lockAsyncYCbCr(buffer_handle_t handle, uint32_t usage, |