diff options
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 |
commit | 2ece4cdc3fd0f8a45a889c711dba7165729e8ca5 (patch) | |
tree | a76c7f3eed692edcce369a6ae198202fdd1c7500 /libs/gui/SurfaceTextureClient.cpp | |
parent | 0982dc6488a921d9d54d23b9180a9acf33c61526 (diff) | |
download | frameworks_base-2ece4cdc3fd0f8a45a889c711dba7165729e8ca5.zip frameworks_base-2ece4cdc3fd0f8a45a889c711dba7165729e8ca5.tar.gz frameworks_base-2ece4cdc3fd0f8a45a889c711dba7165729e8ca5.tar.bz2 |
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.cpp | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/libs/gui/SurfaceTextureClient.cpp b/libs/gui/SurfaceTextureClient.cpp index c0e4e0f..50cbdb8 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) |