mirror of
https://github.com/VDR4Arch/vdr.git
synced 2023-10-10 13:36:52 +02:00
Fixed the locking sequence when dumping EPG data
This commit is contained in:
parent
0af3ed548c
commit
2751e239eb
1
HISTORY
1
HISTORY
@ -9063,3 +9063,4 @@ Video Disk Recorder Revision History
|
|||||||
macro DEBUG_LOCKSEQ in thread.c. At the first occurrence of an invalid locking
|
macro DEBUG_LOCKSEQ in thread.c. At the first occurrence of an invalid locking
|
||||||
sequence, the 20 most recent locks will be printed to stderr, followed by a
|
sequence, the 20 most recent locks will be printed to stderr, followed by a
|
||||||
backtrace that led to the call in question.
|
backtrace that led to the call in question.
|
||||||
|
- Fixed the locking sequence when dumping EPG data.
|
||||||
|
8
epg.c
8
epg.c
@ -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.7 2017/05/28 11:30:32 kls Exp $
|
* $Id: epg.c 4.8 2017/05/28 13:08:09 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "epg.h"
|
#include "epg.h"
|
||||||
@ -1104,9 +1104,8 @@ void cSchedule::Cleanup(time_t Time)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void cSchedule::Dump(FILE *f, const char *Prefix, eDumpMode DumpMode, time_t AtTime) const
|
void cSchedule::Dump(const cChannels *Channels, FILE *f, const char *Prefix, eDumpMode DumpMode, time_t AtTime) const
|
||||||
{
|
{
|
||||||
LOCK_CHANNELS_READ;
|
|
||||||
if (const cChannel *Channel = Channels->GetByChannelID(channelID, true)) {
|
if (const cChannel *Channel = Channels->GetByChannelID(channelID, true)) {
|
||||||
fprintf(f, "%sC %s %s\n", Prefix, *Channel->GetChannelID().ToString(), Channel->Name());
|
fprintf(f, "%sC %s %s\n", Prefix, *Channel->GetChannelID().ToString(), Channel->Name());
|
||||||
const cEvent *p;
|
const cEvent *p;
|
||||||
@ -1280,9 +1279,10 @@ bool cSchedules::Dump(FILE *f, const char *Prefix, eDumpMode DumpMode, time_t At
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
LOCK_CHANNELS_READ;
|
||||||
LOCK_SCHEDULES_READ;
|
LOCK_SCHEDULES_READ;
|
||||||
for (const cSchedule *p = Schedules->First(); p; p = Schedules->Next(p))
|
for (const cSchedule *p = Schedules->First(); p; p = Schedules->Next(p))
|
||||||
p->Dump(f, Prefix, DumpMode, AtTime);
|
p->Dump(Channels, f, Prefix, DumpMode, AtTime);
|
||||||
if (sf) {
|
if (sf) {
|
||||||
sf->Close();
|
sf->Close();
|
||||||
delete sf;
|
delete sf;
|
||||||
|
4
epg.h
4
epg.h
@ -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.6 2017/05/09 12:15:14 kls Exp $
|
* $Id: epg.h 4.7 2017/05/28 12:59:20 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __EPG_H
|
#ifndef __EPG_H
|
||||||
@ -185,7 +185,7 @@ public:
|
|||||||
const cEvent *GetFollowingEvent(void) const;
|
const cEvent *GetFollowingEvent(void) const;
|
||||||
const cEvent *GetEvent(tEventID EventID, time_t StartTime = 0) const;
|
const cEvent *GetEvent(tEventID EventID, time_t StartTime = 0) const;
|
||||||
const cEvent *GetEventAround(time_t Time) const;
|
const cEvent *GetEventAround(time_t Time) const;
|
||||||
void Dump(FILE *f, const char *Prefix = "", eDumpMode DumpMode = dmAll, time_t AtTime = 0) const;
|
void Dump(const cChannels *Channels, FILE *f, const char *Prefix = "", eDumpMode DumpMode = dmAll, time_t AtTime = 0) const;
|
||||||
static bool Read(FILE *f, cSchedules *Schedules);
|
static bool Read(FILE *f, cSchedules *Schedules);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
6
svdrp.c
6
svdrp.c
@ -10,7 +10,7 @@
|
|||||||
* and interact with the Video Disk Recorder - or write a full featured
|
* and interact with the Video Disk Recorder - or write a full featured
|
||||||
* graphical interface that sits on top of an SVDRP connection.
|
* graphical interface that sits on top of an SVDRP connection.
|
||||||
*
|
*
|
||||||
* $Id: svdrp.c 4.18 2017/05/18 15:51:24 kls Exp $
|
* $Id: svdrp.c 4.19 2017/05/28 13:05:23 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "svdrp.h"
|
#include "svdrp.h"
|
||||||
@ -1615,6 +1615,7 @@ void cSVDRPServer::CmdLSTC(const char *Option)
|
|||||||
|
|
||||||
void cSVDRPServer::CmdLSTE(const char *Option)
|
void cSVDRPServer::CmdLSTE(const char *Option)
|
||||||
{
|
{
|
||||||
|
LOCK_CHANNELS_READ;
|
||||||
LOCK_SCHEDULES_READ;
|
LOCK_SCHEDULES_READ;
|
||||||
const cSchedule* Schedule = NULL;
|
const cSchedule* Schedule = NULL;
|
||||||
eDumpMode DumpMode = dmAll;
|
eDumpMode DumpMode = dmAll;
|
||||||
@ -1646,7 +1647,6 @@ void cSVDRPServer::CmdLSTE(const char *Option)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (!Schedule) {
|
else if (!Schedule) {
|
||||||
LOCK_CHANNELS_READ;
|
|
||||||
const cChannel* Channel = NULL;
|
const cChannel* Channel = NULL;
|
||||||
if (isnumber(p))
|
if (isnumber(p))
|
||||||
Channel = Channels->GetByNumber(strtol(Option, NULL, 10));
|
Channel = Channels->GetByNumber(strtol(Option, NULL, 10));
|
||||||
@ -1676,7 +1676,7 @@ void cSVDRPServer::CmdLSTE(const char *Option)
|
|||||||
FILE *f = fdopen(fd, "w");
|
FILE *f = fdopen(fd, "w");
|
||||||
if (f) {
|
if (f) {
|
||||||
if (Schedule)
|
if (Schedule)
|
||||||
Schedule->Dump(f, "215-", DumpMode, AtTime);
|
Schedule->Dump(Channels, f, "215-", DumpMode, AtTime);
|
||||||
else
|
else
|
||||||
Schedules->Dump(f, "215-", DumpMode, AtTime);
|
Schedules->Dump(f, "215-", DumpMode, AtTime);
|
||||||
fflush(f);
|
fflush(f);
|
||||||
|
Loading…
Reference in New Issue
Block a user