diff options
author | Dan Stoza <stoza@google.com> | 2015-04-16 17:28:43 -0700 |
---|---|---|
committer | Dan Stoza <stoza@google.com> | 2015-04-23 15:28:12 -0700 |
commit | 9de7293b0a1b01ebe6fb1ab4a498f144adc8029f (patch) | |
tree | f8ee5b60b00fb545ea324e94fdb4b246b0943f16 /libs/ui | |
parent | 0de7ea752900b5da29ad19c2799040235477f3c5 (diff) | |
download | frameworks_native-9de7293b0a1b01ebe6fb1ab4a498f144adc8029f.zip frameworks_native-9de7293b0a1b01ebe6fb1ab4a498f144adc8029f.tar.gz frameworks_native-9de7293b0a1b01ebe6fb1ab4a498f144adc8029f.tar.bz2 |
libgui: Allow an IGBProducer to disable allocation
Adds a new method IGBP::allowAllocation, which controls whether
dequeueBuffer is permitted to allocate a new buffer. If allocation is
disallowed, dequeueBuffer will block or return an error as it
normally would (as controlled by *ControlledByApp).
If there are free buffers, but they are not of the correct dimensions,
format, or usage, they may be freed if a more suitable buffer is not
found first.
Bug: 19801715
Change-Id: I0d604958b78b2fd775c2547690301423f9a52165
Diffstat (limited to 'libs/ui')
-rw-r--r-- | libs/ui/GraphicBuffer.cpp | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/libs/ui/GraphicBuffer.cpp b/libs/ui/GraphicBuffer.cpp index 638ac62..d51d514 100644 --- a/libs/ui/GraphicBuffer.cpp +++ b/libs/ui/GraphicBuffer.cpp @@ -152,6 +152,16 @@ status_t GraphicBuffer::reallocate(uint32_t inWidth, uint32_t inHeight, return initSize(inWidth, inHeight, inFormat, inUsage); } +bool GraphicBuffer::needsReallocation(uint32_t inWidth, uint32_t inHeight, + PixelFormat inFormat, uint32_t inUsage) +{ + if (static_cast<int>(inWidth) != width) return true; + if (static_cast<int>(inHeight) != height) return true; + if (inFormat != format) return true; + if ((static_cast<uint32_t>(usage) & inUsage) != inUsage) return true; + return false; +} + status_t GraphicBuffer::initSize(uint32_t inWidth, uint32_t inHeight, PixelFormat inFormat, uint32_t inUsage) { |