OSDN Git Service

libgui: remove setPostTransformCrop
authorJamie Gennis <jgennis@google.com>
Mon, 14 May 2012 02:41:35 +0000 (19:41 -0700)
committerJamie Gennis <jgennis@google.com>
Mon, 14 May 2012 22:41:22 +0000 (15:41 -0700)
This change removes the setPostTransformCrop function from
SurfaceTextureClient.  It also includes a small logging fix in BufferQueue.

Bug: 6299171
Change-Id: Ifd0ed05b95dad6085e7a8267fda4d69b76ea3bad

include/gui/SurfaceTextureClient.h
libs/gui/BufferQueue.cpp
libs/gui/SurfaceTextureClient.cpp
libs/gui/tests/SurfaceTextureClient_test.cpp

index b11d572..8fa85b6 100644 (file)
@@ -104,7 +104,6 @@ protected:
     virtual int setBuffersTransform(int transform);
     virtual int setBuffersTimestamp(int64_t timestamp);
     virtual int setCrop(Rect const* rect);
-    virtual int setPostTransformCrop(Rect const* rect);
     virtual int setUsage(uint32_t reqUsage);
     virtual int lock(ANativeWindow_Buffer* outBuffer, ARect* inOutDirtyBounds);
     virtual int unlockAndPost();
@@ -159,13 +158,6 @@ private:
     // that gets queued. It is set by calling setCrop.
     Rect mCrop;
 
-    // mCropNeedsTransform indicates whether mCrop is in post-transform
-    // coordinates and must be transformed using the inverse of mTransform
-    // before being queued with a buffer.  Otherwise the crop is passed
-    // untransformed.  It is initialized to false, is set to true by
-    // setPostTransformCrop, and set to false by setCrop.
-    bool mCropNeedsTransform;
-
     // mScalingMode is the scaling mode that will be used for the next
     // buffers that get queued. It is set by calling setScalingMode.
     int mScalingMode;
index 2d7c89b..9b6bc38 100644 (file)
@@ -495,9 +495,9 @@ status_t BufferQueue::dequeueBuffer(int *outBuf, uint32_t w, uint32_t h,
         // synchronizing access to it.  It's too late at this point to abort the
         // dequeue operation.
         if (result == EGL_FALSE) {
-            ALOGE("dequeueBuffer: error waiting for fence: %#x", eglGetError());
+            ST_LOGE("dequeueBuffer: error waiting for fence: %#x", eglGetError());
         } else if (result == EGL_TIMEOUT_EXPIRED_KHR) {
-            ALOGE("dequeueBuffer: timeout waiting for fence");
+            ST_LOGE("dequeueBuffer: timeout waiting for fence");
         }
         eglDestroySyncKHR(dpy, fence);
     }
