summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKlaus Schmidinger <vdr@tvdr.de>2010-12-27 12:25:19 +0100
committerKlaus Schmidinger <vdr@tvdr.de>2010-12-27 12:25:19 +0100
commit9f60bd2fc401c0d195e2a55f24e0e09ec17bb824 (patch)
treeae1097fa6360941ab9d23b7eebe493b1a49eaef1
parent6c0612546ee688d7b7a800bb236396d800c4e19d (diff)
downloadvdr-9f60bd2fc401c0d195e2a55f24e0e09ec17bb824.tar.gz
vdr-9f60bd2fc401c0d195e2a55f24e0e09ec17bb824.tar.bz2
Now updating the 'frames per second' data in the list of recordings when a new recording is started that has a frame rate other than the default
-rw-r--r--HISTORY2
-rw-r--r--recorder.c16
-rw-r--r--recorder.h4
-rw-r--r--recording.c20
-rw-r--r--recording.h4
5 files changed, 35 insertions, 11 deletions
diff --git a/HISTORY b/HISTORY
index c236c331..996a7a17 100644
--- a/HISTORY
+++ b/HISTORY
@@ -6515,3 +6515,5 @@ Video Disk Recorder Revision History
to Dominik Strasser).
- Added LDFLAGS to the linker calls in the Makefiles (thanks to Joerg Bornkessel and
Paul Menzel).
+- Now updating the 'frames per second' data in the list of recordings when a new
+ recording is started that has a frame rate other than the default.
diff --git a/recorder.c b/recorder.c
index 60631e0a..f7c3fb03 100644
--- a/recorder.c
+++ b/recorder.c
@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: recorder.c 2.8 2010/01/29 16:37:22 kls Exp $
+ * $Id: recorder.c 2.9 2010/12/27 11:35:46 kls Exp $
*/
#include "recorder.h"
@@ -24,8 +24,9 @@
cRecorder::cRecorder(const char *FileName, const cChannel *Channel, int Priority)
:cReceiver(Channel, Priority)
,cThread("recording")
-,recordingInfo(FileName)
{
+ recordingName = strdup(FileName);
+
// Make sure the disk is up and running:
SpinUpDisk(FileName);
@@ -69,6 +70,7 @@ cRecorder::~cRecorder()
delete fileName;
delete frameDetector;
delete ringBuffer;
+ free(recordingName);
}
bool cRecorder::RunningLowOnDiskSpace(void)
@@ -127,10 +129,12 @@ void cRecorder::Action(void)
break;
if (frameDetector->Synced()) {
if (!InfoWritten) {
- if (recordingInfo.Read()) {
- if (frameDetector->FramesPerSecond() > 0 && !DoubleEqual(recordingInfo.FramesPerSecond(), frameDetector->FramesPerSecond())) {
- recordingInfo.SetFramesPerSecond(frameDetector->FramesPerSecond());
- recordingInfo.Write();
+ cRecordingInfo RecordingInfo(recordingName);
+ if (RecordingInfo.Read()) {
+ if (frameDetector->FramesPerSecond() > 0 && !DoubleEqual(RecordingInfo.FramesPerSecond(), frameDetector->FramesPerSecond())) {
+ RecordingInfo.SetFramesPerSecond(frameDetector->FramesPerSecond());
+ RecordingInfo.Write();
+ Recordings.UpdateByName(recordingName);
}
}
InfoWritten = true;
diff --git a/recorder.h b/recorder.h
index d11d7adf..05cc42b0 100644
--- a/recorder.h
+++ b/recorder.h
@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: recorder.h 2.2 2010/01/29 16:32:32 kls Exp $
+ * $Id: recorder.h 2.3 2010/12/27 11:17:04 kls Exp $
*/
#ifndef __RECORDER_H
@@ -24,7 +24,7 @@ private:
cFileName *fileName;
cIndexFile *index;
cUnbufferedFile *recordFile;
- cRecordingInfo recordingInfo;
+ char *recordingName;
off_t fileSize;
time_t lastDiskSpaceCheck;
bool RunningLowOnDiskSpace(void);
diff --git a/recording.c b/recording.c
index 96dc95f9..e0f5b279 100644
--- a/recording.c
+++ b/recording.c
@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: recording.c 2.23 2010/03/07 14:06:04 kls Exp $
+ * $Id: recording.c 2.24 2010/12/27 12:02:00 kls Exp $
*/
#include "recording.h"
@@ -678,7 +678,7 @@ cRecording::cRecording(const char *FileName)
const char *p = strrchr(FileName, '/');
name = NULL;
- info = new cRecordingInfo;
+ info = new cRecordingInfo(fileName);
if (p) {
time_t now = time(NULL);
struct tm tm_r;
@@ -921,6 +921,14 @@ bool cRecording::IsEdited(void) const
return *s == '%';
}
+void cRecording::ReadInfo(void)
+{
+ info->Read();
+ priority = info->priority;
+ lifetime = info->lifetime;
+ framesPerSecond = info->framesPerSecond;
+}
+
bool cRecording::WriteInfo(void)
{
cString InfoFileName = cString::sprintf("%s%s", fileName, isPesRecording ? INFOFILESUFFIX ".vdr" : INFOFILESUFFIX);
@@ -1172,6 +1180,14 @@ void cRecordings::DelByName(const char *FileName)
}
}
+void cRecordings::UpdateByName(const char *FileName)
+{
+ LOCK_THREAD;
+ cRecording *recording = GetByName(FileName);
+ if (recording)
+ recording->ReadInfo();
+}
+
int cRecordings::TotalFileSizeMB(void)
{
int size = 0;
diff --git a/recording.h b/recording.h
index 939878f2..7510a6e1 100644
--- a/recording.h
+++ b/recording.h
@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: recording.h 2.14 2010/03/07 14:06:15 kls Exp $
+ * $Id: recording.h 2.15 2010/12/27 10:48:21 kls Exp $
*/
#ifndef __RECORDING_H
@@ -117,6 +117,7 @@ public:
bool IsNew(void) const { return GetResume() <= 0; }
bool IsEdited(void) const;
bool IsPesRecording(void) const { return isPesRecording; }
+ void ReadInfo(void);
bool WriteInfo(void);
bool Delete(void);
// Changes the file name so that it will no longer be visible in the "Recordings" menu
@@ -165,6 +166,7 @@ public:
cRecording *GetByName(const char *FileName);
void AddByName(const char *FileName, bool TriggerUpdate = true);
void DelByName(const char *FileName);
+ void UpdateByName(const char *FileName);
int TotalFileSizeMB(void); ///< Only for deleted recordings!
};