mirror of
				https://github.com/vdr-projects/vdr.git
				synced 2025-03-01 10:50:46 +00:00 
			
		
		
		
	Keeping subtitles visible when pausing replay
This commit is contained in:
		@@ -1091,6 +1091,7 @@ Rolf Ahrenberg <rahrenbe@cc.hut.fi>
 | 
				
			|||||||
 for a patch that was used to implement handling the "component descriptor" ("genre")
 | 
					 for a patch that was used to implement handling the "component descriptor" ("genre")
 | 
				
			||||||
 for a patch that was used to implement handling the "parental rating descriptor"
 | 
					 for a patch that was used to implement handling the "parental rating descriptor"
 | 
				
			||||||
 suggesting to add plain text error messages to log entries from cOsd::SetAreas()
 | 
					 suggesting to add plain text error messages to log entries from cOsd::SetAreas()
 | 
				
			||||||
 | 
					 for keeping subtitles visible when pausing replay
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Ralf Klueber <ralf.klueber@vodafone.com>
 | 
					Ralf Klueber <ralf.klueber@vodafone.com>
 | 
				
			||||||
 for reporting a bug in cutting a recording if there is only a single editing mark
 | 
					 for reporting a bug in cutting a recording if there is only a single editing mark
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										3
									
								
								HISTORY
									
									
									
									
									
								
							
							
						
						
									
										3
									
								
								HISTORY
									
									
									
									
									
								
							@@ -6309,7 +6309,7 @@ Video Disk Recorder Revision History
 | 
				
			|||||||
- The files "commands.conf" and "reccmd.conf" can now contain nested lists of
 | 
					- The files "commands.conf" and "reccmd.conf" can now contain nested lists of
 | 
				
			||||||
  commands. See vdr.5 for information about the new file format.
 | 
					  commands. See vdr.5 for information about the new file format.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
2010-02-06: Version 1.7.13
 | 
					2010-02-07: Version 1.7.13
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- Updated the Italian OSD texts (thanks to Diego Pierotto).
 | 
					- Updated the Italian OSD texts (thanks to Diego Pierotto).
 | 
				
			||||||
- Changed the position of Sirius 4 to S4.8E in sources.conf (thanks to Alexander Gross).
 | 
					- Changed the position of Sirius 4 to S4.8E in sources.conf (thanks to Alexander Gross).
 | 
				
			||||||
@@ -6352,3 +6352,4 @@ Video Disk Recorder Revision History
 | 
				
			|||||||
  ------------------------------------------------------------
 | 
					  ------------------------------------------------------------
 | 
				
			||||||
- Added device definitions to the diseqc.conf file format, so that certain satellite
 | 
					- Added device definitions to the diseqc.conf file format, so that certain satellite
 | 
				
			||||||
  positions can be limited to a given list of devices.
 | 
					  positions can be limited to a given list of devices.
 | 
				
			||||||
 | 
					- Keeping subtitles visible when pausing replay (thanks to Rolf Ahrenberg).
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										6
									
								
								device.c
									
									
									
									
									
								
							
							
						
						
									
										6
									
								
								device.c
									
									
									
									
									
								
							@@ -4,7 +4,7 @@
 | 
				
			|||||||
 * See the main source file 'vdr.c' for copyright information and
 | 
					 * See the main source file 'vdr.c' for copyright information and
 | 
				
			||||||
 * how to reach the author.
 | 
					 * how to reach the author.
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * $Id: device.c 2.34 2010/02/06 14:34:18 kls Exp $
 | 
					 * $Id: device.c 2.35 2010/02/07 11:54:42 kls Exp $
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "device.h"
 | 
					#include "device.h"
 | 
				
			||||||
@@ -1053,11 +1053,15 @@ void cDevice::Clear(void)
 | 
				
			|||||||
