diff --git a/include/gui/SurfaceTextureClient.h b/include/gui/SurfaceTextureClient.h index b11d57271..8fa85b67e 100644 --- a/include/gui/SurfaceTextureClient.h +++ b/include/gui/SurfaceTextureClient.h @@ -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; diff --git a/libs/gui/BufferQueue.cpp b/libs/gui/BufferQueue.cpp index 2d7c89b84..9b6bc38ec 100644 --- a/libs/gui/BufferQueue.cpp +++ b/libs/gui/BufferQueue.cpp @@ -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); } diff --git a/libs/gui/SurfaceTextureClient.cpp b/libs/gui/SurfaceTextureClient.cpp index 5d3bd1a1c..36a81a666 100644 --- a/libs/gui/SurfaceTextureClient.cpp +++ b/libs/gui/SurfaceTextureClient.cpp @@ -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)); } -int SurfaceTextureClient::dispatchSetPostTransformCrop(va_list args) { - android_native_rect_t const* rect = va_arg(args, android_native_rect_t*); - return setPostTransformCrop(reinterpret_cast(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; } diff --git a/libs/gui/tests/SurfaceTextureClient_test.cpp b/libs/gui/tests/SurfaceTextureClient_test.cpp index 8546fb94b..7d8dd3344 100644 --- a/libs/gui/tests/SurfaceTextureClient_test.cpp +++ b/libs/gui/tests/SurfaceTextureClient_test.cpp @@ -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);