- status_t err = NO_ERROR;
- char* p = (char*)buffer;
- memcpy(p, ×tamp, sizeof(timestamp)); p += sizeof(timestamp);
- memcpy(p, &crop, sizeof(crop)); p += sizeof(crop);
- memcpy(p, &scalingMode, sizeof(scalingMode)); p += sizeof(scalingMode);
- memcpy(p, &transform, sizeof(transform)); p += sizeof(transform);
- err = fence->flatten(p, size - (p - (char*)buffer), fds, count);
- return err;
+ if (size < getFlattenedSize()) {
+ return NO_MEMORY;
+ }
+ FlattenableUtils::write(buffer, size, timestamp);
+ FlattenableUtils::write(buffer, size, isAutoTimestamp);
+ FlattenableUtils::write(buffer, size, crop);
+ FlattenableUtils::write(buffer, size, scalingMode);
+ FlattenableUtils::write(buffer, size, transform);
+ FlattenableUtils::write(buffer, size, async);
+ return fence->flatten(buffer, size, fds, count);