Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ce8e5df3 authored by John Reck's avatar John Reck
Browse files

Don't flatten nullptrs

Bug: 28428970

BufferQueueProducer can return a nullptr for
the GraphicBuffer if there's nothing queued, which
IGraphicBufferProducer would attempt to flatten.

It's useful to distinguish that there's nothing queued
instead of just generic error, so fix IGraphicBufferProducer
to handle null GraphicBuffers.

Change-Id: I9e2b11e107e093d209a89a01d14feec3e885f268
parent 44e9c027
Loading
Loading
Loading
Loading
+12 −3
Original line number Diff line number Diff line
@@ -395,8 +395,12 @@ public:
        if (result != NO_ERROR) {
            return result;
        }
        sp<GraphicBuffer> buffer(new GraphicBuffer);
        bool hasBuffer = reply.readBool();
        sp<GraphicBuffer> buffer;
        if (hasBuffer) {
            buffer = new GraphicBuffer();
            result = reply.read(*buffer);
        }
        if (result != NO_ERROR) {
            ALOGE("getLastQueuedBuffer failed to read buffer: %d", result);
            return result;
@@ -631,7 +635,12 @@ status_t BnGraphicBufferProducer::onTransact(
            if (result != NO_ERROR) {
                return result;
            }
            if (!buffer.get()) {
                reply->writeBool(false);
            } else {
                reply->writeBool(true);
                result = reply->write(*buffer);
            }
            if (result != NO_ERROR) {
                ALOGE("getLastQueuedBuffer failed to write buffer: %d", result);
                return result;