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

Commit fae23b87 authored by Jesse Hall's avatar Jesse Hall Committed by Android (Google) Code Review
Browse files

Merge changes I61ae54f3,I57cb668e,I7a3f1e1a,Id28a2f9b into jb-mr2-dev

* changes:
  Add BufferQueueInterposer and use it for virtual displays
  Add DisplaySurface abstraction
  Fix argument types in IGraphicBufferProducer methods
  Minor cleanups/fixes before virtual display refactoring
parents 79fb99d0 80e0a397
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -128,7 +128,7 @@ public:
    // GL_MAX_VIEWPORT_DIMS and GL_MAX_TEXTURE_SIZE (see: glGetIntegerv).
    // An error due to invalid dimensions might not be reported until
    // updateTexImage() is called.
    virtual status_t dequeueBuffer(int *buf, sp<Fence>& fence,
    virtual status_t dequeueBuffer(int *buf, sp<Fence>* fence,
            uint32_t width, uint32_t height, uint32_t format, uint32_t usage);

    // queueBuffer returns a filled buffer to the BufferQueue. In addition, a
@@ -139,7 +139,7 @@ public:
    virtual status_t queueBuffer(int buf,
            const QueueBufferInput& input, QueueBufferOutput* output);

    virtual void cancelBuffer(int buf, sp<Fence> fence);
    virtual void cancelBuffer(int buf, const sp<Fence>& fence);

    // setSynchronousMode set whether dequeueBuffer is synchronous or
    // asynchronous. In synchronous mode, dequeueBuffer blocks until
+3 −4
Original line number Diff line number Diff line
@@ -69,10 +69,9 @@ public:
    // ConsumerBase is connected.
    sp<BufferQueue> getBufferQueue() const;

    // dump writes the current state to a string.  These methods should NOT be
    // overridden by child classes.  Instead they should override the
    // dumpLocked method, which is called by these methods after locking the
    // mutex.
    // dump writes the current state to a string. Child classes should add
    // their state to the dump by overriding the dumpLocked method, which is
    // called by these methods after locking the mutex.
    void dump(String8& result) const;
    void dump(String8& result, const char* prefix, char* buffer, size_t SIZE) const;

+2 −2
Original line number Diff line number Diff line
@@ -84,7 +84,7 @@ public:
    // the buffer. The contents of the buffer must not be overwritten until the
    // fence signals. If the fence is NULL, the buffer may be written
    // immediately.
    virtual status_t dequeueBuffer(int *slot, sp<Fence>& fence,
    virtual status_t dequeueBuffer(int *slot, sp<Fence>* fence,
            uint32_t w, uint32_t h, uint32_t format, uint32_t usage) = 0;

    // queueBuffer indicates that the client has finished filling in the
@@ -165,7 +165,7 @@ public:
    // cancelBuffer indicates that the client does not wish to fill in the
    // buffer associated with slot and transfers ownership of the slot back to
    // the server.
    virtual void cancelBuffer(int slot, sp<Fence> fence) = 0;
    virtual void cancelBuffer(int slot, const sp<Fence>& fence) = 0;

    // query retrieves some information for this surface
    // 'what' tokens allowed are that of android_natives.h
+3 −3
Original line number Diff line number Diff line
@@ -254,7 +254,7 @@ status_t BufferQueue::requestBuffer(int slot, sp<GraphicBuffer>* buf) {
    return NO_ERROR;
}

status_t BufferQueue::dequeueBuffer(int *outBuf, sp<Fence>& outFence,
status_t BufferQueue::dequeueBuffer(int *outBuf, sp<Fence>* outFence,
        uint32_t w, uint32_t h, uint32_t format, uint32_t usage) {
    ATRACE_CALL();
    ST_LOGV("dequeueBuffer: w=%d h=%d fmt=%#x usage=%#x", w, h, format, usage);
@@ -393,7 +393,7 @@ status_t BufferQueue::dequeueBuffer(int *outBuf, sp<Fence>& outFence,

        dpy = mSlots[buf].mEglDisplay;
        eglFence = mSlots[buf].mEglFence;
        outFence = mSlots[buf].mFence;
        *outFence = mSlots[buf].mFence;
        mSlots[buf].mEglFence = EGL_NO_SYNC_KHR;
        mSlots[buf].mFence = Fence::NO_FENCE;
    }  // end lock scope
@@ -590,7 +590,7 @@ status_t BufferQueue::queueBuffer(int buf,
    return OK;
}

void BufferQueue::cancelBuffer(int buf, sp<Fence> fence) {
void BufferQueue::cancelBuffer(int buf, const sp<Fence>& fence) {
    ATRACE_CALL();
    ST_LOGV("cancelBuffer: slot=%d", buf);
    Mutex::Autolock lock(mMutex);
+5 −5
Original line number Diff line number Diff line
@@ -81,7 +81,7 @@ public:
        return result;
    }

    virtual status_t dequeueBuffer(int *buf, sp<Fence>& fence,
    virtual status_t dequeueBuffer(int *buf, sp<Fence>* fence,
            uint32_t w, uint32_t h, uint32_t format, uint32_t usage) {
        Parcel data, reply;
        data.writeInterfaceToken(IGraphicBufferProducer::getInterfaceDescriptor());
@@ -99,8 +99,8 @@ public:
            // If the fence was written by the callee, then overwrite the
            // caller's fence here.  If it wasn't written then don't touch the
            // caller's fence.
            fence = new Fence();
            reply.read(*fence.get());
            *fence = new Fence();
            reply.read(*(fence->get()));
        }
        result = reply.readInt32();
        return result;
@@ -121,7 +121,7 @@ public:
        return result;
    }

    virtual void cancelBuffer(int buf, sp<Fence> fence) {
    virtual void cancelBuffer(int buf, const sp<Fence>& fence) {
        Parcel data, reply;
        data.writeInterfaceToken(IGraphicBufferProducer::getInterfaceDescriptor());
        data.writeInt32(buf);
@@ -215,7 +215,7 @@ status_t BnGraphicBufferProducer::onTransact(
            uint32_t usage  = data.readInt32();
            int buf;
            sp<Fence> fence;
            int result = dequeueBuffer(&buf, fence, w, h, format, usage);
            int result = dequeueBuffer(&buf, &fence, w, h, format, usage);
            reply->writeInt32(buf);
            reply->writeInt32(fence != NULL);
            if (fence != NULL) {
Loading