Fixed cOsdMenu::Display() in case the menu size has changed

This commit is contained in:
Klaus Schmidinger 2009-06-01 11:57:46 +02:00
parent 6f912d247f
commit 78d2fd3d0e
3 changed files with 5 additions and 1 deletions

View File

@ -1220,6 +1220,7 @@ Reinhard Nissl <rnissl@gmx.de>
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 <richard_robson@beeb.net>
for reporting freezing replay if a timer starts while in Transfer Mode from the

View File

@ -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).

View File

@ -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)