IGBP: Address inconsistent flatten/unflatten for QueueBufferInput
Conversion.cpp uses flatten/unflatten to convert between
::IGraphicBufferProducer::QueueBufferInput and
::hardware::graphics::bufferqueue::V1_0::IGraphicBufferProducer::QueueBufferInput.
But because those 2 classes have different definitions, add the code to
handle them.
Test: libgui_test
Bug: 192439037
Change-Id: Ief0ece787912da981de273da89c9247798f83bf3
diff --git a/libs/gui/bufferqueue/1.0/Conversion.cpp b/libs/gui/bufferqueue/1.0/Conversion.cpp
index 3e20a37..55462c3 100644
--- a/libs/gui/bufferqueue/1.0/Conversion.cpp
+++ b/libs/gui/bufferqueue/1.0/Conversion.cpp
@@ -1187,14 +1187,15 @@
*/
constexpr size_t minFlattenedSize(
HGraphicBufferProducer::QueueBufferInput const& /* t */) {
- return sizeof(int64_t) + // timestamp
- sizeof(int) + // isAutoTimestamp
+ return sizeof(int64_t) + // timestamp
+ sizeof(int) + // isAutoTimestamp
sizeof(android_dataspace) + // dataSpace
- sizeof(::android::Rect) + // crop
- sizeof(int) + // scalingMode
- sizeof(uint32_t) + // transform
- sizeof(uint32_t) + // stickyTransform
- sizeof(bool); // getFrameTimestamps
+ sizeof(::android::Rect) + // crop
+ sizeof(int) + // scalingMode
+ sizeof(uint32_t) + // transform
+ sizeof(uint32_t) + // stickyTransform
+ sizeof(bool) + // getFrameTimestamps
+ sizeof(int); // slot
}
/**
@@ -1267,6 +1268,7 @@
return status;
}
FlattenableUtils::write(buffer, size, decltype(HdrMetadata::validTypes)(0));
+ FlattenableUtils::write(buffer, size, -1 /*slot*/);
return NO_ERROR;
}
@@ -1319,7 +1321,7 @@
if (status != NO_ERROR) {
return status;
}
- // HdrMetadata ignored
+ // HdrMetadata and slot ignored
return unflatten(&(t->surfaceDamage), buffer, size);
}