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