summaryrefslogtreecommitdiff
path: root/libs/gui/SurfaceTextureClient.cpp
diff options
context:
space:
mode:
author Jamie Gennis <jgennis@google.com> 2011-01-28 18:21:54 -0800
committer Jamie Gennis <jgennis@google.com> 2011-01-28 18:21:54 -0800
commit2ece4cdc3fd0f8a45a889c711dba7165729e8ca5 (patch)
treea76c7f3eed692edcce369a6ae198202fdd1c7500 /libs/gui/SurfaceTextureClient.cpp
parent0982dc6488a921d9d54d23b9180a9acf33c61526 (diff)
Reset ANativeWindow crop on buffer geometry changes.
This changes the ANativeWindow API and the two implementations to reset the window's crop rectangle to be uncropped when the window's buffer geometry is changed. Bug: 3359604 Change-Id: I64283dc8382ae687787ec0bebe6a5d5b4a0dcd6b
Diffstat (limited to 'libs/gui/SurfaceTextureClient.cpp')
-rw-r--r--libs/gui/SurfaceTextureClient.cpp17
1 files changed, 11 insertions, 6 deletions
diff --git a/libs/gui/SurfaceTextureClient.cpp b/libs/gui/SurfaceTextureClient.cpp
index c0e4e0f56334..50cbdb8f3581 100644
--- a/libs/gui/SurfaceTextureClient.cpp
+++ b/libs/gui/SurfaceTextureClient.cpp
@@ -238,13 +238,15 @@ int SurfaceTextureClient::setCrop(Rect const* rect)
LOGV("SurfaceTextureClient::setCrop");
Mutex::Autolock lock(mMutex);
- // empty/invalid rects are not allowed
- if (rect->isEmpty())
- return BAD_VALUE;
+ Rect realRect;
+ if (rect == NULL || rect->isEmpty()) {
+ realRect = Rect(0, 0);
+ } else {
+ realRect = *rect;
+ }
status_t err = mSurfaceTexture->setCrop(*rect);
- LOGE_IF(err, "ISurfaceTexture::setCrop(...) returned %s",
- strerror(-err));
+ LOGE_IF(err, "ISurfaceTexture::setCrop(...) returned %s", strerror(-err));
return err;
}
@@ -280,7 +282,10 @@ int SurfaceTextureClient::setBuffersGeometry(int w, int h, int format)
mReqHeight = h;
mReqFormat = format;
- return NO_ERROR;
+ status_t err = mSurfaceTexture->setCrop(Rect(0, 0));
+ LOGE_IF(err, "ISurfaceTexture::setCrop(...) returned %s", strerror(-err));
+
+ return err;
}
int SurfaceTextureClient::setBuffersTransform(int transform)