1aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara#include "aidl/android/dvr/parcelable_composer_layer.h" 2aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara 3aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara#include <binder/Parcel.h> 4aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara#include <ui/Fence.h> 5aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara#include <ui/GraphicBuffer.h> 6aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara#include <ui/GraphicBufferMapper.h> 7aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara 8aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoaranamespace android { 9aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoaranamespace dvr { 10aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara 11aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel NicoaraParcelableComposerLayer::ParcelableComposerLayer() {} 12aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara 13aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel NicoaraParcelableComposerLayer::ParcelableComposerLayer( 14aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara const ComposerView::ComposerLayer& layer) : layer_(layer) {} 15aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara 16aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel NicoaraParcelableComposerLayer::~ParcelableComposerLayer() {} 17aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara 18aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoarastatus_t ParcelableComposerLayer::writeToParcel(Parcel* parcel) const { 19aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara status_t ret = parcel->writeUint64(layer_.id); 20aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara if (ret != OK) return ret; 21aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara 221f42e3a02c4f9a1ba1916a2f0e47082bedb73e41Daniel Nicoara ret = parcel->write(*layer_.buffer); 23aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara if (ret != OK) return ret; 24aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara 25aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara ret = parcel->writeBool(layer_.fence->isValid()); 26aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara if (ret != OK) return ret; 27aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara 28aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara if (layer_.fence->isValid()) { 29aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara ret = parcel->writeFileDescriptor(layer_.fence->dup(), true); 30aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara if (ret != OK) return ret; 31aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara } 32aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara 33aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara ret = parcel->writeInt32(layer_.display_frame.left); 34aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara if (ret != OK) return ret; 35aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara 36aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara ret = parcel->writeInt32(layer_.display_frame.top); 37aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara if (ret != OK) return ret; 38aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara 39aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara ret = parcel->writeInt32(layer_.display_frame.right); 40aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara if (ret != OK) return ret; 41aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara 42aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara ret = parcel->writeInt32(layer_.display_frame.bottom); 43aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara if (ret != OK) return ret; 44aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara 45aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara ret = parcel->writeFloat(layer_.crop.left); 46aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara if (ret != OK) return ret; 47aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara 48aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara ret = parcel->writeFloat(layer_.crop.top); 49aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara if (ret != OK) return ret; 50aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara 51aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara ret = parcel->writeFloat(layer_.crop.right); 52aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara if (ret != OK) return ret; 53aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara 54aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara ret = parcel->writeFloat(layer_.crop.bottom); 55aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara if (ret != OK) return ret; 56aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara 57aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara ret = parcel->writeInt32(static_cast<int32_t>(layer_.blend_mode)); 58aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara if (ret != OK) return ret; 59aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara 60aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara ret = parcel->writeFloat(layer_.alpha); 61aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara if (ret != OK) return ret; 62aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara 63aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara ret = parcel->writeUint32(layer_.type); 64aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara if (ret != OK) return ret; 65aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara 66aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara ret = parcel->writeUint32(layer_.app_id); 67aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara if (ret != OK) return ret; 68aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara 69730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk ret = parcel->writeUint32(layer_.z_order); 70730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk if (ret != OK) return ret; 71730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk 72730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk ret = parcel->writeInt32(layer_.cursor_x); 73730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk if (ret != OK) return ret; 74730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk 75730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk ret = parcel->writeInt32(layer_.cursor_y); 76730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk if (ret != OK) return ret; 77730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk 78730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk uint32_t color = layer_.color.r | 79730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk (static_cast<uint32_t>(layer_.color.g) << 8) | 80730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk (static_cast<uint32_t>(layer_.color.b) << 16) | 81730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk (static_cast<uint32_t>(layer_.color.a) << 24); 82730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk ret = parcel->writeUint32(color); 83730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk if (ret != OK) return ret; 84730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk 85730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk ret = parcel->writeInt32(layer_.dataspace); 86730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk if (ret != OK) return ret; 87730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk 88730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk ret = parcel->writeInt32(layer_.transform); 89730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk if (ret != OK) return ret; 90730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk 91730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk ret = parcel->writeUint32(static_cast<uint32_t>(layer_.visible_regions.size())); 92730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk if (ret != OK) return ret; 93730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk 94730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk for (auto& rect: layer_.visible_regions) { 95730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk ret = parcel->writeInt32(rect.left); 96730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk ret = parcel->writeInt32(rect.top); 97730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk ret = parcel->writeInt32(rect.right); 98730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk ret = parcel->writeInt32(rect.bottom); 99730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk if (ret != OK) return ret; 100730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk } 101730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk 102730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk ret = parcel->writeUint32(static_cast<uint32_t>(layer_.damaged_regions.size())); 103730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk if (ret != OK) return ret; 104730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk 105730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk for (auto& rect: layer_.damaged_regions) { 106730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk ret = parcel->writeInt32(rect.left); 107730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk ret = parcel->writeInt32(rect.top); 108730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk ret = parcel->writeInt32(rect.right); 109730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk ret = parcel->writeInt32(rect.bottom); 110730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk if (ret != OK) return ret; 111730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk } 112730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk 113aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara return OK; 114aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara} 115aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara 116aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoarastatus_t ParcelableComposerLayer::readFromParcel(const Parcel* parcel) { 117aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara status_t ret = parcel->readUint64(&layer_.id); 118aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara if (ret != OK) return ret; 119aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara 1201f42e3a02c4f9a1ba1916a2f0e47082bedb73e41Daniel Nicoara layer_.buffer = new GraphicBuffer(); 1211f42e3a02c4f9a1ba1916a2f0e47082bedb73e41Daniel Nicoara ret = parcel->read(*layer_.buffer); 1221f42e3a02c4f9a1ba1916a2f0e47082bedb73e41Daniel Nicoara if (ret != OK) { 1231f42e3a02c4f9a1ba1916a2f0e47082bedb73e41Daniel Nicoara layer_.buffer.clear(); 1241f42e3a02c4f9a1ba1916a2f0e47082bedb73e41Daniel Nicoara return ret; 1251f42e3a02c4f9a1ba1916a2f0e47082bedb73e41Daniel Nicoara } 126aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara 127aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara bool has_fence = 0; 128aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara ret = parcel->readBool(&has_fence); 129aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara if (ret != OK) return ret; 130aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara 131aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara if (has_fence) 132aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara layer_.fence = new Fence(dup(parcel->readFileDescriptor())); 133aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara else 134aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara layer_.fence = new Fence(); 135aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara 136aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara ret = parcel->readInt32(&layer_.display_frame.left); 137aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara if (ret != OK) return ret; 138aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara 139aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara ret = parcel->readInt32(&layer_.display_frame.top); 140aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara if (ret != OK) return ret; 141aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara 142aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara ret = parcel->readInt32(&layer_.display_frame.right); 143aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara if (ret != OK) return ret; 144aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara 145aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara ret = parcel->readInt32(&layer_.display_frame.bottom); 146aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara if (ret != OK) return ret; 147aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara 148aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara ret = parcel->readFloat(&layer_.crop.left); 149aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara if (ret != OK) return ret; 150aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara 151aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara ret = parcel->readFloat(&layer_.crop.top); 152aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara if (ret != OK) return ret; 153aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara 154aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara ret = parcel->readFloat(&layer_.crop.right); 155aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara if (ret != OK) return ret; 156aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara 157aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara ret = parcel->readFloat(&layer_.crop.bottom); 158aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara if (ret != OK) return ret; 159aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara 160aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara ret = parcel->readInt32(reinterpret_cast<int32_t*>(&layer_.blend_mode)); 161aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara if (ret != OK) return ret; 162aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara 163aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara ret = parcel->readFloat(&layer_.alpha); 164aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara if (ret != OK) return ret; 165aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara 166aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara ret = parcel->readUint32(&layer_.type); 167aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara if (ret != OK) return ret; 168aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara 169aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara ret = parcel->readUint32(&layer_.app_id); 170aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara if (ret != OK) return ret; 171aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara 172730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk ret = parcel->readUint32(&layer_.z_order); 173730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk if (ret != OK) return ret; 174730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk 175730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk ret = parcel->readInt32(&layer_.cursor_x); 176730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk if (ret != OK) return ret; 177730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk 178730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk ret = parcel->readInt32(&layer_.cursor_y); 179730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk if (ret != OK) return ret; 180730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk 181730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk uint32_t color; 182730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk ret = parcel->readUint32(&color); 183730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk if (ret != OK) return ret; 184730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk layer_.color.r = color & 0xFF; 185730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk layer_.color.g = (color >> 8) & 0xFF; 186730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk layer_.color.b = (color >> 16) & 0xFF; 187730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk layer_.color.a = (color >> 24) & 0xFF; 188730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk 189730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk ret = parcel->readInt32(&layer_.dataspace); 190730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk if (ret != OK) return ret; 191730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk 192730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk ret = parcel->readInt32(&layer_.transform); 193730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk if (ret != OK) return ret; 194730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk 195730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk uint32_t size; 196730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk ret = parcel->readUint32(&size); 197730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk if (ret != OK) return ret; 198730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk 199730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk for(size_t i = 0; i < size; i++) { 200730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk hwc_rect_t rect; 201730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk ret = parcel->readInt32(&rect.left); 202730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk if (ret != OK) return ret; 203730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk 204730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk ret = parcel->readInt32(&rect.top); 205730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk if (ret != OK) return ret; 206730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk 207730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk ret = parcel->readInt32(&rect.right); 208730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk if (ret != OK) return ret; 209730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk 210730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk ret = parcel->readInt32(&rect.bottom); 211730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk if (ret != OK) return ret; 212730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk 213730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk layer_.visible_regions.push_back(rect); 214730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk } 215730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk 216730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk ret = parcel->readUint32(&size); 217730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk if (ret != OK) return ret; 218730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk 219730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk for(size_t i = 0; i < size; i++) { 220730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk hwc_rect_t rect; 221730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk ret = parcel->readInt32(&rect.left); 222730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk if (ret != OK) return ret; 223730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk 224730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk ret = parcel->readInt32(&rect.top); 225730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk if (ret != OK) return ret; 226730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk 227730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk ret = parcel->readInt32(&rect.right); 228730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk if (ret != OK) return ret; 229730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk 230730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk ret = parcel->readInt32(&rect.bottom); 231730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk if (ret != OK) return ret; 232730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk 233730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk layer_.damaged_regions.push_back(rect); 234730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk } 235730c89a8042e277304a90bff180348fcda75d5a7Albert Chaulk 236aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara return OK; 237aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara} 238aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara 239aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara} // namespace dvr 240aba4d01add2e961f8b24a6281f3c616f916eb92fDaniel Nicoara} // namespace android 241