diff options
| -rw-r--r-- | CONTRIBUTORS | 4 | ||||
| -rw-r--r-- | HISTORY | 4 | ||||
| -rw-r--r-- | dvbdevice.c | 58 | 
3 files changed, 39 insertions, 27 deletions
| diff --git a/CONTRIBUTORS b/CONTRIBUTORS index 80b1d1d6..13309162 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -2450,3 +2450,7 @@ Marcel Unbehaun <frostworks@gmx.de>  Günter Niedermeier <linuxtv@ncs-online.de>   for reporting a problem with file I/O overhead during recording in TS format + +Martin Neuditschko <yosuke.tomoe@gmx.net> + for reporting a problem with error messages from cDvbDevice::GetVideoSize() + on systems with no real primary replay device @@ -6075,7 +6075,7 @@ Video Disk Recorder Revision History  - cFrameDetector::Analyze() now syncs on the TS packet sync bytes (thanks to    Oliver Endriss for reporting broken index generation after a buffer overflow). -2009-05-08: Version 1.7.8 +2009-05-10: Version 1.7.8  - Fixed a typo in aspect ratio 2.21:1 (reported by Reinhard Nissl).  - The name of the function cDevice::GetVideoSize() wasn't very well chosen @@ -6089,3 +6089,5 @@ Video Disk Recorder Revision History    to Oliver Endriss).  - Increased MAXOSDHEIGHT to 1200 (suggested by Nicolas Huillard).  - Removed limitation to PAL resolution from SPU handling. +- Checking fd_video in cDvbDevice::GetVideoSize() to avoid error messages on +  systems with no real primary replay device (reported by Martin Neuditschko). diff --git a/dvbdevice.c b/dvbdevice.c index 43bc9d5b..7b5b5a01 100644 --- a/dvbdevice.c +++ b/dvbdevice.c @@ -4,7 +4,7 @@   * See the main source file 'vdr.c' for copyright information and   * how to reach the author.   * - * $Id: dvbdevice.c 2.16 2009/05/08 14:54:27 kls Exp $ + * $Id: dvbdevice.c 2.17 2009/05/10 13:13:04 kls Exp $   */  #include "dvbdevice.h" @@ -736,45 +736,51 @@ void cDvbDevice::SetVideoFormat(bool VideoFormat16_9)  eVideoSystem cDvbDevice::GetVideoSystem(void)  {    eVideoSystem VideoSystem = vsPAL; -  video_size_t vs; -  if (ioctl(fd_video, VIDEO_GET_SIZE, &vs) == 0) { -     if (vs.h == 480 || vs.h == 240) -        VideoSystem = vsNTSC; +  if (fd_video >= 0) { +     video_size_t vs; +     if (ioctl(fd_video, VIDEO_GET_SIZE, &vs) == 0) { +        if (vs.h == 480 || vs.h == 240) +           VideoSystem = vsNTSC; +        } +     else +        LOG_ERROR;       } -  else -     LOG_ERROR;    return VideoSystem;  }  void cDvbDevice::GetVideoSize(int &Width, int &Height, eVideoAspect &Aspect)  { -  video_size_t vs; -  if (ioctl(fd_video, VIDEO_GET_SIZE, &vs) == 0) { -     Width = vs.w; -     Height = vs.h; -     Aspect = eVideoAspect(vs.aspect_ratio); -     return; +  if (fd_video >= 0) { +     video_size_t vs; +     if (ioctl(fd_video, VIDEO_GET_SIZE, &vs) == 0) { +        Width = vs.w; +        Height = vs.h; +        Aspect = eVideoAspect(vs.aspect_ratio); +        return; +        } +     else +        LOG_ERROR;       } -  else -     LOG_ERROR;    cDevice::GetVideoSize(Width, Height, Aspect);  }  void cDvbDevice::GetOsdSize(int &Width, int &Height, double &Aspect)  { -  video_size_t vs; -  if (ioctl(fd_video, VIDEO_GET_SIZE, &vs) == 0) { -     Width = 720; -     if (vs.h != 480 && vs.h != 240) -        Height = 576; // PAL +  if (fd_video >= 0) { +     video_size_t vs; +     if (ioctl(fd_video, VIDEO_GET_SIZE, &vs) == 0) { +        Width = 720; +        if (vs.h != 480 && vs.h != 240) +           Height = 576; // PAL +        else +           Height = 480; // NTSC +        Aspect = 1.0; +        if (Width >= MINOSDWIDTH && Width <= MAXOSDWIDTH && Height >= MINOSDHEIGHT && Height <= MAXOSDHEIGHT) +           return; +        }       else -        Height = 480; // NTSC -     Aspect = 1.0; -     if (Width >= MINOSDWIDTH && Width <= MAXOSDWIDTH && Height >= MINOSDHEIGHT && Height <= MAXOSDHEIGHT) -        return; +        LOG_ERROR;       } -  else -     LOG_ERROR;    cDevice::GetOsdSize(Width, Height, Aspect);  } | 
