Fixed channel switch issues with priority > 0

This commit is contained in:
Frank Schmirler 2013-10-30 21:18:56 +01:00
parent 69b654d539
commit 458a21a62a
4 changed files with 24 additions and 23 deletions

View File

@ -221,3 +221,6 @@ thomasjfox
hivdr
for adding the pos= parameter for replaying recordings from a certain position
for suggesting to add the HTTP "Server" header
hummel99
for helping to debug channel switch issues with priority > 0

View File

@ -1,6 +1,7 @@
VDR Plugin 'streamdev' Revision History
---------------------------------------
- Fixed channel switch issues with priority > 0
- Removed noisy debug messages
- Fixed HTTP menu destruction
- API change of VDR 2.1.2

View File

@ -90,14 +90,6 @@ bool cStreamdevDevice::IsTunedToTransponder(const cChannel *Channel)
bool cStreamdevDevice::ProvidesChannel(const cChannel *Channel, int Priority,
bool *NeedsDetachReceivers) const {
#if APIVERSNUM >= 10725
bool prio = Priority == IDLEPRIORITY || Priority >= m_ClientSocket->Priority();
#else
bool prio = Priority < 0 || Priority > m_ClientSocket->Priority();
#endif
bool res = prio;
bool ndr = false;
if (m_Disabled || Channel == m_DenyChannel)
return false;
@ -116,6 +108,20 @@ bool cStreamdevDevice::ProvidesChannel(const cChannel *Channel, int Priority,
return false;
}
int newPrio = Priority;
if (Priority == LIVEPRIORITY) {
if (m_ClientSocket->ServerVersion() >= 100 || StreamdevClientSetup.LivePriority >= 0)
newPrio = StreamdevClientSetup.LivePriority;
}
#if APIVERSNUM >= 10725
bool prio = Priority == IDLEPRIORITY || newPrio >= m_ClientSocket->Priority();
#else
bool prio = Priority < 0 || newPrio > m_ClientSocket->Priority();
#endif
bool res = prio;
bool ndr = false;
#if APIVERSNUM >= 10722
if (IsTunedToTransponder(Channel)) {
#else
@ -129,18 +135,10 @@ bool cStreamdevDevice::ProvidesChannel(const cChannel *Channel, int Priority,
ndr = true;
}
else if (prio) {
if (Priority == LIVEPRIORITY) {
if (m_ClientSocket->ServerVersion() >= 100) {
Priority = StreamdevClientSetup.LivePriority;
UpdatePriority(true);
}
else {
if (StreamdevClientSetup.LivePriority >= 0)
Priority = StreamdevClientSetup.LivePriority;
}
}
if (Priority == LIVEPRIORITY && m_ClientSocket->ServerVersion() >= 100)
UpdatePriority(true);
res = m_ClientSocket->ProvidesChannel(Channel, Priority);
res = m_ClientSocket->ProvidesChannel(Channel, newPrio);
ndr = Receiving();
if (m_ClientSocket->ServerVersion() >= 100)

View File

@ -40,10 +40,9 @@ cClientSocket::~cClientSocket()
void cClientSocket::Reset(void)
{
for (int it = 0; it < si_Count; ++it) {
if (m_DataSockets[it] != NULL)
DELETENULL(m_DataSockets[it]);
}
for (int it = 0; it < si_Count; ++it)
DELETENULL(m_DataSockets[it]);
m_Priority = -100;
}
cTBSocket *cClientSocket::DataSocket(eSocketId Id) const {