index 5d3bd1a..36a81a6 100644 (file)
@@ -76,7 +76,6 @@ void SurfaceTextureClient::init() {
     mReqUsage = 0;
     mTimestamp = NATIVE_WINDOW_TIMESTAMP_AUTO;
     mCrop.clear();
-    mCropNeedsTransform = false;
     mScalingMode = NATIVE_WINDOW_SCALING_MODE_FREEZE;
     mTransform = 0;
     mDefaultWidth = 0;
@@ -238,25 +237,9 @@ int SurfaceTextureClient::queueBuffer(android_native_buffer_t* buffer) {
         return i;
     }
 
-    Rect crop(mCrop);
-    if (mCropNeedsTransform) {
-        // The crop rect was specified in the post-transform coordinate space,
-        // so we need to transform that rect by the inverse of mTransform to
-        // put it into the buffer pixel space before queuing it.
-        uint32_t invTransform = mTransform;
-        int32_t width = buffer->width;
-        int32_t height = buffer->height;
-        if (mTransform & NATIVE_WINDOW_TRANSFORM_ROT_90) {
-            invTransform ^= NATIVE_WINDOW_TRANSFORM_FLIP_V |
-                    NATIVE_WINDOW_TRANSFORM_FLIP_H;
-            width = buffer->height;
-            height = buffer->width;
-        }
-        crop = mCrop.transform(invTransform, width, height);
-    }
-
     // Make sure the crop rectangle is entirely inside the buffer.
-    crop.intersect(Rect(buffer->width, buffer->height), &crop);
+    Rect crop;
+    mCrop.intersect(Rect(buffer->width, buffer->height), &crop);
 
     ISurfaceTexture::QueueBufferOutput output;
     ISurfaceTexture::QueueBufferInput input(timestamp, crop, mScalingMode,
@@ -341,9 +324,6 @@ int SurfaceTextureClient::perform(int operation, va_list args)
     case NATIVE_WINDOW_SET_CROP:
         res = dispatchSetCrop(args);
         break;
-    case NATIVE_WINDOW_SET_POST_TRANSFORM_CROP:
-        res = dispatchSetPostTransformCrop(args);
-        break;
     case NATIVE_WINDOW_SET_BUFFER_COUNT:
         res = dispatchSetBufferCount(args);
         break;
@@ -407,11 +387,6 @@ int SurfaceTextureClient::dispatchSetCrop(va_list args) {
     return setCrop(reinterpret_cast<Rect const*>(rect));
 }
 
-int SurfaceTextureClient::dispatchSetPostTransformCrop(va_list args) {
-    android_native_rect_t const* rect = va_arg(args, android_native_rect_t*);
-    return setPostTransformCrop(reinterpret_cast<Rect const*>(rect));
-}
-
 int SurfaceTextureClient::dispatchSetBufferCount(va_list args) {
     size_t bufferCount = va_arg(args, size_t);
     return setBufferCount(bufferCount);
@@ -501,7 +476,6 @@ int SurfaceTextureClient::disconnect(int api) {
         mReqHeight = 0;
         mReqUsage = 0;
         mCrop.clear();
-        mCropNeedsTransform = false;
         mScalingMode = NATIVE_WINDOW_SCALING_MODE_FREEZE;
         mTransform = 0;
         if (api == NATIVE_WINDOW_API_CPU) {
@@ -535,27 +509,6 @@ int SurfaceTextureClient::setCrop(Rect const* rect)
 
     Mutex::Autolock lock(mMutex);
     mCrop = realRect;
-    mCropNeedsTransform = false;
-    return NO_ERROR;
-}
-
-int SurfaceTextureClient::setPostTransformCrop(Rect const* rect)
-{
-    ATRACE_CALL();
-
-    Rect realRect;
-    if (rect == NULL || rect->isEmpty()) {
-        realRect.clear();
-    } else {
-        realRect = *rect;
-    }
-
-    ALOGV("SurfaceTextureClient::setPostTransformCrop rect=[%d %d %d %d]",
-            realRect.left, realRect.top, realRect.right, realRect.bottom);
-
-    Mutex::Autolock lock(mMutex);
-    mCrop = realRect;
-    mCropNeedsTransform = true;
     return NO_ERROR;
 }
 
index 8546fb9..7d8dd33 100644 (file)
@@ -442,50 +442,6 @@ TEST_F(SurfaceTextureClientTest, SurfaceTextureSyncModeMinUndequeued) {
     ASSERT_EQ(OK, mANW->cancelBuffer(mANW.get(), buf[2]));
 }
 
-TEST_F(SurfaceTextureClientTest, SetPostTransformCropUntransforms) {
-    android_native_rect_t rect = {1, 5, 4, 14};
-    native_window_set_post_transform_crop(mANW.get(), &rect);
-
-    uint32_t xforms[] = {
-        HAL_TRANSFORM_FLIP_H,
-        HAL_TRANSFORM_FLIP_V,
-        HAL_TRANSFORM_ROT_90,
-        HAL_TRANSFORM_ROT_180,
-        HAL_TRANSFORM_ROT_270,
-    };
-
-    Rect expectedRects[] = {
-        Rect(4, 5, 7, 14), // HAL_TRANSFORM_FLIP_H
-        Rect(1, 2, 4, 11), // HAL_TRANSFORM_FLIP_V
-        Rect(5, 4, 14, 7), // HAL_TRANSFORM_ROT_90
-        Rect(4, 2, 7, 11), // HAL_TRANSFORM_ROT_180
-        Rect(2, 1, 11, 4), // HAL_TRANSFORM_ROT_270
-    };
-
-    for (size_t i = 0; i < sizeof(xforms)/sizeof(xforms[0]); i++) {
-        SCOPED_TRACE(String8::format("xform=%#x", xforms[i]).string());
-
-        int w = 8, h = 16;
-        if (xforms[i] & HAL_TRANSFORM_ROT_90) {
-            w = 16;
-            h = 8;
-        }
-        ASSERT_EQ(OK, native_window_set_buffers_transform(mANW.get(), xforms[i]));
-        ASSERT_EQ(OK, native_window_set_buffers_dimensions(mANW.get(), w, h));
-
-        android_native_buffer_t* buf;
-        ASSERT_EQ(OK, mANW->dequeueBuffer(mANW.get(), &buf));
-        ASSERT_EQ(OK, mANW->queueBuffer(mANW.get(), buf));
-        ASSERT_EQ(OK, mST->updateTexImage());
-
-        Rect crop = mST->getCurrentCrop();
-        EXPECT_EQ(expectedRects[i].left, crop.left);
-        EXPECT_EQ(expectedRects[i].top, crop.top);
-        EXPECT_EQ(expectedRects[i].right, crop.right);
-        EXPECT_EQ(expectedRects[i].bottom, crop.bottom);
-    }
-}
-
 TEST_F(SurfaceTextureClientTest, SetCropCropsCrop) {
     android_native_rect_t rect = {-2, -13, 40, 18};
     native_window_set_crop(mANW.get(), &rect);