1
0
mirror of https://github.com/VDR4Arch/vdr.git synced 2023-10-10 13:36:52 +02:00

The function cEpgHandlers::BeginSegmentTransfer() is now boolean

This commit is contained in:
Klaus Schmidinger 2017-03-31 15:24:35 +02:00
parent 112bfa5897
commit d6f57259fa
5 changed files with 21 additions and 9 deletions

View File

@ -2618,6 +2618,7 @@ J
for adding HandledExternally() to the EPG handler interface for adding HandledExternally() to the EPG handler interface
for adding IsUpdate() to the EPG handler interface for adding IsUpdate() to the EPG handler interface
for adding Begin/EndSegmentTransfer() to the EPG handler interface for adding Begin/EndSegmentTransfer() to the EPG handler interface
for making cEpgHandlers::BeginSegmentTransfer() boolean
Peter Pinnau <vdr@unterbrecher.de> Peter Pinnau <vdr@unterbrecher.de>
for reporting that 'uint32_t' requires including stdint.h in font.h on some systems for reporting that 'uint32_t' requires including stdint.h in font.h on some systems

View File

@ -8925,8 +8925,10 @@ Video Disk Recorder Revision History
- Now stopping any ongoing recordings before stopping the plugins, to avoid - Now stopping any ongoing recordings before stopping the plugins, to avoid
a crash when stopping VDR while recording. a crash when stopping VDR while recording.
2017-03-30: Version 2.3.4 2017-03-31: Version 2.3.4
- The functionality of HandleRemoteModifications(), which synchronizes changes to - The functionality of HandleRemoteModifications(), which synchronizes changes to
timers between peer VDR machines, has been moved to timers.[ch] and renamed to timers between peer VDR machines, has been moved to timers.[ch] and renamed to
HandleRemoteTimerModifications(). It now also handles deleting remote timers. HandleRemoteTimerModifications(). It now also handles deleting remote timers.
- The function cEpgHandlers::BeginSegmentTransfer() is now boolean (thanks to
Jörg Wendel). See the description in epg.h for the meaning of the return value.

9
eit.c
View File

@ -8,7 +8,7 @@
* Robert Schneider <Robert.Schneider@web.de> and Rolf Hakenes <hakenes@hippomi.de>. * Robert Schneider <Robert.Schneider@web.de> and Rolf Hakenes <hakenes@hippomi.de>.
* Adapted to 'libsi' for VDR 1.3.0 by Marcel Wiesweg <marcel.wiesweg@gmx.de>. * Adapted to 'libsi' for VDR 1.3.0 by Marcel Wiesweg <marcel.wiesweg@gmx.de>.
* *
* $Id: eit.c 4.1 2015/08/23 10:43:36 kls Exp $ * $Id: eit.c 4.2 2017/03/31 15:16:46 kls Exp $
*/ */
#include "eit.h" #include "eit.h"
@ -67,8 +67,13 @@ cEIT::cEIT(cSectionSyncerHash &SectionSyncerHash, int Source, u_char Tid, const
return; return;
} }
if (!EpgHandlers.BeginSegmentTransfer(Channel)) {
SchedulesStateKey.Remove(false);
ChannelsStateKey.Remove(false);
return;
}
bool ChannelsModified = false; bool ChannelsModified = false;
EpgHandlers.BeginSegmentTransfer(Channel);
bool handledExternally = EpgHandlers.HandledExternally(Channel); bool handledExternally = EpgHandlers.HandledExternally(Channel);
cSchedule *pSchedule = (cSchedule *)Schedules->GetSchedule(Channel, true); cSchedule *pSchedule = (cSchedule *)Schedules->GetSchedule(Channel, true);

9
epg.c
View File

