Fix some bugs in the Treble connection.
Test: Do the following inside adb shell:
setenforce 0
setprop debug.treble_omx 1
pkill mediacodec
pkill mediaserver
Bug: 31399200
Change-Id: I8d0ebcca477738add8b41b58ae85539061cfad7b
diff --git a/media/libmedia/OMXBuffer.cpp b/media/libmedia/OMXBuffer.cpp
index 71d2908..6d54a13 100644
--- a/media/libmedia/OMXBuffer.cpp
+++ b/media/libmedia/OMXBuffer.cpp
@@ -90,6 +90,13 @@
case kBufferTypeANWBuffer:
{
+ if (mGraphicBuffer == NULL) {
+ return parcel->writeBool(false);
+ }
+ status_t err = parcel->writeBool(true);
+ if (err != OK) {
+ return err;
+ }
return parcel->write(*mGraphicBuffer);
}
@@ -130,15 +137,21 @@
case kBufferTypeANWBuffer:
{
- sp<GraphicBuffer> buffer = new GraphicBuffer();
-
- status_t err = parcel->read(*buffer);
-
+ bool notNull;
+ status_t err = parcel->readBool(¬Null);
if (err != OK) {
return err;
}
-
- mGraphicBuffer = buffer;
+ if (notNull) {
+ sp<GraphicBuffer> buffer = new GraphicBuffer();
+ status_t err = parcel->read(*buffer);
+ if (err != OK) {
+ return err;
+ }
+ mGraphicBuffer = buffer;
+ } else {
+ mGraphicBuffer = nullptr;
+ }
break;
}