summaryrefslogtreecommitdiff
path: root/libs/gui/Surface.cpp
diff options
context:
space:
mode:
author Eino-Ville Talvala <etalvala@google.com> 2016-03-02 21:47:08 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2016-03-02 21:47:13 +0000
commitcc19ec809e45616449f332d2e72c754d7debf9fb (patch)
tree9dd3746756bfcbc2d76a05be7fd9089847b5e391 /libs/gui/Surface.cpp
parent649449dbb777e58ea5f6f1af61f84022d088190c (diff)
parent88612912ac8406f2be0eeff97892274f98509017 (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.cpp53
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