1
0
mirror of https://github.com/rofafor/vdr-plugin-femon.git synced 2023-10-10 11:36:53 +00:00

Compare commits

..

3 Commits

Author SHA1 Message Date
Rolf Ahrenberg
64e56af6dc Fixed a race condition in cFemonReceiver (Thanks to Reinhard Nissl). 2007-05-15 04:20:00 +03:00
Rolf Ahrenberg
830aa73e1a Fixed opening while replaying (Thanks to Antti Seppälä for reporting this one). 2007-05-01 04:20:00 +03:00
Rolf Ahrenberg
78048d8ea0 Updated for vdr-1.5.0. 2007-01-08 04:20:00 +02:00
9 changed files with 59 additions and 7 deletions

12
HISTORY
View File

@@ -240,3 +240,15 @@ VDR Plugin 'femon' Revision History
- Added INFO SVDRP command (partially based on patch by Herbert P<>tzl).
- Removed system log option - use SVDRP instead.
- Added --remove-destination to the 'cp' command in Makefile.
2007-01-08: Version 1.1.1
- Updated for vdr-1.5.0.
2007-05-01: Version 1.1.2
- Fixed opening while replaying (Thanks to Antti Sepp<70>l<EFBFBD> for reporting this one).
2007-05-15: Version 1.1.3
- Fixed a race condition in cFemonReceiver (Thanks to Reinhard Nissl).

11
femon.c
View File

@@ -6,6 +6,7 @@
* $Id$
*/
#include <vdr/menu.h>
#include <vdr/remote.h>
#include "femoncfg.h"
#include "femoni18n.h"
@@ -72,7 +73,11 @@ cOsdObject *cPluginFemon::MainMenuAction(void)
{
// Perform the action when selected from the main VDR menu.
Dprintf("%s()\n", __PRETTY_FUNCTION__);
return cFemonOsd::Instance(true);
if (cReplayControl::NowReplaying())
Skins.Message(mtInfo, tr("Femon not available while replaying"));
else
return cFemonOsd::Instance(true);
return NULL;
}
bool cPluginFemon::SetupParse(const char *Name, const char *Value)
@@ -160,6 +165,10 @@ const char **cPluginFemon::SVDRPHelpPages(void)
cString cPluginFemon::SVDRPCommand(const char *Command, const char *Option, int &ReplyCode)
{
if (strcasecmp(Command, "OPEN") == 0) {
if (cReplayControl::NowReplaying()) {
ReplyCode = 550; // Requested action not taken
return cString("Cannot open femon plugin while replaying");
}
if (!cFemonOsd::Instance())
cRemote::CallPlugin("femon");
return cString("Opening femon plugin");

View File

@@ -11,7 +11,7 @@
#include <vdr/plugin.h>
static const char VERSION[] = "1.1.0";
static const char VERSION[] = "1.1.3";
static const char DESCRIPTION[] = "DVB Signal Information Monitor (OSD)";
static const char MAINMENUENTRY[] = "Signal Information";

Binary file not shown.

View File

@@ -2363,6 +2363,28 @@ const tI18nPhrase Phrases[] = {
"", // Dansk
"", // <20>esky (Czech)
},
{ "Femon not available while replaying", // English
"", // Deutsch
"", // Slovenski
"", // Italiano
"", // Nederlands
"", // Portugu<67>s
"", // Fran<61>ais
"", // Norsk
"Signaalimittari ei ole k<>ytett<74>viss<73> toiston aikana", // suomi
"", // Polski
"", // Espa<70>ol
"", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Greek)
"", // Svenska
"", // Romaneste
"", // Magyar
"", // Catal<61>
"", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Russian)
"", // Hrvatski (Croatian)
"", // Eesti
"", // Dansk
"", // <20>esky (Czech)
},
{ NULL }
};

View File

