Skip to content

Commit

Permalink
Merge pull request #498 from cptspiff/starttrack
Browse files Browse the repository at this point in the history
add option to specify a starting track when calling PlayMedia on a playlist
  • Loading branch information
Arne Morten Kvarving committed Oct 18, 2011
2 parents 3d10281 + 7e50498 commit a7544a2
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 4 deletions.
11 changes: 8 additions & 3 deletions xbmc/Application.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3413,7 +3413,12 @@ bool CApplication::PlayMedia(const CFileItem& item, int iPlaylist)
{

if (iPlaylist != PLAYLIST_NONE)
return ProcessAndStartPlaylist(item.GetPath(), *pPlayList, iPlaylist);
{
int track=0;
if (item.HasProperty("start_offset"))
track = item.GetProperty("start_offset").asInteger();
return ProcessAndStartPlaylist(item.GetPath(), *pPlayList, iPlaylist, track);
}
else
{
CLog::Log(LOGWARNING, "CApplication::PlayMedia called to play a playlist %s but no idea which playlist to use, playing first item", item.GetPath().c_str());
Expand Down Expand Up @@ -5297,7 +5302,7 @@ void CApplication::CheckPlayingProgress()
}
}

bool CApplication::ProcessAndStartPlaylist(const CStdString& strPlayList, CPlayList& playlist, int iPlaylist)
bool CApplication::ProcessAndStartPlaylist(const CStdString& strPlayList, CPlayList& playlist, int iPlaylist, int track)
{
CLog::Log(LOGDEBUG,"CApplication::ProcessAndStartPlaylist(%s, %i)",strPlayList.c_str(), iPlaylist);

Expand Down Expand Up @@ -5326,7 +5331,7 @@ bool CApplication::ProcessAndStartPlaylist(const CStdString& strPlayList, CPlayL
// start playing it
g_playlistPlayer.SetCurrentPlaylist(iPlaylist);
g_playlistPlayer.Reset();
g_playlistPlayer.Play();
g_playlistPlayer.Play(track);
return true;
}
return false;
Expand Down
2 changes: 1 addition & 1 deletion xbmc/Application.h
Original file line number Diff line number Diff line change
Expand Up @@ -134,7 +134,7 @@ class CApplication : public CXBApplicationEx, public IPlayerCallback, public IMs
virtual void OnPlayBackSpeedChanged(int iSpeed);
bool PlayMedia(const CFileItem& item, int iPlaylist = PLAYLIST_MUSIC);
bool PlayMediaSync(const CFileItem& item, int iPlaylist = PLAYLIST_MUSIC);
bool ProcessAndStartPlaylist(const CStdString& strPlayList, PLAYLIST::CPlayList& playlist, int iPlaylist);
bool ProcessAndStartPlaylist(const CStdString& strPlayList, PLAYLIST::CPlayList& playlist, int iPlaylist, int track=0);
bool PlayFile(const CFileItem& item, bool bRestart = false);
void SaveFileState();
void UpdateFileState();
Expand Down
3 changes: 3 additions & 0 deletions xbmc/interfaces/Builtins.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -517,6 +517,9 @@ int CBuiltins::Execute(const CStdString& execString)
askToResume = false;
}

if (params.size() == 2 && params[1].Left(11).Equals("playoffset="))
item.SetProperty("start_offset",atoi(params[1].Mid(11))-1);

if ((params.size() == 2 && params[1].Equals("noresume")) || (params.size() == 3 && params[2].Equals("noresume")))
{
// force the item to start at the beginning (m_lStartOffset is initialized to 0)
Expand Down

0 comments on commit a7544a2

Please sign in to comment.