Mailing List archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[vdr] BUGFIX: cOsd::CanHandleAreas()
Hi,
CanHandleAreas() didn't check the alignment of the last area. Basically, the
inner for loop was closed to late.
To have overlap detection work properly and to return reasonable error codes
to the user, CanHandleAreas() now first checks the alignment of all areas and
performs overlap detection afterwards.
Bye.
--
Dipl.-Inform. (FH) Reinhard Nissl
mailto:rnissl@gmx.de
--- vdr-1.3.11-orig/osd.c 2004-06-15 22:29:42.000000000 +0200
+++ vdr-1.3.11/osd.c 2004-06-20 21:05:51.791081842 +0200
@@ -603,13 +603,17 @@
eOsdError cOsd::CanHandleAreas(const tArea *Areas, int NumAreas)
{
for (int i = 0; i < NumAreas; i++) {
+ if (Areas[i].x1 > Areas[i].x2 || Areas[i].y1 > Areas[i].y2 || Areas[i].x1 < 0 || Areas[i].y1 < 0)
+ return oeWrongAlignment;
+ }
+
+ for (int i = 0; i < NumAreas - 1; i++) {
for (int j = i + 1; j < NumAreas; j++) {
if (Areas[i].Intersects(Areas[j]))
- return oeAreasOverlap;
- if (Areas[i].x1 > Areas[i].x2 || Areas[i].y1 > Areas[i].y2 || Areas[i].x1 < 0 || Areas[i].y1 < 0)
- return oeWrongAlignment;
- }
- }
+ return oeAreasOverlap;
+ }
+ }
+
return oeOk;
}
Home |
Main Index |
Thread Index