OSDN Git Service

screenshot layers wouldn't work in some cases
authorMathias Agopian <mathias@google.com>
Wed, 21 Aug 2013 22:23:15 +0000 (15:23 -0700)
committerMathias Agopian <mathias@google.com>
Wed, 21 Aug 2013 22:25:50 +0000 (15:25 -0700)
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
services/surfaceflinger/SurfaceFlinger.cpp

index d88f6d0..f867e86 100644 (file)
@@ -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;
                     }
                 }
index 3058af7..a151142 100644 (file)
@@ -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);