From 4ceff3d5efd27c164788bb2b3f0fd17c691a0204 Mon Sep 17 00:00:00 2001 From: Mathias Agopian Date: Wed, 21 Aug 2013 15:23:15 -0700 Subject: [PATCH] screenshot layers wouldn't work in some cases specifically when the display size and the screenshot window size didn't match, the buffer would be rejected. We simply fix this by setting the scalling mode to "SCALE_TO_WINDOW". Bug: 9992306 Change-Id: Ib821767899af330bb70d3cbbfa7d41b02794a075 --- services/surfaceflinger/Layer.cpp | 2 ++ services/surfaceflinger/SurfaceFlinger.cpp | 1 + 2 files changed, 3 insertions(+) diff --git a/services/surfaceflinger/Layer.cpp b/services/surfaceflinger/Layer.cpp index d88f6d0dda..f867e86bc8 100644 --- a/services/surfaceflinger/Layer.cpp +++ b/services/surfaceflinger/Layer.cpp @@ -991,6 +991,8 @@ Region Layer::latchBuffer(bool& recomputeVisibleRegions) if (front.active.w != bufWidth || front.active.h != bufHeight) { // reject this buffer + //ALOGD("rejecting buffer: bufWidth=%d, bufHeight=%d, front.active.{w=%d, h=%d}", + // bufWidth, bufHeight, front.active.w, front.active.h); return true; } } diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp index 3058af7afc..a15114213a 100644 --- a/services/surfaceflinger/SurfaceFlinger.cpp +++ b/services/surfaceflinger/SurfaceFlinger.cpp @@ -2769,6 +2769,7 @@ status_t SurfaceFlinger::captureScreenImplLocked( int err = 0; err = native_window_set_buffers_dimensions(window, reqWidth, reqHeight); + err |= native_window_set_scaling_mode(window, NATIVE_WINDOW_SCALING_MODE_SCALE_TO_WINDOW); err |= native_window_set_buffers_format(window, HAL_PIXEL_FORMAT_RGBA_8888); err |= native_window_set_usage(window, usage); -- 2.11.0