@ -7,7 +7,7 @@
* Original version (as used in VDR before 1.3.0) written by * Original version (as used in VDR before 1.3.0) written by
* Robert Schneider <Robert.Schneider@web.de> and Rolf Hakenes <hakenes@hippomi.de>. * Robert Schneider <Robert.Schneider@web.de> and Rolf Hakenes <hakenes@hippomi.de>.
* *
* $Id: epg.c 4.2 2015/09/10 10:58:19 kls Exp $ * $Id: epg.c 4.3 2017/03/31 15:16:46 kls Exp $
*/ */
#include "epg.h" #include "epg.h"
@ -1527,12 +1527,13 @@ void cEpgHandlers::DropOutdated(cSchedule *Schedule, time_t SegmentStart, time_t
Schedule->DropOutdated(SegmentStart, SegmentEnd, TableID, Version); Schedule->DropOutdated(SegmentStart, SegmentEnd, TableID, Version);
} }
void cEpgHandlers::BeginSegmentTransfer(const cChannel *Channel) bool cEpgHandlers::BeginSegmentTransfer(const cChannel *Channel)
{ {
for (cEpgHandler *eh = First(); eh; eh = Next(eh)) { for (cEpgHandler *eh = First(); eh; eh = Next(eh)) {
if (eh->BeginSegmentTransfer(Channel, false)) if (!eh->BeginSegmentTransfer(Channel, false))
return; return false;
} }
return true;
} }
void cEpgHandlers::EndSegmentTransfer(bool Modified) void cEpgHandlers::EndSegmentTransfer(bool Modified)

7
epg.h
View File

@ -7,7 +7,7 @@
* Original version (as used in VDR before 1.3.0) written by * Original version (as used in VDR before 1.3.0) written by
* Robert Schneider <Robert.Schneider@web.de> and Rolf Hakenes <hakenes@hippomi.de>. * Robert Schneider <Robert.Schneider@web.de> and Rolf Hakenes <hakenes@hippomi.de>.
* *
* $Id: epg.h 4.1 2015/08/09 11:25:04 kls Exp $ * $Id: epg.h 4.2 2017/03/31 15:24:35 kls Exp $
*/ */
#ifndef __EPG_H #ifndef __EPG_H
@ -284,6 +284,9 @@ public:
virtual bool BeginSegmentTransfer(const cChannel *Channel, bool Dummy) { return false; } // TODO remove obsolete Dummy virtual bool BeginSegmentTransfer(const cChannel *Channel, bool Dummy) { return false; } // TODO remove obsolete Dummy
///< Called directly after IgnoreChannel() before any other handler method is called. ///< Called directly after IgnoreChannel() before any other handler method is called.
///< Designed to give handlers the possibility to prepare a database transaction. ///< Designed to give handlers the possibility to prepare a database transaction.
///< If any EPG handler returns false in this function, it is assumed that
///< the EPG for the given Channel has to be handled later due to some transaction problems,
///> therefore the processing will aborted.
///< Dummy is for backward compatibility and may be removed in a future version. ///< Dummy is for backward compatibility and may be removed in a future version.
virtual bool EndSegmentTransfer(bool Modified, bool Dummy) { return false; } // TODO remove obsolete Dummy virtual bool EndSegmentTransfer(bool Modified, bool Dummy) { return false; } // TODO remove obsolete Dummy
///< Called after the segment data has been processed. ///< Called after the segment data has been processed.
@ -311,7 +314,7 @@ public:
void HandleEvent(cEvent *Event); void HandleEvent(cEvent *Event);
void SortSchedule(cSchedule *Schedule); void SortSchedule(cSchedule *Schedule);
void DropOutdated(cSchedule *Schedule, time_t SegmentStart, time_t SegmentEnd, uchar TableID, uchar Version); void DropOutdated(cSchedule *Schedule, time_t SegmentStart, time_t SegmentEnd, uchar TableID, uchar Version);
void BeginSegmentTransfer(const cChannel *Channel); bool BeginSegmentTransfer(const cChannel *Channel);
void EndSegmentTransfer(bool Modified); void EndSegmentTransfer(bool Modified);
}; };