summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorphintuka <phintuka>2007-06-21 09:19:56 +0000
committerphintuka <phintuka>2007-06-21 09:19:56 +0000
commit530951fda23bd85d04b5a2babd1507f0e2131a3b (patch)
tree2c7e764fe68f6603deebdf94720be334a50dd235
parentaac6dde93a74288e2e7bb0826c3321f1666646e5 (diff)
downloadxineliboutput-530951fda23bd85d04b5a2babd1507f0e2131a3b.tar.gz
xineliboutput-530951fda23bd85d04b5a2babd1507f0e2131a3b.tar.bz2
Pass external subtitle file to media player
-rw-r--r--media_player.c19
-rw-r--r--media_player.h6
-rw-r--r--menu.c5
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);
diff --git a/menu.c b/menu.c
index 6a586aec..670cbb25 100644
--- a/menu.c
+++ b/menu.c
@@ -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) {