summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--HISTORY2
-rw-r--r--osd.c6
2 files changed, 5 insertions, 3 deletions
diff --git a/HISTORY b/HISTORY
index 85bd1709..bb2919f0 100644
--- a/HISTORY
+++ b/HISTORY
@@ -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.
diff --git a/osd.c b/osd.c
index 579c54db..524700ae 100644
--- a/osd.c
+++ b/osd.c
@@ -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));