Udo Richter wrote: > Webmaster wrote: > >> why is "#define MAXNUMWINDOWS 7" defined in dvbosd.c >> and "#define MAXOSDAREAS 16" in osd.h ? >> Its not the same and only 7 areas possible to create ?? >> Its a limit to the OSD/card ? > > > MAXNUMWINDOWS=7 is the maximum number of areas that FF DVB cards > support. VDR however uses a more abstract interface that supports up to > MAXOSDAREAS=16 different areas, provide that the OSD device can handle > them. To know the real number of supported areas, you have to do several > calls to CanHendleAreas. > > Unfortunately, VDR does not enforce MAXOSDAREAS itself, so you may be > able to call SetAreas(...,100) on a very flexible OSD device, which will > probably lead to a solid crash due to non-handled cOsd internal buffer > overruns. > > Cheers, > > Udo That's what the CanHandleAreas() function is for. cOsd::SetAreas() calls the CanHandleAreas() of the derived cOsd class, and in there cDvbOsd checks wheter (NumAreas > MAXNUMWINDOWS). Klaus