From 78d2fd3d0e2a69c27581afe710f5598862a750be Mon Sep 17 00:00:00 2001 From: Klaus Schmidinger Date: Mon, 1 Jun 2009 11:57:46 +0200 Subject: [PATCH] Fixed cOsdMenu::Display() in case the menu size has changed --- CONTRIBUTORS | 1 + HISTORY | 2 ++ osdbase.c | 3 ++- 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/CONTRIBUTORS b/CONTRIBUTORS index 99463b7b..6483964b 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -1220,6 +1220,7 @@ Reinhard Nissl for reporting a memory leak when reaching the end of a recording during replay for reporting a call to close(-1) in cUnbufferedFile::Close() for reporting a possible problem in handling the length of DiSEqC command sequences + for fixing cOsdMenu::Display() in case the menu size has changed Richard Robson for reporting freezing replay if a timer starts while in Transfer Mode from the diff --git a/HISTORY b/HISTORY index bfc46413..0add2d5b 100644 --- a/HISTORY +++ b/HISTORY @@ -6118,3 +6118,5 @@ Video Disk Recorder Revision History - Added a workaround for the broken linux-dvb driver header files (based on a patch from Tobias Grimm). - Fixed handling the length of DiSEqC command sequences (reported by Reinhard Nissl). +- Fixed cOsdMenu::Display() in case the menu size has changed (thanks to + Reinhard Nissl). diff --git a/osdbase.c b/osdbase.c index 0d9b6d85..9b59c050 100644 --- a/osdbase.c +++ b/osdbase.c @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: osdbase.c 1.32 2008/02/17 11:33:04 kls Exp $ + * $Id: osdbase.c 2.1 2009/06/01 11:54:50 kls Exp $ */ #include "osdbase.h" @@ -217,6 +217,7 @@ void cOsdMenu::Display(void) } if (current < 0) current = 0; // just for safety - there HAS to be a current item! + first = min(first, max(0, count - displayMenuItems)); // in case the menu size has changed if (current - first >= displayMenuItems || current < first) { first = current - displayMenuItems / 2; if (first + displayMenuItems > count)