X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/44e0351dc04a1f4194424eadb75ea0ef68b15628..24dab815808d6be2758f3e63f93b7c171190059e:/lib/dvb/dvb.cpp diff --git a/lib/dvb/dvb.cpp b/lib/dvb/dvb.cpp index f2469365..ad865c08 100644 --- a/lib/dvb/dvb.cpp +++ b/lib/dvb/dvb.cpp @@ -312,6 +312,7 @@ RESULT eDVBResourceManager::allocateChannel(const eDVBChannelID &channelid, eUse } m_cached_channel_state_changed_conn.disconnect(); m_cached_channel=0; + m_releaseCachedChannelTimer.stop(); } // eDebug("allocate channel.. %04x:%04x", channelid.transport_stream_id.get(), channelid.original_network_id.get()); @@ -391,8 +392,7 @@ void eDVBResourceManager::DVBChannelStateChanged(iDVBChannel *chan) void eDVBResourceManager::releaseCachedChannel() { - eDebug("release cached channel"); - m_cached_channel_state_changed_conn.disconnect(); + eDebug("release cached channel (timer timeout)"); m_cached_channel=0; } @@ -404,6 +404,7 @@ RESULT eDVBResourceManager::allocateRawChannel(eUsePtr &channel, in { m_cached_channel_state_changed_conn.disconnect(); m_cached_channel=0; + m_releaseCachedChannelTimer.stop(); } if (allocateFrontendByIndex(fe, frontend_index)) @@ -421,12 +422,6 @@ RESULT eDVBResourceManager::allocatePVRChannel(eUsePtr &channel) { ePtr demux; - if (m_cached_channel) - { - m_cached_channel_state_changed_conn.disconnect(); - m_cached_channel=0; - } - eDVBChannel *ch; ch = new eDVBChannel(this, 0); @@ -1031,7 +1026,7 @@ RESULT eDVBChannel::getCurrentPosition(iDVBDemux *decoding_demux, pts_t &pos, in } if (now < pos) /* wrap around */ - pos = now + ((pts_t)1)<<33 - pos; + pos = now + 0x200000000LL - pos; else pos = now - pos;