mirror of
https://github.com/LibreELEC/LibreELEC.tv.git
synced 2025-07-24 11:16:51 +00:00
xbmc: add PR4296
Signed-off-by: Stephan Raue <stephan@openelec.tv>
This commit is contained in:
parent
4219b7eee9
commit
b7ef576973
100
packages/mediacenter/xbmc/patches/xbmc-999.80.009-PR4296.patch
Normal file
100
packages/mediacenter/xbmc/patches/xbmc-999.80.009-PR4296.patch
Normal file
@ -0,0 +1,100 @@
|
||||
From ee4270426da6800d5ac21c50c1c7aaa94eec60c7 Mon Sep 17 00:00:00 2001
|
||||
From: Voyager1 <voyager@xbmc.org>
|
||||
Date: Fri, 28 Feb 2014 21:10:26 +0100
|
||||
Subject: [PATCH 1/2] [DVDInputStreamNavigator] allow fallback to root menu
|
||||
call if title menu call fails (like VLC)
|
||||
|
||||
---
|
||||
xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamNavigator.cpp | 6 ++++++
|
||||
1 file changed, 6 insertions(+)
|
||||
|
||||
diff --git a/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamNavigator.cpp b/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamNavigator.cpp
|
||||
index de4f3d3..2b7de16 100644
|
||||
--- a/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamNavigator.cpp
|
||||
+++ b/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamNavigator.cpp
|
||||
@@ -187,8 +187,14 @@ bool CDVDInputStreamNavigator::Open(const char* strFile, const std::string& cont
|
||||
m_dll.dvdnav_get_next_cache_block(m_dvdnav,&buf_ptr,&event,&len);
|
||||
m_dll.dvdnav_sector_search(m_dvdnav, 0, SEEK_SET);
|
||||
|
||||
+ // first try title menu
|
||||
if(m_dll.dvdnav_menu_call(m_dvdnav, DVD_MENU_Title) != DVDNAV_STATUS_OK)
|
||||
+ {
|
||||
CLog::Log(LOGERROR,"Error on dvdnav_menu_call(Title): %s\n", m_dll.dvdnav_err_to_string(m_dvdnav));
|
||||
+ // next try root menu
|
||||
+ if(m_dll.dvdnav_menu_call(m_dvdnav, DVD_MENU_Root) != DVDNAV_STATUS_OK )
|
||||
+ CLog::Log(LOGERROR,"Error on dvdnav_menu_call(Root): %s\n", m_dll.dvdnav_err_to_string(m_dvdnav));
|
||||
+ }
|
||||
}
|
||||
|
||||
m_bEOF = false;
|
||||
--
|
||||
1.8.5.5
|
||||
|
||||
|
||||
From 65d19589e577df91bdf922081bb373dc7b517074 Mon Sep 17 00:00:00 2001
|
||||
From: Voyager1 <voyager@xbmc.org>
|
||||
Date: Fri, 28 Feb 2014 21:11:31 +0100
|
||||
Subject: [PATCH 2/2] [DVDInputStreamNavigator] allow to return from "endless"
|
||||
loop of NOPs
|
||||
|
||||
---
|
||||
.../dvdplayer/DVDInputStreams/DVDInputStreamNavigator.cpp | 12 ++++++++++++
|
||||
xbmc/cores/dvdplayer/DVDPlayer.cpp | 1 +
|
||||
xbmc/cores/omxplayer/OMXPlayer.cpp | 1 +
|
||||
3 files changed, 14 insertions(+)
|
||||
|
||||
diff --git a/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamNavigator.cpp b/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamNavigator.cpp
|
||||
index 2b7de16..015a2ae 100644
|
||||
--- a/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamNavigator.cpp
|
||||
+++ b/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamNavigator.cpp
|
||||
@@ -239,11 +239,23 @@ int CDVDInputStreamNavigator::Read(uint8_t* buf, int buf_size)
|
||||
|
||||
int iBytesRead;
|
||||
|
||||
+ int NOPcount = 0;
|
||||
while(true) {
|
||||
int navresult = ProcessBlock(buf, &iBytesRead);
|
||||
if (navresult == NAVRESULT_HOLD) return 0; // return 0 bytes read;
|
||||
else if (navresult == NAVRESULT_ERROR) return -1;
|
||||
else if (navresult == NAVRESULT_DATA) return iBytesRead;
|
||||
+ else if (navresult == NAVRESULT_NOP)
|
||||
+ {
|
||||
+ NOPcount++;
|
||||
+ if (NOPcount == 1000)
|
||||
+ {
|
||||
+ m_bEOF = true;
|
||||
+ CLog::Log(LOGERROR,"CDVDInputStreamNavigator: Stopping playback due to infinite loop, caused by badly authored DVD navigation structure. Try enabling 'Attempt to skip introduction before DVD menu'.");
|
||||
+ m_pDVDPlayer->OnDVDNavResult(NULL, DVDNAV_STOP);
|
||||
+ return -1; // fail and stop playback.
|
||||
+ }
|
||||
+ }
|
||||
}
|
||||
|
||||
return iBytesRead;
|
||||
diff --git a/xbmc/cores/dvdplayer/DVDPlayer.cpp b/xbmc/cores/dvdplayer/DVDPlayer.cpp
|
||||
index b056c8b..51dca5b 100644
|
||||
--- a/xbmc/cores/dvdplayer/DVDPlayer.cpp
|
||||
+++ b/xbmc/cores/dvdplayer/DVDPlayer.cpp
|
||||
@@ -3560,6 +3560,7 @@ int CDVDPlayer::OnDVDNavResult(void* pData, int iMessage)
|
||||
{
|
||||
CLog::Log(LOGDEBUG, "DVDNAV_STOP");
|
||||
m_dvd.state = DVDSTATE_NORMAL;
|
||||
+ CGUIDialogKaiToast::QueueNotification(g_localizeStrings.Get(16026), g_localizeStrings.Get(16029));
|
||||
}
|
||||
break;
|
||||
default:
|
||||
diff --git a/xbmc/cores/omxplayer/OMXPlayer.cpp b/xbmc/cores/omxplayer/OMXPlayer.cpp
|
||||
index a3d3928..9799a10 100644
|
||||
--- a/xbmc/cores/omxplayer/OMXPlayer.cpp
|
||||
+++ b/xbmc/cores/omxplayer/OMXPlayer.cpp
|
||||
@@ -3831,6 +3831,7 @@ int COMXPlayer::OnDVDNavResult(void* pData, int iMessage)
|
||||
{
|
||||
CLog::Log(LOGDEBUG, "DVDNAV_STOP");
|
||||
m_dvd.state = DVDSTATE_NORMAL;
|
||||
+ CGUIDialogKaiToast::QueueNotification(g_localizeStrings.Get(16026), g_localizeStrings.Get(16029));
|
||||
}
|
||||
break;
|
||||
default:
|
||||
--
|
||||
1.8.5.5
|
||||
|
Loading…
x
Reference in New Issue
Block a user