photosgallery/collectionframework/datasource/manager/src/glxcollectionpluginbase.cpp
branchRCL_3
changeset 47 f9e827349359
parent 30 a60acebbbd9d
--- a/photosgallery/collectionframework/datasource/manager/src/glxcollectionpluginbase.cpp	Wed Jun 09 09:41:51 2010 +0300
+++ b/photosgallery/collectionframework/datasource/manager/src/glxcollectionpluginbase.cpp	Mon Jun 21 15:40:32 2010 +0300
@@ -373,7 +373,7 @@
 EXPORT_C void CGlxCollectionPluginBase::HandleResponse(CMPXMedia* aResponse, CGlxRequest* aRequest, const TInt& aError)
 	{
     TRACER("void CGlxCollectionPluginBase::HandleResponse()");
-	
+    GLX_DEBUG2("CGlxCollectionPluginBase::HandleResponse()() aError=%d", aError);
     if (dynamic_cast<CGlxIdListRequest*>(aRequest))
 	// iRequest is a CGlxIdListRequest
 	    {
@@ -384,8 +384,20 @@
 	else if (dynamic_cast<CGlxThumbnailRequest*>(aRequest))
 	// iRequest is a CGlxThumbnailRequest
         {
- 		iObs->HandleMedia(aResponse, aError); 
-	    }
+        //when IAD update / sisx installation of S60 TNM is done and
+        //photos asks for the thumbnail, the thumbnail manager returns an 
+        //error KErrServerTerminated(-15)/KErrDied(-13) for which the MPX recreates
+        //the collection plugins and reconnects to the MPX server and goes into
+        //a invalid state. After this, the error is not propogated to the Medialist
+        //and no further requests are processed and it keeps returning KErrNotReady(-18)
+        //So, as a HACK we are changing the error code to KErrCompletion(-17), 
+        //for which the MPX collection does not take any action and propogates the error
+        //to the medialist. This error(KErrCompletion) is treated as a temporary error
+        //and the thumbnail request is made again from the medialist for which the
+        //S60 TNM returns the thumbnail properly.
+        iObs->HandleMedia(aResponse, ((aError == KErrServerTerminated
+                || aError == KErrDied) ? KErrCompletion : aError));
+        }
 	else if (dynamic_cast<CGlxGetRequest*>(aRequest))
 	// iRequest is a CGlxGetRequest
         {
@@ -456,7 +468,7 @@
         if( KGlxMediaIdCollectionPluginSpecific == aAttrs[i].ContentId())
         	{
 			cpiAttributeArray.AppendL(aAttrs[i]);
-			CpiAttributeAdditionalAttributes(aAttrs[i], attributeArray);  
+			CpiAttributeAdditionalAttributesL(aAttrs[i], attributeArray);  
 			doNotNeedDataSource = EFalse;   	
         	}
         else 
@@ -494,9 +506,9 @@
 	return ETrue;
 	}
 
-EXPORT_C void CGlxCollectionPluginBase::CpiAttributeAdditionalAttributes(const TMPXAttribute& /*aCpiAttribute*/, RArray<TMPXAttribute>& /*aAttributeArray*/)
+EXPORT_C void CGlxCollectionPluginBase::CpiAttributeAdditionalAttributesL(const TMPXAttribute& /*aCpiAttribute*/, RArray<TMPXAttribute>& /*aAttributeArray*/)
 	{
-    TRACER("void CGlxCollectionPluginBase::CpiAttributeAdditionalAttributes()");
+    TRACER("void CGlxCollectionPluginBase::CpiAttributeAdditionalAttributesL()");
 	// Default implementation does not require additional attributes	
 	}