SF: Fix invalid reduction of transparent region from a layer.

Reduce transparent region from a layer only if the transparent
region has valid intersection with the layer. Otherwise, reducing
a transparent region lying completely outside of the layer leads to
invalid sourcecrop values for the layer.

Change-Id: Iee9ba53a8072c21c9ba8a6d58cb14ca30f8600ba
CRs-Fixed: 620973
This commit is contained in:
radhakrishna 2014-02-21 10:01:08 +05:30 committed by Steve Kondik
parent bea57f312d
commit 5934c292ab

View File

@ -326,7 +326,9 @@ Rect Layer::reduce(const Rect& win, const Region& exclude) const{
if (CC_LIKELY(exclude.isEmpty())) { if (CC_LIKELY(exclude.isEmpty())) {
return win; return win;
} }
if (exclude.isRect()) { Rect tmp;
win.intersect(exclude.getBounds(), &tmp);
if (exclude.isRect() && !tmp.isEmpty()) {
return win.reduce(exclude.getBounds()); return win.reduce(exclude.getBounds());
} }
return Region(win).subtract(exclude).getBounds(); return Region(win).subtract(exclude).getBounds();