1 #include "android/dvr/parcelable_unique_fd.h" 2 3 #include <binder/Parcel.h> 4 5 namespace android { 6 namespace dvr { 7 ParcelableUniqueFd()8ParcelableUniqueFd::ParcelableUniqueFd() {} 9 ParcelableUniqueFd(const base::unique_fd & fence)10ParcelableUniqueFd::ParcelableUniqueFd(const base::unique_fd& fence) 11 : fence_(dup(fence.get())) {} 12 ~ParcelableUniqueFd()13ParcelableUniqueFd::~ParcelableUniqueFd() {} 14 writeToParcel(Parcel * parcel) const15status_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 readFromParcel(const Parcel * parcel)25status_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