mpx/playbackframework/playbackengine/src/mpxplaybackengine.cpp
changeset 27 cbb1bfb7ebfb
parent 25 d881023c13eb
child 32 edd273b3192a
--- a/mpx/playbackframework/playbackengine/src/mpxplaybackengine.cpp	Mon May 03 12:58:40 2010 +0300
+++ b/mpx/playbackframework/playbackengine/src/mpxplaybackengine.cpp	Fri May 14 16:21:14 2010 +0300
@@ -1478,6 +1478,23 @@
             {
             iProperties[EPbPropertyPosition] = 0;
             }
+	
+	//check whether plugin is KMPXPlaybackPluginVersion2, if not, set saved position
+    CDesCArray* interfaces = iPluginHandler->SupportedInterfacesL( iPluginUid );
+    TBool version2InterfaceSupported = EFalse;
+    if ( interfaces->MdcaCount() )
+        {
+        TInt pos(0);            
+        version2InterfaceSupported = !interfaces->FindIsq( KMPXPlaybackPluginVersion2, pos );
+        }
+    delete interfaces;
+    
+    if ( !version2InterfaceSupported )
+        {
+        // Set position to restore saved position.
+        TRAP_IGNORE( // uPnP leaves if set position in stop state
+                PluginL()->SetL( EPbPropertyPosition, iProperties[EPbPropertyPosition] ));
+        }
 
     iAutoResumeHandler->HandleOpenFileComplete();
     
@@ -1678,14 +1695,6 @@
         iCallback->HandleProperty(aProperty,aValue,aError);
         iCallback = NULL;
         iTaskQueue->CompleteTask();
-        
-        // notify client the new position during the playback
-        if ((EPbPropertyPosition == aProperty) && (iProgressTimer->IsActive()))
-            {
-            TRAP_IGNORE(iClientList->SendMsgL(
-                    TMPXPlaybackMessage(TMPXPlaybackMessage::EPropertyChanged,
-                                        EPbPropertyPosition,aValue)));            
-            }
         }
     MPX_DEBUG2("<--CMPXPlaybackEngine::HandleProperty 0x%08x", this);
     }
@@ -2628,7 +2637,7 @@
     MPX_DEBUG1("==>CMPXPlaybackEngine::DoStopL()");
     Suspend();
     if (iState == EPbStatePaused || iState == EPbStatePlaying ||
-        iState == EPbStateInitialising)
+        iState == EPbStateInitialising || iState == EPbStateBuffering)
         {
         if (aSavePlaybackInfo && (iState == EPbStatePaused || iState == EPbStatePlaying ))
             {