aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorarnova <arnova@void.org>2011-02-28 11:24:30 +0100
committerarnova <arnova@void.org>2011-02-28 11:29:58 +0100
commit7906efc2152930248ff418e99ba07a60f856f861 (patch)
treea72e5a8ef69e0c3688acd446963a1ca3ed4d2876
parentccfc072b63dc67858b62ac1a54c3cbcce343ded5 (diff)
fixed: Subtitles would disappear when stalled/paused
-rw-r--r--xbmc/cores/dvdplayer/DVDPlayer.cpp13
-rw-r--r--xbmc/cores/dvdplayer/DVDPlayer.h2
-rw-r--r--xbmc/cores/dvdplayer/DVDPlayerSubtitle.cpp3
-rw-r--r--xbmc/cores/dvdplayer/DVDPlayerSubtitle.h2
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); }