@@ -602,7 +602,7 @@ void cFemonOsd::Show(void)
cChannel *channel = Channels.GetByNumber(cDevice::CurrentChannel());
IS_AUDIO_TRACK(track) ? apid[0] = channel->Apid(int(track - ttAudioFirst)) : apid[0] = channel->Apid(0);
IS_DOLBY_TRACK(track) ? dpid[0] = channel->Dpid(int(track - ttDolbyFirst)) : dpid[0] = channel->Dpid(0);
m_Receiver = new cFemonReceiver(channel->Ca(), channel->Vpid(), apid, dpid);
m_Receiver = new cFemonReceiver(channel->GetChannelID(), channel->Ca(), channel->Vpid(), apid, dpid);
cDevice::ActualDevice()->AttachReceiver(m_Receiver);
}
Start();
@@ -645,7 +645,7 @@ void cFemonOsd::ChannelSwitch(const cDevice * device, int channelNumber)
cChannel *channel = Channels.GetByNumber(cDevice::CurrentChannel());
IS_AUDIO_TRACK(track) ? apid[0] = channel->Apid(int(track - ttAudioFirst)) : apid[0] = channel->Apid(0);
IS_DOLBY_TRACK(track) ? dpid[0] = channel->Dpid(int(track - ttDolbyFirst)) : dpid[0] = channel->Dpid(0);
m_Receiver = new cFemonReceiver(channel->Ca(), channel->Vpid(), apid, dpid);
m_Receiver = new cFemonReceiver(channel->GetChannelID(), channel->Ca(), channel->Vpid(), apid, dpid);
cDevice::ActualDevice()->AttachReceiver(m_Receiver);
}
}
@@ -662,7 +662,7 @@ void cFemonOsd::SetAudioTrack(int Index, const char * const *Tracks)
cChannel *channel = Channels.GetByNumber(cDevice::CurrentChannel());
IS_AUDIO_TRACK(track) ? apid[0] = channel->Apid(int(track - ttAudioFirst)) : apid[0] = channel->Apid(0);
IS_DOLBY_TRACK(track) ? dpid[0] = channel->Dpid(int(track - ttDolbyFirst)) : dpid[0] = channel->Dpid(0);
m_Receiver = new cFemonReceiver(channel->Ca(), channel->Vpid(), apid, dpid);
m_Receiver = new cFemonReceiver(channel->GetChannelID(), channel->Ca(), channel->Vpid(), apid, dpid);
cDevice::ActualDevice()->AttachReceiver(m_Receiver);
}
}
@@ -690,7 +690,11 @@ bool cFemonOsd::DeviceSwitch(int direction)
cDevice::GetDevice(device)->SwitchChannel(channel, true);
if (cDevice::GetDevice(device) == cDevice::PrimaryDevice())
cDevice::GetDevice(device)->ForceTransferMode();
#if defined(APIVERSNUM) && APIVERSNUM < 10500
cControl::Launch(new cTransferControl(cDevice::GetDevice(device), channel->Vpid(), channel->Apids(), channel->Dpids(), channel->Spids()));
#else
cControl::Launch(new cTransferControl(cDevice::GetDevice(device), channel->GetChannelID(), channel->Vpid(), channel->Apids(), channel->Dpids(), channel->Spids()));
#endif
cStatus::MsgChannelSwitch(cDevice::PrimaryDevice(), channel->Number());
return (true);
}

View File

@@ -17,8 +17,12 @@
#define PAYLOAD 0x10
#define PTS_DTS_FLAGS 0xC0
cFemonReceiver::cFemonReceiver(int Ca, int Vpid, int Apid[], int Dpid[])
cFemonReceiver::cFemonReceiver(tChannelID ChannelID, int Ca, int Vpid, int Apid[], int Dpid[])
#if defined(APIVERSNUM) && APIVERSNUM < 10500
:cReceiver(Ca, -1, Vpid, Apid, Dpid, NULL), cThread("femon receiver")
#else
:cReceiver(ChannelID, -1, Vpid, Apid, Dpid, NULL), cThread("femon receiver")
#endif
{
Dprintf("%s()\n", __PRETTY_FUNCTION__);
m_VideoPid = Vpid;
@@ -60,6 +64,7 @@ cFemonReceiver::~cFemonReceiver(void)
Dprintf("%s()\n", __PRETTY_FUNCTION__);
if (Running())
Cancel(3);
Detach();
}
/* The following function originates from libdvbmpeg: */

View File

@@ -96,7 +96,7 @@ protected:
virtual void Action(void);
public:
cFemonReceiver(int Ca, int Vpid, int Apid[], int Dpid[]);
cFemonReceiver(tChannelID ChannelID, int Ca, int Vpid, int Apid[], int Dpid[]);
virtual ~cFemonReceiver();
bool VideoValid(void) { return m_VideoValid; }; // boolean