aboutsummaryrefslogtreecommitdiff
path: root/lib/dvb
diff options
context:
space:
mode:
authorAndreas Monzner <andreas.monzner@multimedia-labs.de>2008-10-29 22:44:53 +0000
committerAndreas Monzner <andreas.monzner@multimedia-labs.de>2008-10-29 22:44:53 +0000
commit0c59a4279f93f08fe95fca5f2e55f3e025f0cceb (patch)
tree71e8c11f2a5487afe84d637d388d3cb060bc9ad5 /lib/dvb
parent4edb65fafb64b52007598e05a1e5b16b75ea752c (diff)
downloadenigma2-0c59a4279f93f08fe95fca5f2e55f3e025f0cceb.tar.gz
enigma2-0c59a4279f93f08fe95fca5f2e55f3e025f0cceb.zip
also use refcounting for eTimers
its now no more possible directly to call new eTimer .. or to embedded eTimer. to create a eTimer now eTimer::create must be used... to delete you must call ->AddRef() after timer creation and ->Release when the timer is no more needed. Or use ePtr<eTimer> to store the timer reference.. then its enough to set the ePtr<eTimer> object to 0 when the timer is no more needed
Diffstat (limited to 'lib/dvb')
-rw-r--r--lib/dvb/decoder.cpp6
-rw-r--r--lib/dvb/decoder.h2
-rw-r--r--lib/dvb/dvb.cpp16
-rw-r--r--lib/dvb/dvb.h10
-rw-r--r--lib/dvb/dvbtime.cpp6
-rw-r--r--lib/dvb/dvbtime.h2
-rw-r--r--lib/dvb/epgcache.cpp36
-rw-r--r--lib/dvb/epgcache.h8
-rw-r--r--lib/dvb/esection.cpp8
-rw-r--r--lib/dvb/esection.h2
-rw-r--r--lib/dvb/frontend.cpp6
-rw-r--r--lib/dvb/frontend.h3
-rw-r--r--lib/dvb/pmt.cpp8
-rw-r--r--lib/dvb/pmt.h2
-rw-r--r--lib/dvb/radiotext.cpp8
-rw-r--r--lib/dvb/radiotext.h2
16 files changed, 57 insertions, 68 deletions
diff --git a/lib/dvb/decoder.cpp b/lib/dvb/decoder.cpp
index c550163e..0ce59d01 100644
--- a/lib/dvb/decoder.cpp
+++ b/lib/dvb/decoder.cpp
@@ -931,10 +931,10 @@ RESULT eTSMPEGDecoder::setAC3Delay(int delay)
}
eTSMPEGDecoder::eTSMPEGDecoder(eDVBDemux *demux, int decoder)
- :m_demux(demux), m_changed(0), m_decoder(decoder), m_video_clip_fd(-1), m_showSinglePicTimer(eApp)
+ :m_demux(demux), m_changed(0), m_decoder(decoder), m_video_clip_fd(-1), m_showSinglePicTimer(eTimer::create(eApp))
{
demux->connectEvent(slot(*this, &eTSMPEGDecoder::demux_event), m_demux_event_conn);
- CONNECT(m_showSinglePicTimer.timeout, eTSMPEGDecoder::finishShowSinglePic);
+ CONNECT(m_showSinglePicTimer->timeout, eTSMPEGDecoder::finishShowSinglePic);
m_is_ff = m_is_sm = m_is_trickmode = 0;
}
@@ -1191,7 +1191,7 @@ RESULT eTSMPEGDecoder::showSinglePic(const char *filename)
if (!seq_end_avail)
write(m_video_clip_fd, seq_end, sizeof(seq_end));
write(m_video_clip_fd, stuffing, 8192);
- m_showSinglePicTimer.start(150, true);
+ m_showSinglePicTimer->start(150, true);
}
close(f);
}
diff --git a/lib/dvb/decoder.h b/lib/dvb/decoder.h
index a652e094..05e07ef9 100644
--- a/lib/dvb/decoder.h
+++ b/lib/dvb/decoder.h
@@ -131,7 +131,7 @@ private:
void video_event(struct videoEvent);
Signal1<void, struct videoEvent> m_video_event;
int m_video_clip_fd;
- eTimer m_showSinglePicTimer;
+ ePtr<eTimer> m_showSinglePicTimer;
void finishShowSinglePic(); // called by timer
public:
enum { pidNone = -1 };
diff --git a/lib/dvb/dvb.cpp b/lib/dvb/dvb.cpp
index 4482d3e7..68d9a0dd 100644
--- a/lib/dvb/dvb.cpp
+++ b/lib/dvb/dvb.cpp
@@ -61,7 +61,7 @@ ePtr<eDVBResourceManager> NewResourceManagerPtr(void)
}
eDVBResourceManager::eDVBResourceManager()
- :m_releaseCachedChannelTimer(eApp)
+ :m_releaseCachedChannelTimer(eTimer::create(eApp))
{
avail = 1;
busy = 0;
@@ -86,7 +86,7 @@ eDVBResourceManager::eDVBResourceManager()
eDVBCAService::registerChannelCallback(this);
- CONNECT(m_releaseCachedChannelTimer.timeout, eDVBResourceManager::releaseCachedChannel);
+ CONNECT(m_releaseCachedChannelTimer->timeout, eDVBResourceManager::releaseCachedChannel);
}
void eDVBResourceManager::feStateChanged()
@@ -541,7 +541,7 @@ RESULT eDVBResourceManager::allocateChannel(const eDVBChannelID &channelid, eUse
}
m_cached_channel_state_changed_conn.disconnect();
m_cached_channel=0;
- m_releaseCachedChannelTimer.stop();
+ m_releaseCachedChannelTimer->stop();
}
eDebugNoSimulate("allocate channel.. %04x:%04x", channelid.transport_stream_id.get(), channelid.original_network_id.get());
@@ -611,13 +611,13 @@ void eDVBResourceManager::DVBChannelStateChanged(iDVBChannel *chan)
case iDVBChannel::state_ok:
{
eDebug("stop release channel timer");
- m_releaseCachedChannelTimer.stop();
+ m_releaseCachedChannelTimer->stop();
break;
}
case iDVBChannel::state_last_instance:
{
eDebug("start release channel timer");
- m_releaseCachedChannelTimer.start(3000, true);
+ m_releaseCachedChannelTimer->start(3000, true);
break;
}
default: // ignore all other events
@@ -639,7 +639,7 @@ RESULT eDVBResourceManager::allocateRawChannel(eUsePtr<iDVBChannel> &channel, in
{
m_cached_channel_state_changed_conn.disconnect();
m_cached_channel=0;
- m_releaseCachedChannelTimer.stop();
+ m_releaseCachedChannelTimer->stop();
}
int err = allocateFrontendByIndex(fe, slot_index);
@@ -655,11 +655,11 @@ RESULT eDVBResourceManager::allocatePVRChannel(eUsePtr<iDVBPVRChannel> &channel)
{
ePtr<eDVBAllocatedDemux> demux;
- if (m_cached_channel && m_releaseCachedChannelTimer.isActive())
+ if (m_cached_channel && m_releaseCachedChannelTimer->isActive())
{
m_cached_channel_state_changed_conn.disconnect();
m_cached_channel=0;
- m_releaseCachedChannelTimer.stop();
+ m_releaseCachedChannelTimer->stop();
}
channel = new eDVBChannel(this, 0);
diff --git a/lib/dvb/dvb.h b/lib/dvb/dvb.h
index bceb9ad0..1a773efa 100644
--- a/lib/dvb/dvb.h
+++ b/lib/dvb/dvb.h
@@ -22,7 +22,7 @@ class iDVBAdapter;
class eDVBRegisteredFrontend: public iObject, public Object
{
DECLARE_REF(eDVBRegisteredFrontend);
- eTimer *disable;
+ ePtr<eTimer> disable;
void closeFrontend()
{
if (!m_inuse && m_frontend->closeFrontend()) // frontend busy
@@ -31,14 +31,10 @@ class eDVBRegisteredFrontend: public iObject, public Object
public:
Signal0<void> stateChanged;
eDVBRegisteredFrontend(eDVBFrontend *fe, iDVBAdapter *adap)
- :disable(new eTimer(eApp)), m_adapter(adap), m_frontend(fe), m_inuse(0)
+ :disable(eTimer::create(eApp)), m_adapter(adap), m_frontend(fe), m_inuse(0)
{
CONNECT(disable->timeout, eDVBRegisteredFrontend::closeFrontend);
}
- ~eDVBRegisteredFrontend()
- {
- delete disable;
- }
void dec_use()
{
if (!--m_inuse)
@@ -164,7 +160,7 @@ class eDVBResourceManager: public iObject, public Object
eUsePtr<iDVBChannel> m_cached_channel;
Connection m_cached_channel_state_changed_conn;
- eTimer m_releaseCachedChannelTimer;
+ ePtr<eTimer> m_releaseCachedChannelTimer;
void DVBChannelStateChanged(iDVBChannel*);
void feStateChanged();
#ifndef SWIG
diff --git a/lib/dvb/dvbtime.cpp b/lib/dvb/dvbtime.cpp
index 42b12e85..4c5911c9 100644
--- a/lib/dvb/dvbtime.cpp
+++ b/lib/dvb/dvbtime.cpp
@@ -86,10 +86,10 @@ time_t parseDVBtime(__u8 t1, __u8 t2, __u8 t3, __u8 t4, __u8 t5)
}
TDT::TDT(eDVBChannel *chan, int update_count)
- :chan(chan), update_count(update_count)
+ :chan(chan), m_interval_timer(eTimer::create()), update_count(update_count)
{
CONNECT(tableReady, TDT::ready);
- CONNECT(m_interval_timer.timeout, TDT::start);
+ CONNECT(m_interval_timer->timeout, TDT::start);
if (chan)
chan->getDemux(demux, 0);
}
@@ -136,7 +136,7 @@ void TDT::start()
void TDT::startTimer( int interval )
{
- m_interval_timer.start(interval, true);
+ m_interval_timer->start(interval, true);
}
eDVBLocalTimeHandler *eDVBLocalTimeHandler::instance;
diff --git a/lib/dvb/dvbtime.h b/lib/dvb/dvbtime.h
index ffcfaa41..efb85962 100644
--- a/lib/dvb/dvbtime.h
+++ b/lib/dvb/dvbtime.h
@@ -31,7 +31,7 @@ class TDT: public eGTable
{
eDVBChannel *chan;
ePtr<iDVBDemux> demux;
- eTimer m_interval_timer;
+ ePtr<eTimer> m_interval_timer;
int createTable(unsigned int nr, const __u8 *data, unsigned int max);
void ready(int);
int update_count;
diff --git a/lib/dvb/epgcache.cpp b/lib/dvb/epgcache.cpp
index 1a07755f..0bb6e25b 100644
--- a/lib/dvb/epgcache.cpp
+++ b/lib/dvb/epgcache.cpp
@@ -213,13 +213,13 @@ pthread_mutex_t eEPGCache::channel_map_lock=
DEFINE_REF(eEPGCache)
eEPGCache::eEPGCache()
- :messages(this,1), cleanTimer(this)//, paused(0)
+ :messages(this,1), cleanTimer(eTimer::create(this))//, paused(0)
{
eDebug("[EPGC] Initialized EPGCache");
CONNECT(messages.recv_msg, eEPGCache::gotMessage);
CONNECT(eDVBLocalTimeHandler::getInstance()->m_timeUpdated, eEPGCache::timeUpdated);
- CONNECT(cleanTimer.timeout, eEPGCache::cleanLoop);
+ CONNECT(cleanTimer->timeout, eEPGCache::cleanLoop);
ePtr<eDVBResourceManager> res_mgr;
eDVBResourceManager::getInstance(res_mgr);
@@ -783,7 +783,7 @@ void eEPGCache::cleanLoop()
eDebug("[EPGC] stop cleanloop");
eDebug("[EPGC] %i bytes for cache used", eventData::CacheSize);
}
- cleanTimer.start(CLEAN_INTERVAL,true);
+ cleanTimer->start(CLEAN_INTERVAL,true);
}
eEPGCache::~eEPGCache()
@@ -847,7 +847,7 @@ void eEPGCache::gotMessage( const Message &msg )
int update = ( It != channelLastUpdated.end() ? ( UPDATE_INTERVAL - ( (::time(0)-It->second) * 1000 ) ) : ZAP_DELAY );
if (update < ZAP_DELAY)
update = ZAP_DELAY;
- data->startPrivateTimer.start(update, 1);
+ data->startPrivateTimer->start(update, 1);
if (update >= 60000)
eDebug("[EPGC] next private update in %i min", update/60000);
else if (update >= 1000)
@@ -1088,22 +1088,22 @@ void eEPGCache::save()
eEPGCache::channel_data::channel_data(eEPGCache *ml)
:cache(ml)
- ,abortTimer(ml), zapTimer(ml), state(0)
+ ,abortTimer(eTimer::create(ml)), zapTimer(eTimer::create(ml)), state(0)
,isRunning(0), haveData(0)
#ifdef ENABLE_PRIVATE_EPG
- ,startPrivateTimer(ml)
+ ,startPrivateTimer(eTimer::create(ml))
#endif
#ifdef ENABLE_MHW_EPG
- ,m_MHWTimeoutTimer(ml)
+ ,m_MHWTimeoutTimer(eTimer::create(ml))
#endif
{
#ifdef ENABLE_MHW_EPG
- CONNECT(m_MHWTimeoutTimer.timeout, eEPGCache::channel_data::MHWTimeout);
+ CONNECT(m_MHWTimeoutTimer->timeout, eEPGCache::channel_data::MHWTimeout);
#endif
- CONNECT(zapTimer.timeout, eEPGCache::channel_data::startEPG);
- CONNECT(abortTimer.timeout, eEPGCache::channel_data::abortNonAvail);
+ CONNECT(zapTimer->timeout, eEPGCache::channel_data::startEPG);
+ CONNECT(abortTimer->timeout, eEPGCache::channel_data::abortNonAvail);
#ifdef ENABLE_PRIVATE_EPG
- CONNECT(startPrivateTimer.timeout, eEPGCache::channel_data::startPrivateReader);
+ CONNECT(startPrivateTimer->timeout, eEPGCache::channel_data::startPrivateReader);
#endif
pthread_mutex_init(&channel_active, 0);
}
@@ -1113,7 +1113,7 @@ bool eEPGCache::channel_data::finishEPG()
if (!isRunning) // epg ready
{
eDebug("[EPGC] stop caching events(%ld)", ::time(0));
- zapTimer.start(UPDATE_INTERVAL, 1);
+ zapTimer->start(UPDATE_INTERVAL, 1);
eDebug("[EPGC] next update in %i min", UPDATE_INTERVAL / 60000);
for (int i=0; i < 3; ++i)
{
@@ -1186,7 +1186,7 @@ void eEPGCache::channel_data::startEPG()
m_ScheduleOtherReader->start(mask);
isRunning |= SCHEDULE_OTHER;
- abortTimer.start(7000,true);
+ abortTimer->start(7000,true);
}
void eEPGCache::channel_data::abortNonAvail()
@@ -1226,7 +1226,7 @@ void eEPGCache::channel_data::abortNonAvail()
}
#endif
if ( isRunning )
- abortTimer.start(90000, true);
+ abortTimer->start(90000, true);
else
{
++state;
@@ -1250,7 +1250,7 @@ void eEPGCache::channel_data::startChannel()
if (update < ZAP_DELAY)
update = ZAP_DELAY;
- zapTimer.start(update, 1);
+ zapTimer->start(update, 1);
if (update >= 60000)
eDebug("[EPGC] next update in %i min", update/60000);
else if (update >= 1000)
@@ -1264,8 +1264,8 @@ void eEPGCache::channel_data::abortEPG()
seenSections[i].clear();
calcedSections[i].clear();
}
- abortTimer.stop();
- zapTimer.stop();
+ abortTimer->stop();
+ zapTimer->stop();
if (isRunning)
{
eDebug("[EPGC] abort caching events !!");
@@ -2919,7 +2919,7 @@ void eEPGCache::channel_data::storeTitle(std::map<__u32, mhw_title_t>::iterator
void eEPGCache::channel_data::startTimeout(int msec)
{
- m_MHWTimeoutTimer.start(msec,true);
+ m_MHWTimeoutTimer->start(msec,true);
m_MHWTimeoutet=false;
}
diff --git a/lib/dvb/epgcache.h b/lib/dvb/epgcache.h
index 5e5e7e8e..fc42ded5 100644
--- a/lib/dvb/epgcache.h
+++ b/lib/dvb/epgcache.h
@@ -155,7 +155,7 @@ class eEPGCache: public eMainloop, private eThread, public Object
pthread_mutex_t channel_active;
channel_data(eEPGCache*);
eEPGCache *cache;
- eTimer abortTimer, zapTimer;
+ ePtr<eTimer> abortTimer, zapTimer;
int prevChannelState;
__u8 state, isRunning, haveData;
ePtr<eDVBChannel> channel;
@@ -163,7 +163,7 @@ class eEPGCache: public eMainloop, private eThread, public Object
ePtr<iDVBSectionReader> m_NowNextReader, m_ScheduleReader, m_ScheduleOtherReader;
tidMap seenSections[3], calcedSections[3];
#ifdef ENABLE_PRIVATE_EPG
- eTimer startPrivateTimer;
+ ePtr<eTimer> startPrivateTimer;
int m_PrevVersion;
int m_PrivatePid;
uniqueEPGKey m_PrivateService;
@@ -181,7 +181,7 @@ class eEPGCache: public eMainloop, private eThread, public Object
ePtr<eConnection> m_MHWConn, m_MHWConn2;
ePtr<iDVBSectionReader> m_MHWReader, m_MHWReader2;
eDVBSectionFilterMask m_MHWFilterMask, m_MHWFilterMask2;
- eTimer m_MHWTimeoutTimer;
+ ePtr<eTimer> m_MHWTimeoutTimer;
bool m_MHWTimeoutet;
void MHWTimeout() { m_MHWTimeoutet=true; }
void readMHWData(const __u8 *data);
@@ -249,7 +249,7 @@ private:
friend class channel_data;
static eEPGCache *instance;
- eTimer cleanTimer;
+ ePtr<eTimer> cleanTimer;
std::map<iDVBChannel*, channel_data*> m_knownChannels;
ePtr<eConnection> m_chanAddedConn;
diff --git a/lib/dvb/esection.cpp b/lib/dvb/esection.cpp
index 8ec07901..28e37cbc 100644
--- a/lib/dvb/esection.cpp
+++ b/lib/dvb/esection.cpp
@@ -50,7 +50,7 @@ void eGTable::timeout()
}
eGTable::eGTable(bool debug):
- m_timeout(0), m_debug(debug), error(0)
+ m_debug(debug), error(0)
{
}
@@ -130,9 +130,7 @@ RESULT eGTable::start(iDVBSectionReader *reader, const eDVBTableSpec &table)
if (m_table.flags & eDVBTableSpec::tfHaveTimeout)
{
- if (m_timeout)
- delete m_timeout;
- m_timeout = new eTimer(eApp);
+ m_timeout = eTimer::create(eApp);
m_timeout->start(m_table.timeout, 1); // begin timeout
CONNECT(m_timeout->timeout, eGTable::timeout);
}
@@ -152,8 +150,6 @@ RESULT eGTable::start(iDVBDemux *demux, const eDVBTableSpec &table)
eGTable::~eGTable()
{
- if (m_timeout)
- delete m_timeout;
}
void eAUGTable::slotTableReady(int error)
diff --git a/lib/dvb/esection.h b/lib/dvb/esection.h
index ae806652..5720d5de 100644
--- a/lib/dvb/esection.h
+++ b/lib/dvb/esection.h
@@ -15,7 +15,7 @@ class eGTable: public iObject, public Object
unsigned int m_tries;
- eTimer *m_timeout;
+ ePtr<eTimer> m_timeout;
void sectionRead(const __u8 *data);
void timeout();
diff --git a/lib/dvb/frontend.cpp b/lib/dvb/frontend.cpp
index 01eb27ae..1bcacc03 100644
--- a/lib/dvb/frontend.cpp
+++ b/lib/dvb/frontend.cpp
@@ -455,10 +455,10 @@ eDVBFrontend::eDVBFrontend(int adap, int fe, int &ok, bool simulate)
sprintf(m_filename, "/dev/dvb/adapter%d/frontend%d", adap, fe);
#endif
- m_timeout = new eTimer(eApp);
+ m_timeout = eTimer::create(eApp);
CONNECT(m_timeout->timeout, eDVBFrontend::timeout);
- m_tuneTimer = new eTimer(eApp);
+ m_tuneTimer = eTimer::create(eApp);
CONNECT(m_tuneTimer->timeout, eDVBFrontend::tuneLoop);
for (int i=0; i<eDVBFrontend::NUM_DATA_ENTRIES; ++i)
@@ -617,8 +617,6 @@ eDVBFrontend::~eDVBFrontend()
{
m_data[LINKED_PREV_PTR] = m_data[LINKED_NEXT_PTR] = -1;
closeFrontend();
- delete m_timeout;
- delete m_tuneTimer;
}
void eDVBFrontend::feEvent(int w)
diff --git a/lib/dvb/frontend.h b/lib/dvb/frontend.h
index 61ea3bcf..06ed12cc 100644
--- a/lib/dvb/frontend.h
+++ b/lib/dvb/frontend.h
@@ -87,8 +87,7 @@ private:
ePtr<iDVBSatelliteEquipmentControl> m_sec;
ePtr<eSocketNotifier> m_sn;
int m_tuning;
- eTimer *m_timeout;
- eTimer *m_tuneTimer;
+ ePtr<eTimer> m_timeout, m_tuneTimer;
eSecCommandList m_sec_sequence;
diff --git a/lib/dvb/pmt.cpp b/lib/dvb/pmt.cpp
index 8364be53..80fbcab3 100644
--- a/lib/dvb/pmt.cpp
+++ b/lib/dvb/pmt.cpp
@@ -671,10 +671,10 @@ ChannelMap eDVBCAService::exist_channels;
ePtr<eConnection> eDVBCAService::m_chanAddedConn;
eDVBCAService::eDVBCAService()
- : m_prev_build_hash(0), m_sendstate(0), m_retryTimer(eApp)
+ : m_prev_build_hash(0), m_sendstate(0), m_retryTimer(eTimer::create(eApp))
{
memset(m_used_demux, 0xFF, sizeof(m_used_demux));
- CONNECT(m_retryTimer.timeout, eDVBCAService::sendCAPMT);
+ CONNECT(m_retryTimer->timeout, eDVBCAService::sendCAPMT);
Connect();
}
@@ -1040,11 +1040,11 @@ void eDVBCAService::sendCAPMT()
{
case 0xFFFFFFFF:
++m_sendstate;
- m_retryTimer.start(0,true);
+ m_retryTimer->start(0,true);
// eDebug("[eDVBCAService] send failed .. immediate retry");
break;
default:
- m_retryTimer.start(5000,true);
+ m_retryTimer->start(5000,true);
// eDebug("[eDVBCAService] send failed .. retry in 5 sec");
break;
}
diff --git a/lib/dvb/pmt.h b/lib/dvb/pmt.h
index bd6c4f16..d3a7faa7 100644
--- a/lib/dvb/pmt.h
+++ b/lib/dvb/pmt.h
@@ -44,7 +44,7 @@ class eDVBCAService: public Object
struct sockaddr_un m_servaddr;
unsigned int m_sendstate;
unsigned char m_capmt[2048];
- eTimer m_retryTimer;
+ ePtr<eTimer> m_retryTimer;
void sendCAPMT();
void Connect();
void socketCB(int what);
diff --git a/lib/dvb/radiotext.cpp b/lib/dvb/radiotext.cpp
index 1a8ffd51..9f8cf5f0 100644
--- a/lib/dvb/radiotext.cpp
+++ b/lib/dvb/radiotext.cpp
@@ -7,7 +7,7 @@ DEFINE_REF(eDVBRdsDecoder);
eDVBRdsDecoder::eDVBRdsDecoder(iDVBDemux *demux)
:msgPtr(0), bsflag(0), qdar_pos(0), t_ptr(0), qdarmvi_show(0), state(0)
- ,m_abortTimer(eApp)
+ ,m_abortTimer(eTimer::create(eApp))
{
setStreamID(0xC0, 0xC0);
@@ -18,7 +18,7 @@ eDVBRdsDecoder::eDVBRdsDecoder(iDVBDemux *demux)
eDebug("failed to create PES reader!");
else
m_pes_reader->connectRead(slot(*this, &eDVBRdsDecoder::processData), m_read_connection);
- CONNECT(m_abortTimer.timeout, eDVBRdsDecoder::abortNonAvail);
+ CONNECT(m_abortTimer->timeout, eDVBRdsDecoder::abortNonAvail);
}
eDVBRdsDecoder::~eDVBRdsDecoder()
@@ -193,7 +193,7 @@ void eDVBRdsDecoder::processPESPacket(__u8 *data, int len)
if (data[offs] == 0xFD)
{
- m_abortTimer.stop();
+ m_abortTimer->stop();
int ancillary_len = 1 + data[offs - 1];
offs -= ancillary_len;
gotAncillaryData(data+offs, ancillary_len);
@@ -639,7 +639,7 @@ int eDVBRdsDecoder::start(int pid)
{
int ret = -1;
if (m_pes_reader && !(ret = m_pes_reader->start(pid)))
- m_abortTimer.startLongTimer(20);
+ m_abortTimer->startLongTimer(20);
return ret;
}
diff --git a/lib/dvb/radiotext.h b/lib/dvb/radiotext.h
index 634352f7..ace7b6ec 100644
--- a/lib/dvb/radiotext.h
+++ b/lib/dvb/radiotext.h
@@ -37,7 +37,7 @@ private:
ePtr<iDVBPESReader> m_pes_reader;
ePtr<eConnection> m_read_connection;
Signal1<void, int> m_event;
- eTimer m_abortTimer;
+ ePtr<eTimer> m_abortTimer;
};
#endif