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

Commit 062070ac authored by Ram Indani's avatar Ram Indani Committed by Android (Google) Code Review
Browse files

Merge "Adds out parameters for crop rectangle and transform"

parents 03f9f6d1 d699e621
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -272,10 +272,11 @@ public:
    status_t attachToContext(uint32_t tex);

    sp<GraphicBuffer> dequeueBuffer(int* outSlotid, android_dataspace* outDataspace,
                                    float* outTransformMatrix, bool* outQueueEmpty,
                                    bool* outQueueEmpty,
                                    SurfaceTexture_createReleaseFence createFence,
                                    SurfaceTexture_fenceWait fenceWait,
                                    void* fencePassThroughHandle);
                                    void* fencePassThroughHandle, ARect* cropRect,
                                    uint32_t* transform);

    /**
     * takeConsumerOwnership attaches a SurfaceTexture that is currently in the
+3 −3
Original line number Diff line number Diff line
@@ -83,11 +83,11 @@ typedef int (*ASurfaceTexture_fenceWait)(int fence, void* fencePassThroughHandle
 * AHardwareBuffer_release.
 */
AHardwareBuffer* ASurfaceTexture_dequeueBuffer(ASurfaceTexture* st, int* outSlotid,
                                               android_dataspace* outDataspace,
                                               float* outTransformMatrix, bool* outNewContent,
                                               android_dataspace* outDataspace, bool* outNewContent,
                                               ASurfaceTexture_createReleaseFence createFence,
                                               ASurfaceTexture_fenceWait fenceWait,
                                               void* fencePassThroughHandle);
                                               void* fencePassThroughHandle, ARect* cropRect,
                                               uint32_t* transform);

} // namespace android

+5 −3
Original line number Diff line number Diff line
@@ -464,10 +464,11 @@ void SurfaceTexture::dumpLocked(String8& result, const char* prefix) const {
}

sp<GraphicBuffer> SurfaceTexture::dequeueBuffer(int* outSlotid, android_dataspace* outDataspace,
                                                float* outTransformMatrix, bool* outQueueEmpty,
                                                bool* outQueueEmpty,
                                                SurfaceTexture_createReleaseFence createFence,
                                                SurfaceTexture_fenceWait fenceWait,
                                                void* fencePassThroughHandle) {
                                                void* fencePassThroughHandle, ARect* cropRect,
                                                uint32_t* transform) {
    Mutex::Autolock _l(mMutex);
    sp<GraphicBuffer> buffer;

@@ -483,7 +484,8 @@ sp<GraphicBuffer> SurfaceTexture::dequeueBuffer(int* outSlotid, android_dataspac

    buffer = mImageConsumer.dequeueBuffer(outSlotid, outDataspace, outQueueEmpty, *this,
                                          createFence, fenceWait, fencePassThroughHandle);
    memcpy(outTransformMatrix, mCurrentTransformMatrix, sizeof(mCurrentTransformMatrix));
    *transform = mCurrentTransform;
    *cropRect = mCurrentCrop;
    return buffer;
}

+5 −5
Original line number Diff line number Diff line
@@ -193,16 +193,16 @@ void ASurfaceTexture_releaseConsumerOwnership(ASurfaceTexture* texture) {
}

AHardwareBuffer* ASurfaceTexture_dequeueBuffer(ASurfaceTexture* st, int* outSlotid,
                                               android_dataspace* outDataspace,
                                               float* outTransformMatrix, bool* outNewContent,
                                               android_dataspace* outDataspace, bool* outNewContent,
                                               ASurfaceTexture_createReleaseFence createFence,
                                               ASurfaceTexture_fenceWait fenceWait, void* handle) {
                                               ASurfaceTexture_fenceWait fenceWait, void* handle,
                                               ARect* cropRect, uint32_t* transform) {
    sp<GraphicBuffer> buffer;
    *outNewContent = false;
    bool queueEmpty;
    do {
        buffer = st->consumer->dequeueBuffer(outSlotid, outDataspace, outTransformMatrix,
                                             &queueEmpty, createFence, fenceWait, handle);
        buffer = st->consumer->dequeueBuffer(outSlotid, outDataspace, &queueEmpty, createFence,
                                             fenceWait, handle, cropRect, transform);
        if (!queueEmpty) {
            *outNewContent = true;
        }