void cDevice::Play(void)
 | 
					void cDevice::Play(void)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  Audios.MuteAudio(mute);
 | 
					  Audios.MuteAudio(mute);
 | 
				
			||||||
 | 
					  if (dvbSubtitleConverter)
 | 
				
			||||||
 | 
					     dvbSubtitleConverter->Freeze(false);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void cDevice::Freeze(void)
 | 
					void cDevice::Freeze(void)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  Audios.MuteAudio(true);
 | 
					  Audios.MuteAudio(true);
 | 
				
			||||||
 | 
					  if (dvbSubtitleConverter)
 | 
				
			||||||
 | 
					     dvbSubtitleConverter->Freeze(true);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void cDevice::Mute(void)
 | 
					void cDevice::Mute(void)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -7,7 +7,7 @@
 | 
				
			|||||||
 * Original author: Marco Schl<68><6C>ler <marco@lordzodiac.de>
 | 
					 * Original author: Marco Schl<68><6C>ler <marco@lordzodiac.de>
 | 
				
			||||||
 * With some input from the "subtitle plugin" by Pekka Virtanen <pekka.virtanen@sci.fi>
 | 
					 * With some input from the "subtitle plugin" by Pekka Virtanen <pekka.virtanen@sci.fi>
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * $Id: dvbsubtitle.c 2.3 2009/12/05 16:11:54 kls Exp $
 | 
					 * $Id: dvbsubtitle.c 2.4 2010/02/07 12:08:13 kls Exp $
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "dvbsubtitle.h"
 | 
					#include "dvbsubtitle.h"
 | 
				
			||||||
@@ -658,6 +658,7 @@ cDvbSubtitleConverter::cDvbSubtitleConverter(void)
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
  dvbSubtitleAssembler = new cDvbSubtitleAssembler;
 | 
					  dvbSubtitleAssembler = new cDvbSubtitleAssembler;
 | 
				
			||||||
  osd = NULL;
 | 
					  osd = NULL;
 | 
				
			||||||
 | 
					  frozen = false;
 | 
				
			||||||
  pages = new cList<cDvbSubtitlePage>;
 | 
					  pages = new cList<cDvbSubtitlePage>;
 | 
				
			||||||
  bitmaps = new cList<cDvbSubtitleBitmaps>;
 | 
					  bitmaps = new cList<cDvbSubtitleBitmaps>;
 | 
				
			||||||
  Start();
 | 
					  Start();
 | 
				
			||||||
