From 65dc7eeff096c3b909d7932c8a94e61c31f76831 Mon Sep 17 00:00:00 2001 From: Dan Stoza Date: Tue, 9 Jun 2015 16:44:40 -0700 Subject: [PATCH] SF: Swap w/h when capturing rotated screenshots Swaps width and height when capturing a screenshot that is rotated by 90 or 270 degrees. Bug: 8433742 Change-Id: Ibf0b604f541e3cc271e56fe0ad04dc366beb5d79 (cherry picked from commit 3502416204d9dbd905012ee586d8bd145323809f) --- services/surfaceflinger/SurfaceFlinger.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp index 4f1964621..2e6d2b6cf 100644 --- a/services/surfaceflinger/SurfaceFlinger.cpp +++ b/services/surfaceflinger/SurfaceFlinger.cpp @@ -3266,8 +3266,12 @@ status_t SurfaceFlinger::captureScreenImplLocked( ATRACE_CALL(); // get screen geometry - const uint32_t hw_w = hw->getWidth(); - const uint32_t hw_h = hw->getHeight(); + uint32_t hw_w = hw->getWidth(); + uint32_t hw_h = hw->getHeight(); + + if (rotation & Transform::ROT_90) { + std::swap(hw_w, hw_h); + } if ((reqWidth > hw_w) || (reqHeight > hw_h)) { ALOGE("size mismatch (%d, %d) > (%d, %d)",