mirror of
https://github.com/LibreELEC/LibreELEC.tv.git
synced 2025-07-29 13:46:49 +00:00
xbmc-pvr: add patch for fix deadlock when switching to a channel that's unavailable by opdenkamp
This commit is contained in:
parent
ab8acdddd3
commit
44d657da92
@ -0,0 +1,54 @@
|
|||||||
|
From 5eb53947a50f951b019d16987630393ffabea008 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Lars Op den Kamp <lars@opdenkamp.eu>
|
||||||
|
Date: Tue, 19 Jul 2011 01:35:30 +0200
|
||||||
|
Subject: [PATCH] pvr: fix deadlock when switching to a channel that's unavailable
|
||||||
|
|
||||||
|
---
|
||||||
|
xbmc/cores/dvdplayer/DVDPlayer.cpp | 5 +++++
|
||||||
|
xbmc/pvr/PVRManager.cpp | 14 ++++++++------
|
||||||
|
2 files changed, 13 insertions(+), 6 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/xbmc/cores/dvdplayer/DVDPlayer.cpp b/xbmc/cores/dvdplayer/DVDPlayer.cpp
|
||||||
|
index 824391e..90bcc0c 100644
|
||||||
|
--- a/xbmc/cores/dvdplayer/DVDPlayer.cpp
|
||||||
|
+++ b/xbmc/cores/dvdplayer/DVDPlayer.cpp
|
||||||
|
@@ -2266,6 +2266,11 @@ void CDVDPlayer::HandleMessages()
|
||||||
|
SetCaching(CACHESTATE_PVR);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
+ else
|
||||||
|
+ {
|
||||||
|
+ CLog::Log(LOGWARNING, "%s - failed to switch channel. playback stopped", __FUNCTION__);
|
||||||
|
+ CloseFile();
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (pMsg->IsType(CDVDMsg::GENERAL_GUI_ACTION))
|
||||||
|
diff --git a/xbmc/pvr/PVRManager.cpp b/xbmc/pvr/PVRManager.cpp
|
||||||
|
index cfc8d3d..6cad52b 100644
|
||||||
|
--- a/xbmc/pvr/PVRManager.cpp
|
||||||
|
+++ b/xbmc/pvr/PVRManager.cpp
|
||||||
|
@@ -676,12 +676,14 @@ void CPVRManager::SetPlayingGroup(CPVRChannelGroup *group)
|
||||||
|
|
||||||
|
CPVRChannelGroup *CPVRManager::GetPlayingGroup(bool bRadio /* = false */)
|
||||||
|
{
|
||||||
|
- CSingleLock lock(m_critSection);
|
||||||
|
-
|
||||||
|
- if (bRadio && !m_currentRadioGroup)
|
||||||
|
- SetPlayingGroup((CPVRChannelGroup *) m_channelGroups->GetGroupAllRadio());
|
||||||
|
- else if (!bRadio &&!m_currentTVGroup)
|
||||||
|
- SetPlayingGroup((CPVRChannelGroup *) m_channelGroups->GetGroupAllTV());
|
||||||
|
+ CSingleTryLock tryLock(m_critSection);
|
||||||
|
+ if(tryLock.IsOwner())
|
||||||
|
+ {
|
||||||
|
+ if (bRadio && !m_currentRadioGroup)
|
||||||
|
+ SetPlayingGroup((CPVRChannelGroup *) m_channelGroups->GetGroupAllRadio());
|
||||||
|
+ else if (!bRadio &&!m_currentTVGroup)
|
||||||
|
+ SetPlayingGroup((CPVRChannelGroup *) m_channelGroups->GetGroupAllTV());
|
||||||
|
+ }
|
||||||
|
|
||||||
|
return bRadio ? m_currentRadioGroup : m_currentTVGroup;
|
||||||
|
}
|
||||||
|
--
|
||||||
|
1.7.4.1
|
||||||
|
|
Loading…
x
Reference in New Issue
Block a user