diff options
author | phintuka <phintuka> | 2007-06-21 09:19:56 +0000 |
---|---|---|
committer | phintuka <phintuka> | 2007-06-21 09:19:56 +0000 |
commit | 530951fda23bd85d04b5a2babd1507f0e2131a3b (patch) | |
tree | 2c7e764fe68f6603deebdf94720be334a50dd235 | |
parent | aac6dde93a74288e2e7bb0826c3321f1666646e5 (diff) | |
download | xineliboutput-530951fda23bd85d04b5a2babd1507f0e2131a3b.tar.gz xineliboutput-530951fda23bd85d04b5a2babd1507f0e2131a3b.tar.bz2 |
Pass external subtitle file to media player
-rw-r--r-- | media_player.c | 19 | ||||
-rw-r--r-- | media_player.h | 6 | ||||
-rw-r--r-- | menu.c | 5 |
3 files changed, 16 insertions, 14 deletions
diff --git a/media_player.c b/media_player.c index 37fee945..93c6da6b 100644 --- a/media_player.c +++ b/media_player.c @@ -4,7 +4,7 @@ * See the main source file 'xineliboutput.c' for copyright information and * how to reach the author. * - * $Id: media_player.c,v 1.29 2007-06-18 11:43:59 phintuka Exp $ + * $Id: media_player.c,v 1.30 2007-06-21 09:19:56 phintuka Exp $ * */ @@ -64,6 +64,7 @@ class cXinelibPlayer : public cPlayer private: cString m_File; cString m_ResumeFile; + cString m_SubFile; cPlaylist m_Playlist; @@ -74,7 +75,7 @@ class cXinelibPlayer : public cPlayer virtual void Activate(bool On); public: - cXinelibPlayer(const char *File, bool Queue = false); + cXinelibPlayer(const char *File, bool Queue = false, const char *SubFile = NULL); virtual ~cXinelibPlayer(); // cPlayer @@ -103,7 +104,7 @@ class cXinelibPlayer : public cPlayer int Files(void) { return m_Playlist.Count(); } }; -cXinelibPlayer::cXinelibPlayer(const char *File, bool Queue) +cXinelibPlayer::cXinelibPlayer(const char *File, bool Queue, const char *SubFile) { m_ResumeFile = NULL; m_UseResume = true; @@ -141,6 +142,7 @@ cXinelibPlayer::cXinelibPlayer(const char *File, bool Queue) m_Playlist.StartScanner(); m_File = m_Playlist.Current()->Filename; + m_SubFile = SubFile; } } @@ -215,7 +217,8 @@ bool cXinelibPlayer::NextFile(int step) LOGERR("!m_Playlist.Get(m_CurrInd)"); m_File = *m_Playlist.Current()->Filename; m_ResumeFile = NULL; - + m_SubFile = NULL; + Activate(true); if(!m_Replaying) return false; @@ -449,8 +452,8 @@ void cPlaylistMenu::Set(bool setCurrentPlaying) cXinelibPlayer *cXinelibPlayerControl::m_Player = NULL; cMutex cXinelibPlayerControl::m_Lock; -cXinelibPlayerControl::cXinelibPlayerControl(eMainMenuMode Mode, const char *File) : - cControl(OpenPlayer(File)) +cXinelibPlayerControl::cXinelibPlayerControl(eMainMenuMode Mode, const char *File, const char *SubFile) : + cControl(OpenPlayer(File, false, SubFile)) { m_DisplayReplay = NULL; m_PlaylistMenu = NULL; @@ -518,11 +521,11 @@ void cXinelibPlayerControl::Queue(const char *File) m_Lock.Unlock(); } -cXinelibPlayer *cXinelibPlayerControl::OpenPlayer(const char *File, bool Queue) +cXinelibPlayer *cXinelibPlayerControl::OpenPlayer(const char *File, bool Queue, const char *SubFile) { m_Lock.Lock(); if(!m_Player) - m_Player = new cXinelibPlayer(File, Queue); + m_Player = new cXinelibPlayer(File, Queue, SubFile); m_Lock.Unlock(); return m_Player; } diff --git a/media_player.h b/media_player.h index 850ded1d..08cca783 100644 --- a/media_player.h +++ b/media_player.h @@ -4,7 +4,7 @@ * See the main source file 'xineliboutput.c' for copyright information and * how to reach the author. * - * $Id: media_player.h,v 1.12 2007-06-18 11:43:59 phintuka Exp $ + * $Id: media_player.h,v 1.13 2007-06-21 09:19:56 phintuka Exp $ * */ @@ -26,7 +26,7 @@ class cXinelibPlayerControl : public cControl private: static cMutex m_Lock; - static cXinelibPlayer *OpenPlayer(const char *File, bool Queue = false); + static cXinelibPlayer *OpenPlayer(const char *File, bool Queue = false, const char *SubFile = NULL); protected: static cXinelibPlayer *m_Player; @@ -45,7 +45,7 @@ class cXinelibPlayerControl : public cControl void MsgReplaying(const char *Title, const char *File); public: - cXinelibPlayerControl(eMainMenuMode Mode, const char *File); + cXinelibPlayerControl(eMainMenuMode Mode, const char *File, const char *SubFile = NULL); virtual ~cXinelibPlayerControl(); virtual void Show(void); @@ -4,7 +4,7 @@ * See the main source file 'xineliboutput.c' for copyright information and * how to reach the author. * - * $Id: menu.c,v 1.37 2007-06-17 08:44:25 phintuka Exp $ + * $Id: menu.c,v 1.38 2007-06-21 09:19:56 phintuka Exp $ * */ @@ -299,7 +299,7 @@ eOSState cMenuBrowseFiles::Open(bool ForceOpen, bool Parent, bool Queue) if(!cXinelibPlayerControl::IsOpen()) cControl::Launch(GetCurrent()->IsDvd() ? new cXinelibDvdPlayerControl(f) - : new cXinelibPlayerControl(m_Mode, f)); + : new cXinelibPlayerControl(m_Mode, f, GetCurrent()->SubFile())); if(Queue) return osContinue; } else { @@ -484,7 +484,6 @@ cDvdSpuTrackSelect::cDvdSpuTrackSelect(void) : int id = 0; int current = cXinelibDevice::Instance().GetCurrentDvdSpuTrack(); Add(new cOsdItem("None", osUser1)); - while(count && id < 64) { const tTrackId *track = cXinelibDevice::Instance().GetDvdSpuTrack(id); if(track) { |