Mit VDR größer Version 2.5.2 bekomme ich beim Kompilieren des skindesigner Plugins folgende Fehlermeldung:
Code
coreengine/viewdetail.c: In member function 'virtual bool cViewDetailRec::Parse(bool)':
coreengine/viewdetail.c:679:31: error: passing 'const cRecordingInfo' as 'this' argument discards qualifiers [-fpermissive]
errors = info->Errors();
^
In file included from /usr/local/src/vdr-2.5.4/include/vdr/skins.h:18:0,
from /usr/local/src/vdr-2.5.4/include/vdr/osdbase.h:15,
from coreengine/../services/epgsearch.h:31,
from coreengine/viewdetail.h:4,
from coreengine/viewdetail.c:1:
/usr/local/src/vdr-2.5.4/include/vdr/recording.h:92:7: note: in call to 'int cRecordingInfo::Errors()'
int Errors(void) { return errors; }
^~~~~~
coreengine/viewelementsdisplaymenu.c: In member function 'virtual bool cVeDmDetailheaderRec::Parse(bool)':
coreengine/viewelementsdisplaymenu.c:1234:31: error: passing 'const cRecordingInfo' as 'this' argument discards qualifiers [-fpermissive]
errors = info->Errors();
^
In file included from /usr/local/src/vdr-2.5.4/include/vdr/skins.h:18:0,
from /usr/local/src/vdr-2.5.4/include/vdr/osdbase.h:15,
from /usr/local/src/vdr-2.5.4/include/vdr/menuitems.h:15,
from /usr/local/src/vdr-2.5.4/include/vdr/plugin.h:14,
from coreengine/globals.h:14,
from coreengine/viewelement.h:11,
from coreengine/viewelementsdisplaymenu.h:4,
from coreengine/viewelementsdisplaymenu.c:1:
/usr/local/src/vdr-2.5.4/include/vdr/recording.h:92:7: note: in call to 'int cRecordingInfo::Errors()'
int Errors(void) { return errors; }
^~~~~~
coreengine/listelements.c: In member function 'virtual bool cLeMenuRecordings::Parse(bool)':
coreengine/listelements.c:2062:27: error: passing 'const cRecordingInfo' as 'this' argument discards qualifiers [-fpermissive]
errors = info->Errors();
^
In file included from /usr/local/src/vdr-2.5.4/include/vdr/skins.h:18:0,
from /usr/local/src/vdr-2.5.4/include/vdr/osdbase.h:15,
from /usr/local/src/vdr-2.5.4/include/vdr/menuitems.h:15,
from /usr/local/src/vdr-2.5.4/include/vdr/plugin.h:14,
from coreengine/globals.h:14,
from coreengine/viewelement.h:11,
from coreengine/listelements.h:4,
from coreengine/listelements.c:1:
/usr/local/src/vdr-2.5.4/include/vdr/recording.h:92:7: note: in call to 'int cRecordingInfo::Errors()'
int Errors(void) { return errors; }
Display More
Es sind noch weitere Stellen, aber immer der gleiche Fehler.
Mit vdr-2.4.6 kommt noch kein Fehler.
Vermutlich liegt es an der Änderung hier in der recording.h vom vdr in Version 2.5.2:
Diff
@@ -150,7 +153,7 @@ public:
///< Returns the full path name to the recording directory, including the
///< video directory and the actual '*.rec'. For disk file access use.
const char *Title(char Delimiter = ' ', bool NewIndicator = false, int Level = -1) const;
- const cRecordingInfo *Info(void) const { return info; }
+ cRecordingInfo *Info(void) const { return info; }
const char *PrefixFileName(char Prefix);
int HierarchyLevels(void) const;
void ResetResume(void) const;:q
Ich hoffe, dass der Patch hier das Ganze korrigiert und auch ein paar falsche "if defined" entfernt:
Diff
diff --git a/coreengine/listelements.c b/coreengine/listelements.c
index 10d4837..fcfde42 100644
--- a/coreengine/listelements.c
+++ b/coreengine/listelements.c
@@ -2017,7 +2017,11 @@ bool cLeMenuRecordings::Parse(bool forced) {
ADD_TOKEN_MR1(TOKEN_LMR_IT);
const cEvent *event = NULL;
- const cRecordingInfo *info = usedRecording->Info();
+#if defined (APIVERSNUM) && (APIVERSNUM >= 20502)
+ cRecordingInfo *info = recording->Info();
+#else
+ const cRecordingInfo *info = recording->Info();
+#endif
if (!info) {
delete[] recName;
@@ -2058,9 +2062,7 @@ bool cLeMenuRecordings::Parse(bool forced) {
}
int errors = -1;
-#if defined (APIVERSNUM) && (APIVERSNUM >= 20504)
errors = info->Errors();
-#endif
// do the same stuff as in cCeMenuRecordings::Parse() (part 2)
ADD_TOKEN_MR2(TOKEN_LMR_IT, TOKEN_LMR_ST);
@@ -2244,7 +2246,11 @@ bool cCeMenuRecordings::Parse(bool forced) {
ADD_TOKEN_MR1(TOKEN_CMR_IT);
const cEvent *event = NULL;
- const cRecordingInfo *info = usedRecording->Info();
+#if defined (APIVERSNUM) && (APIVERSNUM >= 20502)
+ cRecordingInfo *info = recording->Info();
+#else
+ const cRecordingInfo *info = recording->Info();
+#endif
if (!info) return true;
event = info->GetEvent();
@@ -2278,9 +2284,7 @@ bool cCeMenuRecordings::Parse(bool forced) {
}
int errors = -1;
-#if defined (APIVERSNUM) && (APIVERSNUM >= 20504)
errors = info->Errors();
-#endif
// do the same stuff as in cLeMenuRecordings::Parse() (part 2)
ADD_TOKEN_MR2(TOKEN_CMR_IT, TOKEN_CMR_ST);
diff --git a/coreengine/viewdetail.c b/coreengine/viewdetail.c
index 56910d3..4786856 100644
--- a/coreengine/viewdetail.c
+++ b/coreengine/viewdetail.c
@@ -668,16 +668,18 @@ bool cViewDetailRec::Parse(bool forced) {
tokenContainer->AddStringToken((int)eDmDetailedRecST::name, recording->Name());
tokenContainer->AddIntToken((int)eDmDetailedRecIT::cutted, recording->IsEdited());
+#if defined (APIVERSNUM) && (APIVERSNUM >= 20502)
+ cRecordingInfo *info = recording->Info();
+#else
const cRecordingInfo *info = recording->Info();
+#endif
if (info) {
tokenContainer->AddStringToken((int)eDmDetailedRecST::epgname, info->Title());
tokenContainer->AddStringToken((int)eDmDetailedRecST::shorttext, info->ShortText());
tokenContainer->AddStringToken((int)eDmDetailedRecST::description, info->Description());
tokenContainer->AddIntToken((int)eDmDetailedRecIT::framesPerSecond, info->FramesPerSecond());
- int errors = -1;
-#if defined (APIVERSNUM) && (APIVERSNUM >= 20504)
+ int errors = -1;
errors = info->Errors();
-#endif
tokenContainer->AddIntToken((int)eDmDetailedRecIT::errors, errors);
const cEvent *event = info->GetEvent();
if (event) {
diff --git a/coreengine/viewelementsdisplaymenu.c b/coreengine/viewelementsdisplaymenu.c
index 24240a7..d7c0c11 100644
--- a/coreengine/viewelementsdisplaymenu.c
+++ b/coreengine/viewelementsdisplaymenu.c
@@ -557,7 +557,11 @@ void cVeDmCurrentschedule::ParseFromRecording(const cRecording *recording) {
string recFolder = "";
RecName(recFullName, recName, recFolder);
tokenContainer->AddStringToken((int)eDMCurrentscheduleST::title, recName.c_str());
+#if defined (APIVERSNUM) && (APIVERSNUM >= 20502)
+ cRecordingInfo *info = recording->Info();
+#else
const cRecordingInfo *info = recording->Info();
+#endif
if (info)
tokenContainer->AddStringToken((int)eDMCurrentscheduleST::subtitle, info->ShortText());
tokenContainer->AddIntToken((int)eDMCurrentscheduleIT::duration, recording->LengthInSeconds() / 60);
@@ -988,7 +992,12 @@ bool cVeDmLastrecordings::Parse(bool forced) {
#endif
string recName = "";
string recSeriesName = "";
+#if defined (APIVERSNUM) && (APIVERSNUM >= 20502)
+ cRecordingInfo *recInfo = recording->Info();
+#else
const cRecordingInfo *recInfo = recording->Info();
+#endif
+
if (recInfo) {
recName = recInfo->Title() ? recInfo->Title() : "";
if (recInfo->Title() && recInfo->ShortText()) {
@@ -1224,15 +1233,17 @@ bool cVeDmDetailheaderRec::Parse(bool forced) {
tokenContainer->Clear();
tokenContainer->AddStringToken((int)eDmDetailedHeaderRecST::name, recording->Name());
+#if defined (APIVERSNUM) && (APIVERSNUM >= 20502)
+ cRecordingInfo *info = recording->Info();
+#else
const cRecordingInfo *info = recording->Info();
+#endif
if (info) {
tokenContainer->AddStringToken((int)eDmDetailedHeaderRecST::epgname, info->Title());
tokenContainer->AddStringToken((int)eDmDetailedHeaderRecST::shorttext, info->ShortText());
tokenContainer->AddIntToken((int)eDmDetailedHeaderRecIT::framesPerSecond, info->FramesPerSecond());
int errors = -1;
-#if defined (APIVERSNUM) && (APIVERSNUM >= 20504)
errors = info->Errors();
-#endif
tokenContainer->AddIntToken((int)eDmDetailedHeaderRecIT::errors, errors);
const cEvent *event = info->GetEvent();
if (event) {
Display More