[Player-cvs] music/librarykit mmp_library_playqueue.cpp,1.5,1.6
crobinson at helixcommunity.org crobinson at helixcommunity.orgUpdate of /cvsroot/player/music/librarykit
In directory cvs-new:/tmp/cvs-serv8620
Modified Files:
mmp_library_playqueue.cpp
Log Message:
fixed playqueue bugs causing hangs/crashes
Index: mmp_library_playqueue.cpp
===================================================================
RCS file: /cvsroot/player/music/librarykit/mmp_library_playqueue.cpp,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -d -r1.5 -r1.6
--- mmp_library_playqueue.cpp 7 Sep 2004 18:56:54 -0000 1.5
+++ mmp_library_playqueue.cpp 8 Sep 2004 10:40:31 -0000 1.6
@@ -59,8 +59,8 @@
{
for (int i = 0; i < m_Queue.GetCount(); ++i)
{
- CMmpTrack* pTrack = (CMmpTrack*)m_Queue.RemoveHead();
- delete pTrack;
+ CTrackInfo* pTrackInfo = (CTrackInfo*)m_Queue.RemoveHead();
+ delete pTrackInfo;
}
m_CurrentTrack = NULL;
@@ -137,7 +137,7 @@
}
else if (m_CurrentTrack)
{
- pTrack = ((CTrackInfo*)m_Queue.GetAtNext(m_CurrentTrack))->m_pTrack;
+ m_Queue.GetAtNext(m_CurrentTrack);
if (!m_CurrentTrack && m_bLoop)
{
@@ -147,6 +147,7 @@
}
else if (m_CurrentTrack)
{
+ pTrack = ((CTrackInfo*)m_Queue.GetAt(m_CurrentTrack))->m_pTrack;
++m_CurrentTrackNum;
}
}
@@ -220,6 +221,20 @@
}
void
+CMmpLibraryPlayQueue::GetCurrentTrackInfo(CMmpTrack*& pTrack)
+{
+ pTrack = NULL;
+ if (!m_Queue.IsEmpty() && m_CurrentTrack)
+ {
+ CTrackInfo* pTrackInfo = (CTrackInfo*)m_Queue.GetAt(m_CurrentTrack);
+ if (pTrackInfo)
+ {
+ pTrack = pTrackInfo->m_pTrack;
+ }
+ }
+}
+
+void
CMmpLibraryPlayQueue::GetFirstTrackInfo(LISTPOSITION& curTrack, CMmpTrack*& pTrack)
{
if (m_Queue.IsEmpty())
@@ -244,7 +259,15 @@
}
else if (curTrack)
{
- pTrack = ((CTrackInfo*)m_Queue.GetAtNext(curTrack))->m_pTrack;
+ CTrackInfo* pTrackInfo = (CTrackInfo*)m_Queue.GetAtNext(curTrack);
+ if (pTrackInfo)
+ {
+ pTrack = pTrackInfo->m_pTrack;
+ }
+ else
+ {
+ pTrack = NULL;
+ }
}
else
{
@@ -255,8 +278,16 @@
void
CMmpLibraryPlayQueue::GetPlaylistInfo(CHXString& name, bool& isRadio) const
{
- CTrackInfo* pTrackInfo = (CTrackInfo*)m_Queue.GetAt(m_CurrentTrack);
- name = pTrackInfo->m_playlistName;
- isRadio = pTrackInfo->m_isRadio;
+ name = "";
+ isRadio = false;
+ if (m_CurrentTrack)
+ {
+ CTrackInfo* pTrackInfo = (CTrackInfo*)m_Queue.GetAt(m_CurrentTrack);
+ if (pTrackInfo)
+ {
+ name = pTrackInfo->m_playlistName;
+ isRadio = pTrackInfo->m_isRadio;
+ }
+ }
}