# HG changeset patch # User Dremov Kirill (Nokia-D-MSW/Tampere) # Date 1271252976 -10800 # Node ID 3673b591050c7ea85b7dca0f5ef8a2693e1cf321 # Parent 60a94a45d437ecbb9200d371eb8110b3087a5775 Revision: 201004 Kit: 201015 diff -r 60a94a45d437 -r 3673b591050c mtpdataproviders/mtpimagedp/inc/cmtpimagedp.h --- a/mtpdataproviders/mtpimagedp/inc/cmtpimagedp.h Wed Mar 31 22:58:56 2010 +0300 +++ b/mtpdataproviders/mtpimagedp/inc/cmtpimagedp.h Wed Apr 14 16:49:36 2010 +0300 @@ -137,6 +137,7 @@ TInt iActiveProcessor; TBool iActiveProcessorRemoved; TBool iEnumerated; + TBool iEnumerationNotified; RPointerArray iDeleteObjectsArray; }; diff -r 60a94a45d437 -r 3673b591050c mtpdataproviders/mtpimagedp/src/cmtpimagedp.cpp --- a/mtpdataproviders/mtpimagedp/src/cmtpimagedp.cpp Wed Mar 31 22:58:56 2010 +0300 +++ b/mtpdataproviders/mtpimagedp/src/cmtpimagedp.cpp Wed Apr 14 16:49:36 2010 +0300 @@ -128,6 +128,7 @@ User::LeaveIfError(error); } + iEnumerationNotified = ETrue; __FLOG(_L8("<< CMTPImageDataProvider::ConstructL")); } @@ -271,6 +272,8 @@ __FLOG(_L8(">> StartObjectEnumerationL")); TBool isComplete = ETrue; + iEnumerationNotified = EFalse; + if (aStorageId == KMTPStorageAll) { /* @@ -479,7 +482,11 @@ __FLOG(_L8(">> NotifyEnumerationCompletedL")); __FLOG_VA((_L8("Enumeration of storage 0x%08X completed with error status %d"), aStorageId, aError)); - Framework().ObjectEnumerationCompleteL(aStorageId); + if (!iEnumerationNotified) + { + iEnumerationNotified = ETrue; + Framework().ObjectEnumerationCompleteL(aStorageId); + } __FLOG(_L8("<< HandleEnumerationCompletedL")); } diff -r 60a94a45d437 -r 3673b591050c mtpdataproviders/mtpimagedp/src/cmtpimagedpgetobjectproplist.cpp --- a/mtpdataproviders/mtpimagedp/src/cmtpimagedpgetobjectproplist.cpp Wed Mar 31 22:58:56 2010 +0300 +++ b/mtpdataproviders/mtpimagedp/src/cmtpimagedpgetobjectproplist.cpp Wed Apr 14 16:49:36 2010 +0300 @@ -146,12 +146,7 @@ TUint32 propCode = Request().Uint32(TMTPTypeRequest::ERequestParameter3); if (propCode == 0) { - TUint32 groupCode = Request().Uint32(TMTPTypeRequest::ERequestParameter4); - if(groupCode != KMTPImageDpPropertyGroupOneNumber) - { - //Only supported group one - response = EMTPRespCodeSpecificationByGroupUnsupported; - } + /*Do nothing */ } else if (propCode != KMaxTUint) { @@ -309,15 +304,18 @@ void CMTPImageDpGetObjectPropList::ServiceGroupPropertiesL(TUint32 aHandle,TUint16 /*aGroupCode*/) { __FLOG(_L8(">> CMTPImageDpGetObjectPropList::ServiceGroupPropertiesL")); - - if (iFramework.ObjectMgr().ObjectOwnerId(aHandle) == iFramework.DataProviderId()) + TUint32 groupCode = Request().Uint32(TMTPTypeRequest::ERequestParameter4); + if (KMTPImageDpPropertyGroupOneNumber == groupCode) //only return data for group one { - for (TUint propCodeIndex(0); propCodeIndex < KMTPImageDpGroupOneSize; propCodeIndex++) + if (iFramework.ObjectMgr().ObjectOwnerId(aHandle) == iFramework.DataProviderId()) { - TUint16 propCode = KMTPImageDpGroupOneProperties[propCodeIndex]; - if(propCode != 0) + for (TUint propCodeIndex(0); propCodeIndex < KMTPImageDpGroupOneSize; propCodeIndex++) { - ServiceOneObjectPropertyL(aHandle, propCode); + TUint16 propCode = KMTPImageDpGroupOneProperties[propCodeIndex]; + if(propCode != 0) + { + ServiceOneObjectPropertyL(aHandle, propCode); + } } } } diff -r 60a94a45d437 -r 3673b591050c mtpdataproviders/mtpimagedp/src/cmtpimagedpthumbnailcreator.cpp --- a/mtpdataproviders/mtpimagedp/src/cmtpimagedpthumbnailcreator.cpp Wed Mar 31 22:58:56 2010 +0300 +++ b/mtpdataproviders/mtpimagedp/src/cmtpimagedpthumbnailcreator.cpp Wed Apr 14 16:49:36 2010 +0300 @@ -261,10 +261,17 @@ iObjectSource = NULL; TParsePtrC parse(aFileName); - const TDesC& mimeType = iDataProvider.FindMimeType(parse.Ext().Mid(1)); - __FLOG_VA((_L16("CMtpImageDphumbnailCreator::GetThumbL() - FileName:%S, MimeType:%S"), &aFileName, &mimeType)); + if (parse.Ext().Length() >= 1) + { + const TDesC& mimeType = iDataProvider.FindMimeType(parse.Ext().Mid(1)); + __FLOG_VA((_L16("CMtpImageDphumbnailCreator::GetThumbL() - FileName:%S, MimeType:%S"), &aFileName, &mimeType)); - iObjectSource = CThumbnailObjectSource::NewL(aFileName, mimeType); + iObjectSource = CThumbnailObjectSource::NewL(aFileName, mimeType); + } + else + { + iObjectSource = CThumbnailObjectSource::NewL(aFileName, KNullDesC); + } iCurrentReq = iThumbMgr->GetThumbnailL( *iObjectSource ); iState = EGetting; __FLOG(_L8("<< CMtpImageDphumbnailCreator::GetThumbL()")); diff -r 60a94a45d437 -r 3673b591050c mtpfws/mtpfw/daemon/server/src/cmtpserversession.cpp --- a/mtpfws/mtpfw/daemon/server/src/cmtpserversession.cpp Wed Mar 31 22:58:56 2010 +0300 +++ b/mtpfws/mtpfw/daemon/server/src/cmtpserversession.cpp Wed Apr 14 16:49:36 2010 +0300 @@ -132,12 +132,7 @@ iSingletons.ConnectionMgr().SetClientSId(secureid); TInt length = aMessage.GetDesLength( 1 ); - - if((!CheckIsBlueToothTransport(newUID) || (length!=0)) && (iSingletons.DpController().Count()==0)) - { - iSingletons.DpController().LoadDataProvidersL(); - iSingletons.Router().ConfigureL(); - } + if (length > 0) { @@ -165,6 +160,13 @@ aMessage.Complete(KErrNone); } + // Fix TSW error MHAN-7ZU96Z + if((!CheckIsBlueToothTransport(newUID) || (length!=0)) && (iSingletons.DpController().Count()==0)) + { + iSingletons.DpController().LoadDataProvidersL(); + iSingletons.Router().ConfigureL(); + } + __FLOG(_L8("DoStartTransportL - Exit")); } diff -r 60a94a45d437 -r 3673b591050c mtpfws/mtpfw/dataproviders/dputility/src/cmtpsetobjectprotection.cpp --- a/mtpfws/mtpfw/dataproviders/dputility/src/cmtpsetobjectprotection.cpp Wed Mar 31 22:58:56 2010 +0300 +++ b/mtpfws/mtpfw/dataproviders/dputility/src/cmtpsetobjectprotection.cpp Wed Apr 14 16:49:36 2010 +0300 @@ -37,6 +37,8 @@ {TMTPTypeRequest::ERequestParameter1, EMTPElementTypeObjectHandle, EMTPElementAttrWrite, 0, 0, 0}, }; +const TInt KRetryTimes = 10; +const TInt KRetryInterval = 150 * 1000; //150ms /** Two-phase construction method @param aPlugin The data provider plugin @@ -97,20 +99,42 @@ { TUint32 handle = Request().Uint32(TMTPTypeRequest::ERequestParameter1); TUint32 statusValue = Request().Uint32(TMTPTypeRequest::ERequestParameter2); - TMTPResponseCode rsp = EMTPRespCodeOK; + TMTPResponseCode rsp = EMTPRespCodeAccessDenied; //iFramework.ObjectMgr().ObjectL(TMTPTypeUint32(handle), *iObjMeta); switch(statusValue) { case EMTPProtectionNoProtection: { - iRfs.SetAtt(iObjMeta->DesC(CMTPObjectMetaData::ESuid),KEntryAttNormal,KEntryAttReadOnly); + for(TInt i = 0; i < KRetryTimes; ++ i) + { + if(KErrNone == iRfs.SetAtt(iObjMeta->DesC(CMTPObjectMetaData::ESuid),KEntryAttNormal,KEntryAttReadOnly)) + { + rsp = EMTPRespCodeOK; + break; + } + else + { + User::After(KRetryInterval); + } + } } break; case EMTPProtectionReadOnly: case EMTPProtectionReadOnlyData: { - iRfs.SetAtt(iObjMeta->DesC(CMTPObjectMetaData::ESuid),KEntryAttReadOnly,KEntryAttNormal); + for(TInt i = 0; i < KRetryTimes; ++ i) + { + if(KErrNone == iRfs.SetAtt(iObjMeta->DesC(CMTPObjectMetaData::ESuid),KEntryAttReadOnly,KEntryAttNormal)) + { + rsp = EMTPRespCodeOK; + break; + } + else + { + User::After(KRetryInterval); + } + } } break; default: diff -r 60a94a45d437 -r 3673b591050c mtpfws/mtpfw/src/cmtpobjectstore.cpp --- a/mtpfws/mtpfw/src/cmtpobjectstore.cpp Wed Mar 31 22:58:56 2010 +0300 +++ b/mtpfws/mtpfw/src/cmtpobjectstore.cpp Wed Apr 14 16:49:36 2010 +0300 @@ -496,6 +496,7 @@ else { aObject.SetUint(CMTPObjectMetaData::EHandle, handle); + needUpdateOwner = ETrue; //while enumerating, we ignore the repeatedly INSERT operations. //User::Leave(KErrAlreadyExists); } @@ -947,10 +948,7 @@ // Create table and index CreateHandleTableL(); CreateHandleIndexL(); - //This is the very very 1st time of MTP server running, therefore, all of the objects in the HandleStore should be added items - //roundtrip table will fetch the added items directly from the handlestore, do not popluate the added items to round-trip table - //until the enumeration is finished. - iUpdateDeltaDataTable = EFalse; + iUpdateDeltaDataTable = ETrue; } /**