diff options
author | arnova <arnova@void.org> | 2011-02-28 11:24:30 +0100 |
---|---|---|
committer | arnova <arnova@void.org> | 2011-02-28 11:29:58 +0100 |
commit | 7906efc2152930248ff418e99ba07a60f856f861 (patch) | |
tree | a72e5a8ef69e0c3688acd446963a1ca3ed4d2876 | |
parent | ccfc072b63dc67858b62ac1a54c3cbcce343ded5 (diff) |
fixed: Subtitles would disappear when stalled/paused
-rw-r--r-- | xbmc/cores/dvdplayer/DVDPlayer.cpp | 13 | ||||
-rw-r--r-- | xbmc/cores/dvdplayer/DVDPlayer.h | 2 | ||||
-rw-r--r-- | xbmc/cores/dvdplayer/DVDPlayerSubtitle.cpp | 3 | ||||
-rw-r--r-- | xbmc/cores/dvdplayer/DVDPlayerSubtitle.h | 2 |
4 files changed, 10 insertions, 10 deletions
diff --git a/xbmc/cores/dvdplayer/DVDPlayer.cpp b/xbmc/cores/dvdplayer/DVDPlayer.cpp index 3882bfab26..794a5ef65f 100644 --- a/xbmc/cores/dvdplayer/DVDPlayer.cpp +++ b/xbmc/cores/dvdplayer/DVDPlayer.cpp @@ -3312,16 +3312,15 @@ bool CDVDPlayer::GetCurrentSubtitle(CStdString& strSubtitle) if (m_pInputStream && m_pInputStream->IsStreamType(DVDSTREAM_TYPE_DVD)) return false; - bool result = m_dvdPlayerSubtitle.GetCurrentSubtitle(strSubtitle, pts - m_dvdPlayerVideo.GetSubtitleDelay()); + m_dvdPlayerSubtitle.GetCurrentSubtitle(strSubtitle, pts - m_dvdPlayerVideo.GetSubtitleDelay()); // In case we stalled, don't output any subs if (m_dvdPlayerVideo.IsStalled() || m_dvdPlayerAudio.IsStalled()) - { - strSubtitle = ""; - return false; - } - - return result; + strSubtitle = m_lastSub; + else + m_lastSub = strSubtitle; + + return !strSubtitle.IsEmpty(); } CStdString CDVDPlayer::GetPlayerState() diff --git a/xbmc/cores/dvdplayer/DVDPlayer.h b/xbmc/cores/dvdplayer/DVDPlayer.h index 363c3c502e..18b3e6c10b 100644 --- a/xbmc/cores/dvdplayer/DVDPlayer.h +++ b/xbmc/cores/dvdplayer/DVDPlayer.h @@ -325,6 +325,8 @@ protected: CDVDInputStream* m_pInputStream; // input stream for current playing file CDVDDemux* m_pDemuxer; // demuxer for current playing file CDVDDemux* m_pSubtitleDemuxer; + + CStdString m_lastSub; struct SDVDInfo { diff --git a/xbmc/cores/dvdplayer/DVDPlayerSubtitle.cpp b/xbmc/cores/dvdplayer/DVDPlayerSubtitle.cpp index fcd0950317..14ac1ea22c 100644 --- a/xbmc/cores/dvdplayer/DVDPlayerSubtitle.cpp +++ b/xbmc/cores/dvdplayer/DVDPlayerSubtitle.cpp @@ -242,7 +242,7 @@ bool CDVDPlayerSubtitle::AcceptsData() return m_pOverlayContainer->GetSize() < 5; } -bool CDVDPlayerSubtitle::GetCurrentSubtitle(CStdString& strSubtitle, double pts) +void CDVDPlayerSubtitle::GetCurrentSubtitle(CStdString& strSubtitle, double pts) { strSubtitle = ""; @@ -276,5 +276,4 @@ bool CDVDPlayerSubtitle::GetCurrentSubtitle(CStdString& strSubtitle, double pts) } m_pOverlayContainer->Unlock(); strSubtitle.TrimRight('\n'); - return !strSubtitle.IsEmpty(); } diff --git a/xbmc/cores/dvdplayer/DVDPlayerSubtitle.h b/xbmc/cores/dvdplayer/DVDPlayerSubtitle.h index 4a2616e638..d1a715caad 100644 --- a/xbmc/cores/dvdplayer/DVDPlayerSubtitle.h +++ b/xbmc/cores/dvdplayer/DVDPlayerSubtitle.h @@ -42,7 +42,7 @@ public: void Process(double pts); void Flush(); void FindSubtitles(const char* strFilename); - bool GetCurrentSubtitle(CStdString& strSubtitle, double pts); + void GetCurrentSubtitle(CStdString& strSubtitle, double pts); int GetSubtitleCount(); void UpdateOverlayInfo(CDVDInputStreamNavigator* pStream, int iAction) { m_pOverlayContainer->UpdateOverlayInfo(pStream, &m_dvdspus, iAction); } |