diff --git a/services/surfaceflinger/Layer.cpp b/services/surfaceflinger/Layer.cpp index 93e6bda7c..6dd8bad32 100644 --- a/services/surfaceflinger/Layer.cpp +++ b/services/surfaceflinger/Layer.cpp @@ -326,7 +326,9 @@ Rect Layer::reduce(const Rect& win, const Region& exclude) const{ if (CC_LIKELY(exclude.isEmpty())) { return win; } - if (exclude.isRect()) { + Rect tmp; + win.intersect(exclude.getBounds(), &tmp); + if (exclude.isRect() && !tmp.isEmpty()) { return win.reduce(exclude.getBounds()); } return Region(win).subtract(exclude).getBounds();