diff options
| author | 2016-03-02 21:47:08 +0000 | |
|---|---|---|
| committer | 2016-03-02 21:47:13 +0000 | |
| commit | cc19ec809e45616449f332d2e72c754d7debf9fb (patch) | |
| tree | 9dd3746756bfcbc2d76a05be7fd9089847b5e391 /libs/gui/Surface.cpp | |
| parent | 649449dbb777e58ea5f6f1af61f84022d088190c (diff) | |
| parent | 88612912ac8406f2be0eeff97892274f98509017 (diff) | |
Merge "GUI: Move Surface.aidl here and implement for native" into nyc-dev
Diffstat (limited to 'libs/gui/Surface.cpp')
| -rw-r--r-- | libs/gui/Surface.cpp | 53 | 
1 files changed, 53 insertions, 0 deletions
diff --git a/libs/gui/Surface.cpp b/libs/gui/Surface.cpp index c2956841fd..8025ca58b5 100644 --- a/libs/gui/Surface.cpp +++ b/libs/gui/Surface.cpp @@ -1259,4 +1259,57 @@ status_t Surface::unlockAndPost()      return err;  } +namespace view { + +status_t Surface::writeToParcel(Parcel* parcel) const { +    return writeToParcel(parcel, false); +} + +status_t Surface::writeToParcel(Parcel* parcel, bool nameAlreadyWritten) const { +    if (parcel == nullptr) return BAD_VALUE; + +    status_t res = OK; + +    if (!nameAlreadyWritten) res = parcel->writeString16(name); + +    if (res == OK) { +        res = parcel->writeStrongBinder( +                IGraphicBufferProducer::asBinder(graphicBufferProducer)); +    } +    return res; +} + +status_t Surface::readFromParcel(const Parcel* parcel) { +    return readFromParcel(parcel, false); +} + +status_t Surface::readFromParcel(const Parcel* parcel, bool nameAlreadyRead) { +    if (parcel == nullptr) return BAD_VALUE; + +    if (!nameAlreadyRead) { +        name = readMaybeEmptyString16(parcel); +    } + +    sp<IBinder> binder; + +    status_t res = parcel->readStrongBinder(&binder); +    if (res != OK) return res; + +    graphicBufferProducer = interface_cast<IGraphicBufferProducer>(binder); + +    return OK; +} + +String16 Surface::readMaybeEmptyString16(const Parcel* parcel) { +    size_t len; +    const char16_t* str = parcel->readString16Inplace(&len); +    if (str != nullptr) { +        return String16(str, len); +    } else { +        return String16(); +    } +} + +} // namespace view +  }; // namespace android  |