[Player-cvs] music/librarykit mmp_library_playqueue.cpp,1.5,1.6

[Player-cvs] music/librarykit mmp_library_playqueue.cpp,1.5,1.6

crobinson at helixcommunity.org crobinson at helixcommunity.org
Wed Sep 8 03:40:33 PDT 2004


Update 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;
+	}
+    }
 }




More information about the Player-cvs mailing list
 

Site Map   |   Terms of Use   |   Privacy Policy   |   Contact Us

Copyright © 1995-2007 RealNetworks, Inc. All rights reserved. RealNetworks and Helix are trademarks of RealNetworks.
All other trademarks or registered trademarks are the property of their respective holders.