diff options
author | Jamie Gennis <jgennis@google.com> | 2012-04-17 15:52:49 -0700 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2012-04-17 15:52:49 -0700 |
commit | 2efa4b2bb0128cd65ea8ade46f46bacaf72c194f (patch) | |
tree | 7f3fe9bc1e530e9300e6547ce0757f80c93c7e0b /libs | |
parent | fe668f468252b8824f777ffd659e5d800283a9a1 (diff) | |
parent | 695e331f01b136155b1559b3c878b7c5bb631bc1 (diff) | |
download | frameworks_native-2efa4b2bb0128cd65ea8ade46f46bacaf72c194f.zip frameworks_native-2efa4b2bb0128cd65ea8ade46f46bacaf72c194f.tar.gz frameworks_native-2efa4b2bb0128cd65ea8ade46f46bacaf72c194f.tar.bz2 |
Merge changes Id79430f9,I541d3046
* changes:
BufferQueue: check before tracing buffer index
SurfaceTexture: shrink all sides when cropping
Diffstat (limited to 'libs')
-rw-r--r-- | libs/gui/BufferQueue.cpp | 9 | ||||
-rw-r--r-- | libs/gui/SurfaceTexture.cpp | 32 | ||||
-rw-r--r-- | libs/gui/tests/SurfaceTextureClient_test.cpp | 6 |
3 files changed, 19 insertions, 28 deletions
diff --git a/libs/gui/BufferQueue.cpp b/libs/gui/BufferQueue.cpp index 01d08b7..ece0494 100644 --- a/libs/gui/BufferQueue.cpp +++ b/libs/gui/BufferQueue.cpp @@ -57,9 +57,12 @@ #define ST_LOGE(x, ...) ALOGE("[%s] "x, mConsumerName.string(), ##__VA_ARGS__) #define ATRACE_BUFFER_INDEX(index) \ - char ___traceBuf[1024]; \ - snprintf(___traceBuf, 1024, "%s: %d", mConsumerName.string(), (index)); \ - android::ScopedTrace ___bufTracer(ATRACE_TAG, ___traceBuf); + if (ATRACE_ENABLED()) { \ + char ___traceBuf[1024]; \ + snprintf(___traceBuf, 1024, "%s: %d", mConsumerName.string(), \ + (index)); \ + android::ScopedTrace ___bufTracer(ATRACE_TAG, ___traceBuf); \ + } namespace android { diff --git a/libs/gui/SurfaceTexture.cpp b/libs/gui/SurfaceTexture.cpp index 0fa9ca1..ed1ea4e 100644 --- a/libs/gui/SurfaceTexture.cpp +++ b/libs/gui/SurfaceTexture.cpp @@ -542,28 +542,16 @@ void SurfaceTexture::computeCurrentTransformMatrix() { // decoder, camera, etc.) would simply not use a crop rectangle (or at // least not tell the framework about it) so that the GPU can do the // correct edge behavior. - int xshrink = 0, yshrink = 0; - if (mCurrentCrop.left > 0) { - tx = float(mCurrentCrop.left + 1) / float(buf->getWidth()); - xshrink++; - } else { - tx = 0.0f; - } - if (mCurrentCrop.right < int32_t(buf->getWidth())) { - xshrink++; - } - if (mCurrentCrop.bottom < int32_t(buf->getHeight())) { - ty = (float(buf->getHeight() - mCurrentCrop.bottom) + 1.0f) / - float(buf->getHeight()); - yshrink++; - } else { - ty = 0.0f; - } - if (mCurrentCrop.top > 0) { - yshrink++; - } - sx = float(mCurrentCrop.width() - xshrink) / float(buf->getWidth()); - sy = float(mCurrentCrop.height() - yshrink) / float(buf->getHeight()); + const float shrinkAmount = 1.0f; // the amount that each edge is shrunk + + tx = (float(mCurrentCrop.left) + shrinkAmount) / + float(buf->getWidth()); + ty = (float(buf->getHeight() - mCurrentCrop.bottom) + + shrinkAmount) / float(buf->getHeight()); + sx = (float(mCurrentCrop.width()) - (2.0f * shrinkAmount)) / + float(buf->getWidth()); + sy = (float(mCurrentCrop.height()) - (2.0f * shrinkAmount)) / + float(buf->getHeight()); } else { tx = 0.0f; ty = 0.0f; diff --git a/libs/gui/tests/SurfaceTextureClient_test.cpp b/libs/gui/tests/SurfaceTextureClient_test.cpp index aa1f94e..b576ca5 100644 --- a/libs/gui/tests/SurfaceTextureClient_test.cpp +++ b/libs/gui/tests/SurfaceTextureClient_test.cpp @@ -580,13 +580,13 @@ TEST_F(SurfaceTextureClientTest, GetTransformMatrixSucceedsAfterFreeingBuffersWi // This accounts for the 1 texel shrink for each edge that's included in the // transform matrix to avoid texturing outside the crop region. - EXPECT_EQ(.5f, mtx[0]); + EXPECT_EQ(.375f, mtx[0]); EXPECT_EQ(0.f, mtx[1]); EXPECT_EQ(0.f, mtx[2]); EXPECT_EQ(0.f, mtx[3]); EXPECT_EQ(0.f, mtx[4]); - EXPECT_EQ(-.5f, mtx[5]); + EXPECT_EQ(-.375f, mtx[5]); EXPECT_EQ(0.f, mtx[6]); EXPECT_EQ(0.f, mtx[7]); @@ -595,7 +595,7 @@ TEST_F(SurfaceTextureClientTest, GetTransformMatrixSucceedsAfterFreeingBuffersWi EXPECT_EQ(1.f, mtx[10]); EXPECT_EQ(0.f, mtx[11]); - EXPECT_EQ(0.f, mtx[12]); + EXPECT_EQ(.125f, mtx[12]); EXPECT_EQ(.5f, mtx[13]); EXPECT_EQ(0.f, mtx[14]); EXPECT_EQ(1.f, mtx[15]); |