summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoretobi <git@e-tobi.net>2009-10-25 19:33:00 +0100
committeretobi <git@e-tobi.net>2009-10-25 19:33:00 +0100
commitbd012765a88067d3806e208923674750fffa0542 (patch)
tree39d96ba9c957f9c748f8aa67fd09ae66f15b4be8
parentee0b7d685e1eccb22cc4d5ed0d7bd9bded052949 (diff)
downloadvdr-plugin-osdteletext-bd012765a88067d3806e208923674750fffa0542.tar.gz
vdr-plugin-osdteletext-bd012765a88067d3806e208923674750fffa0542.tar.bz2
Remove cTxtReceiver::running member and use base class Running() instead
Instead of buffer.Signal() clean up buffer with buffer.Clear() which implicitly will trigger the signal in the base class (References #177) Patch provided by Andreas Brachold
-rw-r--r--txtrecv.c19
-rw-r--r--txtrecv.h3
2 files changed, 7 insertions, 15 deletions
diff --git a/txtrecv.c b/txtrecv.c
index 5abb66a..4fe5aea 100644
--- a/txtrecv.c
+++ b/txtrecv.c
@@ -541,7 +541,7 @@ void cTxtStatus::ChannelSwitch(const cDevice *Device, int ChannelNumber)
cTxtReceiver::cTxtReceiver(int TPid, tChannelID chan)
: cReceiver(chan, -1, TPid), cThread("osdteletext-receiver"),
- TxtPage(0), buffer((188+60)*75), running(false)
+ TxtPage(0), buffer((188+60)*75)
{
Storage::instance()->prepareDirectory(ChannelID());
// 10 ms timeout on getting TS frames
@@ -551,12 +551,8 @@ cTxtReceiver::cTxtReceiver(int TPid, tChannelID chan)
cTxtReceiver::~cTxtReceiver()
{
- cReceiver::Detach();
- if (running) {
- running=false;
- buffer.Signal();
- Cancel(2);
- }
+ Detach();
+ Activate(false);
buffer.Clear();
delete TxtPage;
}
@@ -569,13 +565,11 @@ void cTxtReceiver::Stop()
void cTxtReceiver::Activate(bool On)
{
if (On) {
- if (!running) {
- running=true;
+ if (!Running()) {
Start();
}
}
- else if (running) {
- running = false;
+ else if (Running()) {
buffer.Signal();
Cancel(2);
}
@@ -593,7 +587,7 @@ void cTxtReceiver::Receive(uchar *Data, int Length)
void cTxtReceiver::Action() {
- while (running) {
+ while (Running()) {
cFrame *frame=buffer.Get();
if (frame) {
uchar *Datai=frame->Data();
@@ -612,7 +606,6 @@ void cTxtReceiver::Action() {
}
buffer.Clear();
- running=false;
}
uchar cTxtReceiver::unham16 (uchar *p)
diff --git a/txtrecv.h b/txtrecv.h
index 6c3dd42..b25908b 100644
--- a/txtrecv.h
+++ b/txtrecv.h
@@ -166,9 +166,8 @@ private:
protected:
virtual void Activate(bool On);
virtual void Receive(uchar *Data, int Length);
- void Action();
+ virtual void Action();
cRingTxtFrames buffer;
- bool running;
public:
cTxtReceiver(int TPid, tChannelID chan);
virtual ~cTxtReceiver();