The width and height of the OSD are now limited to the actual maximum dimensions of the output device

This commit is contained in:
Klaus Schmidinger 2015-09-10 14:18:38 +02:00
parent a384d14f92
commit 4e46d2bb3b
2 changed files with 5 additions and 3 deletions

View File

@ -8818,3 +8818,5 @@ Video Disk Recorder Revision History
- Fixed a possible stack overflow in cListBase::Sort() (thanks to Oliver Endriss).
- Changed the description of the --chartab option in the INSTALL file to refer to
"DVB SI table strings" instead of "EPG data".
- The width and height of the OSD are now limited to the actual maximum dimensions
of the output device, taking into account the top and left offset.

6
osd.c
View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
* $Id: osd.c 4.2 2015/03/25 08:57:05 kls Exp $
* $Id: osd.c 4.3 2015/09/10 14:12:06 kls Exp $
*/
#include "osd.h"
@ -2042,8 +2042,8 @@ void cOsdProvider::UpdateOsdSize(bool Force)
if (Width != oldWidth || Height != oldHeight || !DoubleEqual(Aspect, oldAspect) || Force) {
Setup.OSDLeft = int(round(Width * Setup.OSDLeftP));
Setup.OSDTop = int(round(Height * Setup.OSDTopP));
Setup.OSDWidth = int(round(Width * Setup.OSDWidthP)) & ~0x07; // OSD width must be a multiple of 8
Setup.OSDHeight = int(round(Height * Setup.OSDHeightP));
Setup.OSDWidth = min(Width - Setup.OSDLeft, int(round(Width * Setup.OSDWidthP))) & ~0x07; // OSD width must be a multiple of 8
Setup.OSDHeight = min(Height - Setup.OSDTop, int(round(Height * Setup.OSDHeightP)));
Setup.OSDAspect = Aspect;
Setup.FontOsdSize = int(round(Height * Setup.FontOsdSizeP));
Setup.FontFixSize = int(round(Height * Setup.FontFixSizeP));