1 #include "aidl/android/dvr/parcelable_composer_frame.h" 2 3 #include <binder/Parcel.h> 4 5 #include "aidl/android/dvr/parcelable_composer_layer.h" 6 7 namespace android { 8 namespace dvr { 9 ParcelableComposerFrame()10ParcelableComposerFrame::ParcelableComposerFrame() {} 11 ParcelableComposerFrame(const ComposerView::Frame & frame)12ParcelableComposerFrame::ParcelableComposerFrame( 13 const ComposerView::Frame& frame) 14 : frame_(frame) {} 15 ~ParcelableComposerFrame()16ParcelableComposerFrame::~ParcelableComposerFrame() {} 17 writeToParcel(Parcel * parcel) const18status_t ParcelableComposerFrame::writeToParcel(Parcel* parcel) const { 19 status_t ret = parcel->writeUint64(frame_.display_id); 20 if (ret != OK) return ret; 21 22 ret = parcel->writeInt32(frame_.display_width); 23 if (ret != OK) return ret; 24 25 ret = parcel->writeInt32(frame_.display_height); 26 if (ret != OK) return ret; 27 28 ret = parcel->writeBool(frame_.removed); 29 if (ret != OK) return ret; 30 31 ret = parcel->writeUint32(static_cast<uint32_t>(frame_.active_config)); 32 if (ret != OK) return ret; 33 34 ret = parcel->writeUint32(static_cast<uint32_t>(frame_.color_mode)); 35 if (ret != OK) return ret; 36 37 ret = parcel->writeUint32(static_cast<uint32_t>(frame_.power_mode)); 38 if (ret != OK) return ret; 39 40 ret = parcel->writeUint32(static_cast<uint32_t>(frame_.vsync_enabled)); 41 if (ret != OK) return ret; 42 43 ret = parcel->writeInt32(frame_.color_transform_hint); 44 if (ret != OK) return ret; 45 46 for(size_t i = 0; i < 16; i++) { 47 ret = parcel->writeFloat(frame_.color_transform[i]); 48 if (ret != OK) return ret; 49 } 50 51 std::vector<ParcelableComposerLayer> layers; 52 for (size_t i = 0; i < frame_.layers.size(); ++i) 53 layers.push_back(ParcelableComposerLayer(frame_.layers[i])); 54 55 ret = parcel->writeParcelableVector(layers); 56 57 return ret; 58 } 59 readFromParcel(const Parcel * parcel)60status_t ParcelableComposerFrame::readFromParcel(const Parcel* parcel) { 61 status_t ret = parcel->readUint64(&frame_.display_id); 62 if (ret != OK) return ret; 63 64 ret = parcel->readInt32(&frame_.display_width); 65 if (ret != OK) return ret; 66 67 ret = parcel->readInt32(&frame_.display_height); 68 if (ret != OK) return ret; 69 70 ret = parcel->readBool(&frame_.removed); 71 if (ret != OK) return ret; 72 73 uint32_t value; 74 ret = parcel->readUint32(&value); 75 if (ret != OK) return ret; 76 frame_.active_config = static_cast<Config>(value); 77 78 ret = parcel->readUint32(&value); 79 if (ret != OK) return ret; 80 frame_.color_mode = static_cast<ColorMode>(value); 81 82 ret = parcel->readUint32(&value); 83 if (ret != OK) return ret; 84 frame_.power_mode = static_cast<IComposerClient::PowerMode>(value); 85 86 ret = parcel->readUint32(&value); 87 if (ret != OK) return ret; 88 frame_.vsync_enabled = static_cast<IComposerClient::Vsync>(value); 89 90 ret = parcel->readInt32(&frame_.color_transform_hint); 91 if (ret != OK) return ret; 92 93 for(size_t i = 0; i < 16; i++) { 94 ret = parcel->readFloat(&frame_.color_transform[i]); 95 if (ret != OK) return ret; 96 } 97 98 std::vector<ParcelableComposerLayer> layers; 99 ret = parcel->readParcelableVector(&layers); 100 if (ret != OK) return ret; 101 102 frame_.layers.clear(); 103 for (size_t i = 0; i < layers.size(); ++i) 104 frame_.layers.push_back(layers[i].layer()); 105 106 return ret; 107 } 108 109 } // namespace dvr 110 } // namespace android 111