diff options
| -rw-r--r-- | services/surfaceflinger/SurfaceFlinger.cpp | 6 | ||||
| -rw-r--r-- | services/surfaceflinger/SurfaceFlinger.h | 7 |
2 files changed, 12 insertions, 1 deletions
diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp index 811c660951..37b2c2ae58 100644 --- a/services/surfaceflinger/SurfaceFlinger.cpp +++ b/services/surfaceflinger/SurfaceFlinger.cpp @@ -2364,6 +2364,10 @@ void SurfaceFlinger::postComposition() } } +FloatRect SurfaceFlinger::getLayerClipBoundsForDisplay(const DisplayDevice& displayDevice) const { + return displayDevice.getViewport().toFloatRect(); +} + void SurfaceFlinger::computeLayerBounds() { for (const auto& pair : mDisplays) { const auto& displayDevice = pair.second; @@ -2374,7 +2378,7 @@ void SurfaceFlinger::computeLayerBounds() { continue; } - layer->computeBounds(displayDevice->getViewport().toFloatRect(), ui::Transform(), + layer->computeBounds(getLayerClipBoundsForDisplay(*displayDevice), ui::Transform(), 0.f /* shadowRadius */); } } diff --git a/services/surfaceflinger/SurfaceFlinger.h b/services/surfaceflinger/SurfaceFlinger.h index 5a8153ef0e..6e1d865f0a 100644 --- a/services/surfaceflinger/SurfaceFlinger.h +++ b/services/surfaceflinger/SurfaceFlinger.h @@ -644,6 +644,13 @@ protected: REQUIRES(mStateLock); virtual void commitTransactionLocked(); + // Used internally by computeLayerBounds() to gets the clip rectangle to use for the + // root layers on a particular display in layer-coordinate space. The + // layers (and effectively their children) will be clipped against this + // rectangle. The base behavior is to clip to the visible region of the + // display. + virtual FloatRect getLayerClipBoundsForDisplay(const DisplayDevice&) const; + private: /* ------------------------------------------------------------------------ * Layer management |