X-Git-Url: http://code.vuplus.com/gitweb/?a=blobdiff_plain;f=lib%2Fgdi%2Fregion.cpp;h=d75221fe882f6e2794be6555e6c94a29c2eaad8f;hb=c1311444ea249a45d0eceefa15d77fce410a54da;hp=cbac53f8f2d9b1abc6f868164a762c2863fb7817;hpb=3bad22d5566624804a73b3791980bab2d84c8266;p=vuplus_dvbapp diff --git a/lib/gdi/region.cpp b/lib/gdi/region.cpp index cbac53f..d75221f 100644 --- a/lib/gdi/region.cpp +++ b/lib/gdi/region.cpp @@ -26,10 +26,11 @@ gRegion::gRegion(const eRect &rect) : extends(rect) { - rects.push_back(rect); + if (rect.valid() && !rect.empty()) + rects.push_back(rect); } -gRegion::gRegion() +gRegion::gRegion() : extends(eRect::emptyRect()) { } @@ -265,8 +266,8 @@ void gRegion::regionOp(const gRegion ®1, const gRegion ®2, int opcode, int bot = min(r1->y2, r2y1); if (top != bot) { curBand = rects.size(); - appendNonO(r1, r1BandEnd, top, bot); - coalesce(prevBand, curBand); + appendNonO(r1, r1BandEnd, top, bot); + coalesce(prevBand, curBand); } } ytop = r2y1; @@ -319,22 +320,26 @@ void gRegion::regionOp(const gRegion ®1, const gRegion ®2, int opcode, int coalesce(prevBand, curBand); AppendRegions(r2BandEnd, r2End); } + extends = eRect(); - for (int a=0; a