1 #include "android/dvr/parcelable_unique_fd.h" 2 3 #include <binder/Parcel.h> 4 5 namespace android { 6 namespace dvr { 7 8 ParcelableUniqueFd::ParcelableUniqueFd() {} 9 10 ParcelableUniqueFd::ParcelableUniqueFd(const base::unique_fd& fence) 11 : fence_(dup(fence.get())) {} 12 13 ParcelableUniqueFd::~ParcelableUniqueFd() {} 14 15 status_t ParcelableUniqueFd::writeToParcel(Parcel* parcel) const { 16 status_t ret = parcel->writeBool(fence_.get() >= 0); 17 if (ret != OK) return ret; 18 19 if (fence_.get() >= 0) 20 ret = parcel->writeUniqueFileDescriptor(fence_); 21 22 return ret; 23 } 24 25 status_t ParcelableUniqueFd::readFromParcel(const Parcel* parcel) { 26 bool has_fence = 0; 27 status_t ret = parcel->readBool(&has_fence); 28 if (ret != OK) return ret; 29 30 if (has_fence) 31 ret = parcel->readUniqueFileDescriptor(&fence_); 32 33 return ret; 34 } 35 36 } // namespace dvr 37 } // namespace android 38