diff options
Diffstat (limited to 'libs')
-rw-r--r-- | libs/gui/SurfaceTextureClient.cpp | 17 | ||||
-rw-r--r-- | libs/surfaceflinger_client/Surface.cpp | 15 |
2 files changed, 21 insertions, 11 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) diff --git a/libs/surfaceflinger_client/Surface.cpp b/libs/surfaceflinger_client/Surface.cpp index e21bab7..1e9bd74 100644 --- a/libs/surfaceflinger_client/Surface.cpp +++ b/libs/surfaceflinger_client/Surface.cpp @@ -827,13 +827,15 @@ int Surface::disconnect(int api) int Surface::crop(Rect const* rect) { - // empty/invalid rects are not allowed - if (rect->isEmpty()) - return BAD_VALUE; - Mutex::Autolock _l(mSurfaceLock); // TODO: validate rect size - mNextBufferCrop = *rect; + + if (rect == NULL || rect->isEmpty()) { + mNextBufferCrop = Rect(0,0); + } else { + mNextBufferCrop = *rect; + } + return NO_ERROR; } @@ -884,6 +886,9 @@ int Surface::setBuffersGeometry(int w, int h, int format) // EGLConfig validation. mFormat = format; } + + mNextBufferCrop = Rect(0,0); + return NO_ERROR; } |