summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--HISTORY9
-rw-r--r--PLUGINS/src/skincurses/skincurses.c4
-rw-r--r--cutter.c10
-rw-r--r--menu.c13
-rw-r--r--recording.c30
-rw-r--r--recording.h21
-rw-r--r--skinclassic.c4
-rw-r--r--skins.c8
-rw-r--r--skinsttng.c4
9 files changed, 63 insertions, 40 deletions
diff --git a/HISTORY b/HISTORY
index b5cbcb91..06a1a359 100644
--- a/HISTORY
+++ b/HISTORY
@@ -6699,7 +6699,7 @@ Video Disk Recorder Revision History
constructor is negative (avoids the "cTimeMs: using monotonic clock..." log message
before VDR's starting log message).
-2011-08-20: Version 1.7.21
+2011-08-21: Version 1.7.21
- Fixed detecting frames for channels that split frames into several payloads
(reported by Derek Kelly).
@@ -6708,3 +6708,10 @@ Video Disk Recorder Revision History
- The start time of an edited recording is now set to the time of the first
editing mark (thanks to Udo Richter).
This obsoletes the CUTTIME patch.
+- Direct access to the members start, priority, lifetime, and deleted of cRecording
+ as well as to position and comment of cMark is now deprecated. Plugin authors
+ should switch to the new access functions for these members. For now the macro
+ __RECORDING_H_DEPRECATED_DIRECT_MEMBER_ACCESS is defined in recording.h, which
+ exposes these members, so that existing plugins will still compile. Comment out
+ this #define to check whether a particular plugin needs to be modified.
+ This #define may be removed in a future version.
diff --git a/PLUGINS/src/skincurses/skincurses.c b/PLUGINS/src/skincurses/skincurses.c
index 11fead5f..74166b33 100644
--- a/PLUGINS/src/skincurses/skincurses.c
+++ b/PLUGINS/src/skincurses/skincurses.c
@@ -3,7 +3,7 @@
*
* See the README file for copyright information and how to reach the author.
*
- * $Id: skincurses.c 2.6 2011/05/15 21:41:47 kls Exp $
+ * $Id: skincurses.c 2.7 2011/08/21 11:04:38 kls Exp $
*/
#include <ncurses.h>
@@ -436,7 +436,7 @@ void cSkinCursesDisplayMenu::SetRecording(const cRecording *Recording)
int y = 2;
cTextScroller ts;
char t[32];
- snprintf(t, sizeof(t), "%s %s", *DateString(Recording->start), *TimeString(Recording->start));
+ snprintf(t, sizeof(t), "%s %s", *DateString(Recording->Start()), *TimeString(Recording->Start()));
ts.Set(osd, 0, y, ScOsdWidth, ScOsdHeight - y - 2, t, &Font, clrYellow, clrBackground);
y += ts.Height();
if (Info->GetEvent()->ParentalRating()) {
diff --git a/cutter.c b/cutter.c
index 725adc51..778302b8 100644
--- a/cutter.c
+++ b/cutter.c
@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: cutter.c 2.7 2011/08/20 09:57:27 kls Exp $
+ * $Id: cutter.c 2.8 2011/08/21 11:08:08 kls Exp $
*/
#include "cutter.h"
@@ -75,7 +75,7 @@ void cCuttingThread::Action(void)
if (!fromFile || !toFile)
return;
fromFile->SetReadAhead(MEGABYTE(20));
- int Index = Mark->position;
+ int Index = Mark->Position();
Mark = fromMarks.Next(Mark);
off_t FileSize = 0;
int CurrentFileNumber = 0;
@@ -163,14 +163,14 @@ void cCuttingThread::Action(void)
// Check editing marks:
- if (Mark && Index >= Mark->position) {
+ if (Mark && Index >= Mark->Position()) {
Mark = fromMarks.Next(Mark);
toMarks.Add(LastIFrame);
if (Mark)
toMarks.Add(toIndex->Last() + 1);
toMarks.Save();
if (Mark) {
- Index = Mark->position;
+ Index = Mark->Position();
Mark = fromMarks.Next(Mark);
CurrentFileNumber = 0; // triggers SetOffset before reading next frame
cutIn = true;
@@ -212,7 +212,7 @@ bool cCutter::Start(const char *FileName)
cMarks FromMarks;
FromMarks.Load(FileName);
if (cMark *First = FromMarks.First())
- Recording.SetStartTime(Recording.start + (int(First->position / Recording.FramesPerSecond() + 30) / 60) * 60);
+ Recording.SetStartTime(Recording.Start() + (int(First->Position() / Recording.FramesPerSecond() + 30) / 60) * 60);
const char *evn = Recording.PrefixFileName('%');
if (evn && RemoveVideoFile(evn) && MakeDirs(evn, true)) {
diff --git a/menu.c b/menu.c
index 39785146..88e98540 100644
--- a/menu.c
+++ b/menu.c
@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: menu.c 2.29 2011/08/06 13:13:34 kls Exp $
+ * $Id: menu.c 2.30 2011/08/21 11:09:19 kls Exp $
*/
#include "menu.h"
@@ -4667,7 +4667,7 @@ void cReplayControl::MarkJump(bool Forward)
if (GetIndex(Current, Total)) {
cMark *m = Forward ? marks.GetNext(Current) : marks.GetPrev(Current);
if (m) {
- Goto(m->position, true);
+ Goto(m->Position(), true);
displayFrames = true;
}
}
@@ -4684,14 +4684,15 @@ void cReplayControl::MarkMove(bool Forward)
int p = SkipFrames(Forward ? 1 : -1);
cMark *m2;
if (Forward) {
- if ((m2 = marks.Next(m)) != NULL && m2->position <= p)
+ if ((m2 = marks.Next(m)) != NULL && m2->Position() <= p)
return;
}
else {
- if ((m2 = marks.Prev(m)) != NULL && m2->position >= p)
+ if ((m2 = marks.Prev(m)) != NULL && m2->Position() >= p)
return;
}
- Goto(m->position = p, true);
+ m->SetPosition(p);
+ Goto(m->Position(), true);
marks.Save();
}
}
@@ -4726,7 +4727,7 @@ void cReplayControl::EditTest(void)
if ((m->Index() & 0x01) != 0)
m = marks.Next(m);
if (m) {
- Goto(m->position - SecondsToFrames(3, FramesPerSecond()));
+ Goto(m->Position() - SecondsToFrames(3, FramesPerSecond()));
Play();
}
}
diff --git a/recording.c b/recording.c
index cbe27882..5112ad69 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.34 2011/08/20 09:53:45 kls Exp $
+ * $Id: recording.c 2.35 2011/08/21 11:19:55 kls Exp $
*/
#include "recording.h"
@@ -94,7 +94,7 @@ void cRemoveDeletedRecordingsThread::Action(void)
bool deleted = false;
cThreadLock DeletedRecordingsLock(&DeletedRecordings);
for (cRecording *r = DeletedRecordings.First(); r; ) {
- if (r->deleted && time(NULL) - r->deleted > DELETEDLIFETIME) {
+ if (r->Deleted() && time(NULL) - r->Deleted() > DELETEDLIFETIME) {
cRecording *next = DeletedRecordings.Next(r);
r->Remove();
DeletedRecordings.Del(r);
@@ -120,7 +120,7 @@ void RemoveDeletedRecordings(void)
if (!RemoveDeletedRecordingsThread.Active()) {
cThreadLock DeletedRecordingsLock(&DeletedRecordings);
for (cRecording *r = DeletedRecordings.First(); r; r = DeletedRecordings.Next(r)) {
- if (r->deleted && time(NULL) - r->deleted > DELETEDLIFETIME) {
+ if (r->Deleted() && time(NULL) - r->Deleted() > DELETEDLIFETIME) {
RemoveDeletedRecordingsThread.Start();
break;
}
@@ -153,7 +153,7 @@ void AssertFreeDiskSpace(int Priority, bool Force)
cRecording *r0 = NULL;
while (r) {
if (IsOnVideoDirectoryFileSystem(r->FileName())) { // only remove recordings that will actually increase the free video disk space
- if (!r0 || r->start < r0->start)
+ if (!r0 || r->Start() < r0->Start())
r0 = r;
}
r = DeletedRecordings.Next(r);
@@ -180,11 +180,11 @@ void AssertFreeDiskSpace(int Priority, bool Force)
cRecording *r0 = NULL;
while (r) {
if (IsOnVideoDirectoryFileSystem(r->FileName())) { // only delete recordings that will actually increase the free video disk space
- if (!r->IsEdited() && r->lifetime < MAXLIFETIME) { // edited recordings and recordings with MAXLIFETIME live forever
- if ((r->lifetime == 0 && Priority > r->priority) || // the recording has no guaranteed lifetime and the new recording has higher priority
- (r->lifetime > 0 && (time(NULL) - r->start) / SECSINDAY >= r->lifetime)) { // the recording's guaranteed lifetime has expired
+ if (!r->IsEdited() && r->Lifetime() < MAXLIFETIME) { // edited recordings and recordings with MAXLIFETIME live forever
+ if ((r->Lifetime() == 0 && Priority > r->Priority()) || // the recording has no guaranteed lifetime and the new recording has higher priority
+ (r->Lifetime() > 0 && (time(NULL) - r->Start()) / SECSINDAY >= r->Lifetime())) { // the recording's guaranteed lifetime has expired
if (r0) {
- if (r->priority < r0->priority || (r->priority == r0->priority && r->start < r0->start))
+ if (r->Priority() < r0->Priority() || (r->Priority() == r0->Priority() && r->Start() < r0->Start()))
r0 = r; // in any case we delete the one with the lowest priority (or the older one in case of equal priorities)
}
else
@@ -1240,23 +1240,21 @@ cMutex MutexMarkFramesPerSecond;
cMark::cMark(int Position, const char *Comment, double FramesPerSecond)
{
position = Position;
- comment = Comment ? strdup(Comment) : NULL;
+ comment = Comment;
framesPerSecond = FramesPerSecond;
}
cMark::~cMark()
{
- free(comment);
}
cString cMark::ToText(void)
{
- return cString::sprintf("%s%s%s\n", *IndexToHMSF(position, true, framesPerSecond), comment ? " " : "", comment ? comment : "");
+ return cString::sprintf("%s%s%s\n", *IndexToHMSF(position, true, framesPerSecond), Comment() ? " " : "", Comment() ? Comment() : "");
}
bool cMark::Parse(const char *s)
{
- free(comment);
comment = NULL;
framesPerSecond = MarkFramesPerSecond;
position = HMSFToIndex(s, framesPerSecond);
@@ -1320,7 +1318,7 @@ void cMarks::Sort(void)
{
for (cMark *m1 = First(); m1; m1 = Next(m1)) {
for (cMark *m2 = Next(m1); m2; m2 = Next(m2)) {
- if (m2->position < m1->position) {
+ if (m2->Position() < m1->Position()) {
swap(m1->position, m2->position);
swap(m1->comment, m2->comment);
}
@@ -1341,7 +1339,7 @@ cMark *cMarks::Add(int Position)
cMark *cMarks::Get(int Position)
{
for (cMark *mi = First(); mi; mi = Next(mi)) {
- if (mi->position == Position)
+ if (mi->Position() == Position)
return mi;
}
return NULL;
@@ -1350,7 +1348,7 @@ cMark *cMarks::Get(int Position)
cMark *cMarks::GetPrev(int Position)
{
for (cMark *mi = Last(); mi; mi = Prev(mi)) {
- if (mi->position < Position)
+ if (mi->Position() < Position)
return mi;
}
return NULL;
@@ -1359,7 +1357,7 @@ cMark *cMarks::GetPrev(int Position)
cMark *cMarks::GetNext(int Position)
{
for (cMark *mi = First(); mi; mi = Next(mi)) {
- if (mi->position > Position)
+ if (mi->Position() > Position)
return mi;
}
return NULL;
diff --git a/recording.h b/recording.h
index 7683d610..26223e69 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.23 2011/08/20 09:52:07 kls Exp $
+ * $Id: recording.h 2.24 2011/08/21 11:34:03 kls Exp $
*/
#ifndef __RECORDING_H
@@ -22,6 +22,8 @@
#define TIMERMACRO_TITLE "TITLE"
#define TIMERMACRO_EPISODE "EPISODE"
+#define __RECORDING_H_DEPRECATED_DIRECT_MEMBER_ACCESS // Code enclosed with this macro is deprecated and may be removed in a future version
+
extern bool VfatFileSystem;
extern int InstanceId;
@@ -97,14 +99,21 @@ private:
static char *StripEpisodeName(char *s);
char *SortName(void) const;
int GetResume(void) const;
+#ifdef __RECORDING_H_DEPRECATED_DIRECT_MEMBER_ACCESS
public:
+#endif
time_t start;
int priority;
int lifetime;
time_t deleted;
+public:
cRecording(cTimer *Timer, const cEvent *Event);
cRecording(const char *FileName);
virtual ~cRecording();
+ time_t Start(void) const { return start; }
+ int Priority(void) const { return priority; }
+ int Lifetime(void) const { return lifetime; }
+ time_t Deleted(void) const { return deleted; }
virtual int Compare(const cListObject &ListObject) const;
const char *Name(void) const { return name; }
const char *FileName(void) const;
@@ -184,13 +193,21 @@ extern cRecordings DeletedRecordings;
#define DEFAULTFRAMESPERSECOND 25.0
class cMark : public cListObject {
+ friend class cMarks; // for sorting
private:
double framesPerSecond;
+#ifdef __RECORDING_H_DEPRECATED_DIRECT_MEMBER_ACCESS
public:
+#endif
int position;
- char *comment;
+ cString comment;
+public:
cMark(int Position = 0, const char *Comment = NULL, double FramesPerSecond = DEFAULTFRAMESPERSECOND);
virtual ~cMark();
+ int Position(void) const { return position; }
+ const char *Comment(void) const { return comment; }
+ void SetPosition(int Position) { position = Position; }
+ void SetComment(const char *Comment) { comment = Comment; }
cString ToText(void);
bool Parse(const char *s);
bool Save(FILE *f);
diff --git a/skinclassic.c b/skinclassic.c
index 33332467..49f0bcb5 100644
--- a/skinclassic.c
+++ b/skinclassic.c
@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: skinclassic.c 2.5 2010/11/07 15:10:23 kls Exp $
+ * $Id: skinclassic.c 2.6 2011/08/21 11:02:06 kls Exp $
*/
#include "skinclassic.h"
@@ -377,7 +377,7 @@ void cSkinClassicDisplayMenu::SetRecording(const cRecording *Recording)
int y = y2;
cTextScroller ts;
char t[32];
- snprintf(t, sizeof(t), "%s %s", *DateString(Recording->start), *TimeString(Recording->start));
+ snprintf(t, sizeof(t), "%s %s", *DateString(Recording->Start()), *TimeString(Recording->Start()));
ts.Set(osd, x1, y, x2 - x1, y3 - y, t, font, Theme.Color(clrMenuEventTime), Theme.Color(clrBackground));
y += ts.Height();
if (Info->GetEvent()->ParentalRating()) {
diff --git a/skins.c b/skins.c
index 83428730..427e4224 100644
--- a/skins.c
+++ b/skins.c
@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: skins.c 2.2 2011/08/06 09:41:57 kls Exp $
+ * $Id: skins.c 2.3 2011/08/21 11:21:19 kls Exp $
*/
#include "skins.h"
@@ -136,14 +136,14 @@ cSkinDisplayReplay::cProgressBar::cProgressBar(int Width, int Height, int Curren
if (Marks) {
bool Start = true;
for (const cMark *m = Marks->First(); m; m = Marks->Next(m)) {
- int p1 = Pos(m->position);
+ int p1 = Pos(m->Position());
if (Start) {
const cMark *m2 = Marks->Next(m);
- int p2 = Pos(m2 ? m2->position : total);
+ int p2 = Pos(m2 ? m2->Position() : total);
int h = Height / 3;
DrawRectangle(p1, h, p2, Height - h, ColorSelected);
}
- Mark(p1, Start, m->position == Current, ColorMark, ColorCurrent);
+ Mark(p1, Start, m->Position() == Current, ColorMark, ColorCurrent);
Start = !Start;
}
}
diff --git a/skinsttng.c b/skinsttng.c
index 169488a3..c9c3031f 100644
--- a/skinsttng.c
+++ b/skinsttng.c
@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: skinsttng.c 2.10 2011/06/12 15:20:59 kls Exp $
+ * $Id: skinsttng.c 2.11 2011/08/21 11:02:26 kls Exp $
*/
// Star Trek: The Next Generation® is a registered trademark of Paramount Pictures
@@ -693,7 +693,7 @@ void cSkinSTTNGDisplayMenu::SetRecording(const cRecording *Recording)
int y = y3;
cTextScroller ts;
char t[32];
- snprintf(t, sizeof(t), "%s %s", *DateString(Recording->start), *TimeString(Recording->start));
+ snprintf(t, sizeof(t), "%s %s", *DateString(Recording->Start()), *TimeString(Recording->Start()));
ts.Set(osd, xl, y, x4 - xl, y4 - y, t, font, Theme.Color(clrMenuEventTime), Theme.Color(clrBackground));
y += ts.Height();
if (Info->GetEvent()->ParentalRating()) {