@@ -685,6 +686,7 @@ void cDvbSubtitleConverter::Reset(void)
 | 
				
			|||||||
  pages->Clear();
 | 
					  pages->Clear();
 | 
				
			||||||
  bitmaps->Clear();
 | 
					  bitmaps->Clear();
 | 
				
			||||||
  DELETENULL(osd);
 | 
					  DELETENULL(osd);
 | 
				
			||||||
 | 
					  frozen = false;
 | 
				
			||||||
  Unlock();
 | 
					  Unlock();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -776,6 +778,8 @@ void cDvbSubtitleConverter::Action(void)
 | 
				
			|||||||
  int LastSetupLevel = setupLevel;
 | 
					  int LastSetupLevel = setupLevel;
 | 
				
			||||||
  cTimeMs Timeout;
 | 
					  cTimeMs Timeout;
 | 
				
			||||||
  while (Running()) {
 | 
					  while (Running()) {
 | 
				
			||||||
 | 
					        int WaitMs = 100;
 | 
				
			||||||
 | 
					        if (!frozen) {
 | 
				
			||||||
           if (osd) {
 | 
					           if (osd) {
 | 
				
			||||||
              int NewSetupLevel = setupLevel;
 | 
					              int NewSetupLevel = setupLevel;
 | 
				
			||||||
              if (Timeout.TimedOut() || LastSetupLevel != NewSetupLevel) {
 | 
					              if (Timeout.TimedOut() || LastSetupLevel != NewSetupLevel) {
 | 
				
			||||||
@@ -783,7 +787,6 @@ void cDvbSubtitleConverter::Action(void)
 | 
				
			|||||||
                 }
 | 
					                 }
 | 
				
			||||||
              LastSetupLevel = NewSetupLevel;
 | 
					              LastSetupLevel = NewSetupLevel;
 | 
				
			||||||
              }
 | 
					              }
 | 
				
			||||||
        int WaitMs = 100;
 | 
					 | 
				
			||||||
           Lock();
 | 
					           Lock();
 | 
				
			||||||
           if (cDvbSubtitleBitmaps *sb = bitmaps->First()) {
 | 
					           if (cDvbSubtitleBitmaps *sb = bitmaps->First()) {
 | 
				
			||||||
              int64_t STC = cDevice::PrimaryDevice()->GetSTC();
 | 
					              int64_t STC = cDevice::PrimaryDevice()->GetSTC();
 | 
				
			||||||
@@ -816,6 +819,7 @@ void cDvbSubtitleConverter::Action(void)
 | 
				
			|||||||
                 bitmaps->Del(sb);
 | 
					                 bitmaps->Del(sb);
 | 
				
			||||||
              }
 | 
					              }
 | 
				
			||||||
           Unlock();
 | 
					           Unlock();
 | 
				
			||||||
 | 
					           }
 | 
				
			||||||
        cCondWait::SleepMs(WaitMs);
 | 
					        cCondWait::SleepMs(WaitMs);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -6,7 +6,7 @@
 | 
				
			|||||||
 *
 | 
					 *
 | 
				
			||||||
 * Original author: Marco Schl<68><6C>ler <marco@lordzodiac.de>
 | 
					 * Original author: Marco Schl<68><6C>ler <marco@lordzodiac.de>
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * $Id: dvbsubtitle.h 2.1 2008/05/25 14:36:52 kls Exp $
 | 
					 * $Id: dvbsubtitle.h 2.2 2010/02/07 11:55:14 kls Exp $
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifndef __DVBSUBTITLE_H
 | 
					#ifndef __DVBSUBTITLE_H
 | 
				
			||||||
@@ -25,6 +25,7 @@ private:
 | 
				
			|||||||
  static int setupLevel;
 | 
					  static int setupLevel;
 | 
				
			||||||
  cDvbSubtitleAssembler *dvbSubtitleAssembler;
 | 
					  cDvbSubtitleAssembler *dvbSubtitleAssembler;
 | 
				
			||||||
  cOsd *osd;
 | 
					  cOsd *osd;
 | 
				
			||||||
 | 
					  bool frozen;
 | 
				
			||||||
  cList<cDvbSubtitlePage> *pages;
 | 
					  cList<cDvbSubtitlePage> *pages;
 | 
				
			||||||
  cList<cDvbSubtitleBitmaps> *bitmaps;
 | 
					  cList<cDvbSubtitleBitmaps> *bitmaps;
 | 
				
			||||||
  tColor yuv2rgb(int Y, int Cb, int Cr);
 | 
					  tColor yuv2rgb(int Y, int Cb, int Cr);
 | 
				
			||||||
@@ -36,6 +37,7 @@ public:
 | 
				
			|||||||
  virtual ~cDvbSubtitleConverter();
 | 
					  virtual ~cDvbSubtitleConverter();
 | 
				
			||||||
  void Action(void);
 | 
					  void Action(void);
 | 
				
			||||||
  void Reset(void);
 | 
					  void Reset(void);
 | 
				
			||||||
 | 
					  void Freeze(bool Status) { frozen = Status; }
 | 
				
			||||||
  int ConvertFragments(const uchar *Data, int Length); // for legacy PES recordings
 | 
					  int ConvertFragments(const uchar *Data, int Length); // for legacy PES recordings
 | 
				
			||||||
  int Convert(const uchar *Data, int Length);
 | 
					  int Convert(const uchar *Data, int Length);
 | 
				
			||||||
  static void SetupChanged(void);
 | 
					  static void SetupChanged(void);
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user