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

Commit d699e621 authored by ramindani's avatar ramindani Committed by Ram Indani
Browse files

Adds out parameters for crop rectangle and transform

Test: Did the manual test and
atest TextureViewCameraTest
atest TextureViewSnapshotTest
atest TextureViewStressTest
atest TextureViewTest
atest PixelCopyTest
Writing crop test now

BUG=152621633
Change-Id: Icf0ee20e81d8fb590b3ab0a087da8287815de706
parent 9a2d6625
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;
        }