Home | History | Annotate | Download | only in dvr
      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