mpengine/src/mpengine.cpp
changeset 61 3cd404d31176
parent 58 ed94e1e8390e
--- a/mpengine/src/mpengine.cpp	Fri Sep 17 08:28:52 2010 +0300
+++ b/mpengine/src/mpengine.cpp	Mon Oct 04 00:14:19 2010 +0300
@@ -29,6 +29,7 @@
 #include "mpsongscanner.h"
 #include "mpsongdata.h"
 #include "mpapplicationmonitor.h"
+#include "mpplaybackdata.h"
 
 /*!
     \class MpEngine
@@ -222,7 +223,14 @@
 MpEngine::~MpEngine()
 {
     TX_ENTRY
-    delete mMpxPlaybackWrapper;
+    if ( mMpxPlaybackWrapper ) {
+        // Don't send stop cmd if mode=HomeScreen, because we don't want to stop playback when the music widget is deleted.
+        if ( mEngineMode != HomeScreen ) {
+            mMpxPlaybackWrapper->forceStop();
+        }
+        delete mMpxPlaybackWrapper;
+    }
+    
     delete mMpxHarvesterWrapper;
     delete mMpxCollectionWrapper;
     delete mAudioEffectsWrapper;
@@ -264,7 +272,7 @@
         // Collection Wrapper
         mMpxCollectionWrapper = new MpMpxCollectionFrameworkWrapper( clientSecureId, mSongData );
         connect( mMpxCollectionWrapper, SIGNAL( collectionPlaylistOpened() ),
-                 this, SIGNAL( collectionPlaylistOpened() ), 
+                 this, SLOT( handleCollectionPlaylistOpened() ), 
 				 Qt::QueuedConnection );
         connect( mMpxCollectionWrapper, SIGNAL( aboutToAddSongs(int) ),
                  this, SIGNAL( aboutToAddSongs(int) ) );
@@ -327,7 +335,7 @@
         // Collection Wrapper
         mMpxCollectionWrapper = new MpMpxCollectionFrameworkWrapper( clientSecureId, 0 );
         connect( mMpxCollectionWrapper, SIGNAL( collectionPlaylistOpened() ),
-                 this, SIGNAL( collectionPlaylistOpened() ), 
+                 this, SLOT( handleCollectionPlaylistOpened() ), 
 				 Qt::QueuedConnection );
         // Disabling these since fetch mode plays only one song at a time.
         mMpxCollectionWrapper->setRepeatFeatureEnabled( false );
@@ -347,7 +355,7 @@
         // Collection Wrapper
         mMpxCollectionWrapper = new MpMpxCollectionFrameworkWrapper( clientSecureId, 0 );
         connect( mMpxCollectionWrapper, SIGNAL( collectionPlaylistOpened() ),
-                 this, SIGNAL( collectionPlaylistOpened() ), 
+                 this, SLOT( handleCollectionPlaylistOpened() ), 
 				 Qt::QueuedConnection );
         connect( mMpxCollectionWrapper, SIGNAL( containerContentsChanged() ),
                  this, SIGNAL( containerContentsChanged() ), 
@@ -1256,3 +1264,15 @@
     TX_EXIT
 }
 
+/*!
+ Slot to handle the open of a collecion playlist.
+ */
+void MpEngine::handleCollectionPlaylistOpened()
+{
+    TX_ENTRY
+    
+    playbackData()->handleCollectionPlaylistOpened();
+    emit collectionPlaylistOpened();
+    
+    TX_EXIT
+}