diff options
author | Chong Zhang <chz@google.com> | 2015-05-22 10:54:25 -0700 |
---|---|---|
committer | Chong Zhang <chz@google.com> | 2015-05-22 10:54:25 -0700 |
commit | 47f674dfeca31b29810ecb90f1277918b67c4cf8 (patch) | |
tree | 804ca63f9704fb2e6113a90eec473f2c0476ce0e /libs/gui/BufferItem.cpp | |
parent | 3db36803b247bfbb582632be58416a0a11d1227b (diff) | |
download | frameworks_native-47f674dfeca31b29810ecb90f1277918b67c4cf8.zip frameworks_native-47f674dfeca31b29810ecb90f1277918b67c4cf8.tar.gz frameworks_native-47f674dfeca31b29810ecb90f1277918b67c4cf8.tar.bz2 |
fix BufferItem flatten/unflatten alignment
bug: 21370100
Change-Id: Ia3991dc591c176bdbd1d78d1804aa22777525b62
Diffstat (limited to 'libs/gui/BufferItem.cpp')
-rw-r--r-- | libs/gui/BufferItem.cpp | 25 |
1 files changed, 12 insertions, 13 deletions
diff --git a/libs/gui/BufferItem.cpp b/libs/gui/BufferItem.cpp index 5793d40..8f64ae0 100644 --- a/libs/gui/BufferItem.cpp +++ b/libs/gui/BufferItem.cpp @@ -46,15 +46,16 @@ static void addAligned(size_t& size, T /* value */) { } size_t BufferItem::getPodSize() const { - // Must align<8> before writing these fields for this to be correct size_t size = 0; addAligned(size, mCrop); addAligned(size, mTransform); addAligned(size, mScalingMode); - addAligned(size, mTimestamp); + addAligned(size, mTimestampLo); + addAligned(size, mTimestampHi); addAligned(size, mIsAutoTimestamp); addAligned(size, mDataSpace); - addAligned(size, mFrameNumber); + addAligned(size, mFrameNumberLo); + addAligned(size, mFrameNumberHi); addAligned(size, mSlot); addAligned(size, mIsDroppable); addAligned(size, mAcquireCalled); @@ -126,9 +127,6 @@ status_t BufferItem::flatten( if (err) return err; FlattenableUtils::advance(buffer, size, mSurfaceDamage.getFlattenedSize()); - // Must align<8> so that getPodSize returns the correct value - size -= FlattenableUtils::align<8>(buffer); - // Check we still have enough space if (size < getPodSize()) { return NO_MEMORY; @@ -137,10 +135,12 @@ status_t BufferItem::flatten( writeAligned(buffer, size, mCrop); writeAligned(buffer, size, mTransform); writeAligned(buffer, size, mScalingMode); - writeAligned(buffer, size, mTimestamp); + writeAligned(buffer, size, mTimestampLo); + writeAligned(buffer, size, mTimestampHi); writeAligned(buffer, size, mIsAutoTimestamp); writeAligned(buffer, size, mDataSpace); - writeAligned(buffer, size, mFrameNumber); + writeAligned(buffer, size, mFrameNumberLo); + writeAligned(buffer, size, mFrameNumberHi); writeAligned(buffer, size, mSlot); writeAligned(buffer, size, mIsDroppable); writeAligned(buffer, size, mAcquireCalled); @@ -183,9 +183,6 @@ status_t BufferItem::unflatten( if (err) return err; FlattenableUtils::advance(buffer, size, mSurfaceDamage.getFlattenedSize()); - // Must align<8> so that getPodSize returns the correct value - size -= FlattenableUtils::align<8>(buffer); - // Check we still have enough space if (size < getPodSize()) { return NO_MEMORY; @@ -194,10 +191,12 @@ status_t BufferItem::unflatten( readAligned(buffer, size, mCrop); readAligned(buffer, size, mTransform); readAligned(buffer, size, mScalingMode); - readAligned(buffer, size, mTimestamp); + readAligned(buffer, size, mTimestampLo); + readAligned(buffer, size, mTimestampHi); readAligned(buffer, size, mIsAutoTimestamp); readAligned(buffer, size, mDataSpace); - readAligned(buffer, size, mFrameNumber); + readAligned(buffer, size, mFrameNumberLo); + readAligned(buffer, size, mFrameNumberHi); readAligned(buffer, size, mSlot); readAligned(buffer, size, mIsDroppable); readAligned(buffer, size, mAcquireCalled); |