diff options
| author | Felix Domke <tmbinc@elitedvb.net> | 2005-07-12 14:00:01 +0000 |
|---|---|---|
| committer | Felix Domke <tmbinc@elitedvb.net> | 2005-07-12 14:00:01 +0000 |
| commit | e39c12fcbf218f0964782a48d6e66145e1ce5039 (patch) | |
| tree | 24e8efbaa96d7c180fd750a38078fbc19c066eae /lib/dvb/dvb.cpp | |
| parent | 98c4b5bb004e9297bffa8e1c3572572741fda933 (diff) | |
| download | enigma2-e39c12fcbf218f0964782a48d6e66145e1ce5039.tar.gz enigma2-e39c12fcbf218f0964782a48d6e66145e1ce5039.zip | |
- add eUsePtr for eDVBChannels
Diffstat (limited to 'lib/dvb/dvb.cpp')
| -rw-r--r-- | lib/dvb/dvb.cpp | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/lib/dvb/dvb.cpp b/lib/dvb/dvb.cpp index f1f5580a..35849b4c 100644 --- a/lib/dvb/dvb.cpp +++ b/lib/dvb/dvb.cpp @@ -240,7 +240,7 @@ RESULT eDVBResourceManager::getChannelList(ePtr<iDVBChannelList> &list) } -RESULT eDVBResourceManager::allocateChannel(const eDVBChannelID &channelid, ePtr<iDVBChannel> &channel) +RESULT eDVBResourceManager::allocateChannel(const eDVBChannelID &channelid, eUsePtr<iDVBChannel> &channel) { /* first, check if a channel is already existing. */ @@ -289,7 +289,7 @@ RESULT eDVBResourceManager::allocateChannel(const eDVBChannelID &channelid, ePtr return 0; } -RESULT eDVBResourceManager::allocateRawChannel(ePtr<iDVBChannel> &channel) +RESULT eDVBResourceManager::allocateRawChannel(eUsePtr<iDVBChannel> &channel) { ePtr<eDVBAllocatedFrontend> fe; @@ -383,6 +383,11 @@ void eDVBChannel::frontendStateChanged(iDVBFrontend*fe) { eDebug("fe state changed!"); int state, ourstate = 0; + + /* if we are already in shutdown, don't change state. */ + if (m_state == state_release) + return; + if (fe->getState(state)) return; @@ -408,6 +413,20 @@ void eDVBChannel::frontendStateChanged(iDVBFrontend*fe) } } +void eDVBChannel::AddUse() +{ + ++m_use_count; +} + +void eDVBChannel::ReleaseUse() +{ + if (!--m_use_count) + { + m_state = state_release; + m_stateChanged(this); + } +} + RESULT eDVBChannel::setChannel(const eDVBChannelID &channelid) { if (m_channel_id) |
