diff options
author | phintuka <phintuka> | 2008-12-10 23:00:19 +0000 |
---|---|---|
committer | phintuka <phintuka> | 2008-12-10 23:00:19 +0000 |
commit | ff6bc88461acd57fe5402651f50bda9a43f50b88 (patch) | |
tree | 50f8712d9765716cffc43646ff824b8790132b13 | |
parent | 3199781ca73e020cd92860df3267fea2d940e675 (diff) | |
download | xineliboutput-ff6bc88461acd57fe5402651f50bda9a43f50b88.tar.gz xineliboutput-ff6bc88461acd57fe5402651f50bda9a43f50b88.tar.bz2 |
Query CDDA track count before starting playback
-rw-r--r-- | media_player.c | 29 |
1 files changed, 19 insertions, 10 deletions
diff --git a/media_player.c b/media_player.c index df214736..dd437b16 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.52.2.5 2008-10-19 17:47:08 phintuka Exp $ + * $Id: media_player.c,v 1.52.2.6 2008-12-10 23:00:18 phintuka Exp $ * */ @@ -48,6 +48,8 @@ class cXinelibPlayer : public cPlayer bool m_Error; int m_Speed; + void UpdateNumTracks(void); + protected: virtual void Activate(bool On); @@ -201,6 +203,19 @@ bool cXinelibPlayer::NextFile(int step) return false; } +void cXinelibPlayer::UpdateNumTracks(void) +{ + // cdda tracks + if(m_Playlist.Count() == 1 && !strcmp("cdda:/", m_Playlist.First()->Filename)) { + int count = cXinelibDevice::Instance().PlayFileCtrl("GETAUTOPLAYSIZE CD", 10000); + if(count>1) { + for(int i=0; i<count; i++) + m_Playlist.Read(cString::sprintf("cdda:/%d", i+1)); + m_Playlist.Del(m_Playlist.First()); + } + } +} + void cXinelibPlayer::Activate(bool On) { int pos = 0, len = 0, fd = -1; @@ -227,6 +242,8 @@ void cXinelibPlayer::Activate(bool On) *cPlaylist::EscapeMrl(m_File)); else mrl = cPlaylist::EscapeMrl(m_File); + + UpdateNumTracks(); m_Error = !cXinelibDevice::Instance().PlayFile(mrl, pos); LOGDBG("cXinelibPlayer playing %s (%s)", *m_File, m_Error ? "FAIL" : "OK"); @@ -245,15 +262,7 @@ void cXinelibPlayer::Activate(bool On) if(ar && ar[0]) m_Playlist.Current()->Artist = ar; - // cdda tracks - if(m_Playlist.Count() == 1 && !strcmp("cdda:/", m_Playlist.First()->Filename)) { - int count = cXinelibDevice::Instance().PlayFileCtrl("GETAUTOPLAYSIZE CD"); - if(count>1) { - for(int i=0; i<count; i++) - m_Playlist.Read(cString::sprintf("cdda:/%d", i+1)); - m_Playlist.Del(m_Playlist.First()); - } - } + UpdateNumTracks(); } } else { if(m_UseResume && *m_ResumeFile) { |