From 88612912ac8406f2be0eeff97892274f98509017 Mon Sep 17 00:00:00 2001 From: Eino-Ville Talvala Date: Wed, 6 Jan 2016 12:09:11 -0800 Subject: GUI: Move Surface.aidl here and implement for native - Move android/view/Surface.aidl parcelable definition from frameworks/base - Implement matching native behavior to android.view.Surface parceling, to enable use of android.view.Surface in generated native AIDL interfaces Bug: 25091611 Change-Id: I87ffbb9a19c27a99ce0749d0ca1f17aaa6b3fe74 --- libs/gui/Surface.cpp | 53 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) (limited to 'libs/gui/Surface.cpp') 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 binder; + + status_t res = parcel->readStrongBinder(&binder); + if (res != OK) return res; + + graphicBufferProducer = interface_cast(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 -- cgit v1.2.3-59-g8ed1b