diff options
Diffstat (limited to 'libs/gui/view/Surface.cpp')
-rw-r--r-- | libs/gui/view/Surface.cpp | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/libs/gui/view/Surface.cpp b/libs/gui/view/Surface.cpp index d64dfd55be..1bfe4624f1 100644 --- a/libs/gui/view/Surface.cpp +++ b/libs/gui/view/Surface.cpp @@ -45,7 +45,9 @@ status_t Surface::writeToParcel(Parcel* parcel, bool nameAlreadyWritten) const { if (res != OK) return res; } - return IGraphicBufferProducer::exportToParcel(graphicBufferProducer, parcel); + res = IGraphicBufferProducer::exportToParcel(graphicBufferProducer, parcel); + if (res != OK) return res; + return parcel->writeStrongBinder(surfaceControlHandle); } status_t Surface::readFromParcel(const Parcel* parcel) { @@ -68,17 +70,14 @@ status_t Surface::readFromParcel(const Parcel* parcel, bool nameAlreadyRead) { } graphicBufferProducer = IGraphicBufferProducer::createFromParcel(parcel); + surfaceControlHandle = parcel->readStrongBinder(); 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(); - } + std::optional<String16> str; + parcel->readString16(&str); + return str.value_or(String16()); } } // namespace view |