--- a/connectivitymodules/SeCon/services/csc/src/caplist.cpp Mon Jun 21 16:36:59 2010 +0300
+++ b/connectivitymodules/SeCon/services/csc/src/caplist.cpp Thu Jul 15 19:35:12 2010 +0300
@@ -34,12 +34,10 @@
//
CCapList* CCapList::NewL()
{
- TRACE_FUNC_ENTRY;
CCapList* self = new(ELeave) CCapList();
CleanupStack::PushL( self );
self->ConstructL();
CleanupStack::Pop( self );
- TRACE_FUNC_EXIT;
return self;
}
@@ -50,9 +48,7 @@
//
CCapList::~CCapList()
{
- TRACE_FUNC_ENTRY;
delete iList;
- TRACE_FUNC_EXIT;
}
// -----------------------------------------------------------------------------
@@ -71,9 +67,7 @@
//
void CCapList::ConstructL()
{
- TRACE_FUNC_ENTRY;
iList = CStringList::NewL();
- TRACE_FUNC_EXIT;
}
// -----------------------------------------------------------------------------
@@ -94,7 +88,6 @@
//
TInt CCapList::FindFromMark(TInt aId, TInt aType)
{
- TRACE_FUNC_ENTRY;
TInt mark = List()->Mark();
TInt count= List()->Count();
@@ -106,7 +99,6 @@
TInt index=Find(aId, aType, mark);
if ( index == KErrNotFound )
{
- LOGGER_WRITE_1( "CCapList::FindFromMark(TInt aId, TInt aType) returned : %d", KErrNotFound );
return KErrNotFound;
}
@@ -114,7 +106,6 @@
__ASSERT_DEBUG(index>=mark, CapUtil::Panic(KErrGeneral));
List()->SetMark(index+1);
- LOGGER_WRITE_1( "CCapList::FindFromMark(TInt aId, TInt aType) returned : %d", index );
return index;
}
--- a/connectivitymodules/SeCon/services/csc/src/caputils.cpp Mon Jun 21 16:36:59 2010 +0300
+++ b/connectivitymodules/SeCon/services/csc/src/caputils.cpp Thu Jul 15 19:35:12 2010 +0300
@@ -198,12 +198,23 @@
mobilePhone.GetCurrentNetwork(
status, mobilePhoneNetworkInfoPckg, mobilePhoneLocationArea );
User::WaitForRequest( status );
- User::LeaveIfError( status.Int() );
+ User::LeaveIfError( status.Int() );
}
CleanupStack::PopAndDestroy( &mobilePhone );
CleanupStack::PopAndDestroy( &server );
- StrCopy( aLongName, mobilePhoneNetworkInfo.iLongName );
+ if ( mobilePhoneNetworkInfo.iLongName.Length() > 0 )
+ {
+ StrCopy( aLongName, mobilePhoneNetworkInfo.iLongName );
+ }
+ else if ( mobilePhoneNetworkInfo.iShortName.Length() > 0 )
+ {
+ StrCopy( aLongName, mobilePhoneNetworkInfo.iShortName );
+ }
+ else
+ {
+ StrCopy( aLongName, mobilePhoneNetworkInfo.iDisplayTag );
+ }
StrCopy( aCountryCode, mobilePhoneNetworkInfo.iCountryCode );
StrCopy( aNetworkID, mobilePhoneNetworkInfo.iNetworkId );
--- a/connectivitymodules/SeCon/services/csc/src/stringlist.cpp Mon Jun 21 16:36:59 2010 +0300
+++ b/connectivitymodules/SeCon/services/csc/src/stringlist.cpp Thu Jul 15 19:35:12 2010 +0300
@@ -33,10 +33,8 @@
//
CStringList* CStringList::NewL()
{
- TRACE_FUNC_ENTRY;
CStringList* self = CStringList::NewLC();
CleanupStack::Pop( self );
- TRACE_FUNC_EXIT;
return self;
}
@@ -47,11 +45,9 @@
//
CStringList* CStringList::NewLC()
{
- TRACE_FUNC_ENTRY;
CStringList* self = new ( ELeave ) CStringList();
CleanupStack::PushL( self );
self->ConstructL();
- TRACE_FUNC_EXIT;
return self;
}
@@ -62,7 +58,6 @@
//
CStringList::CStringList()
{
- TRACE_FUNC;
}
// -----------------------------------------------------------------------------
@@ -72,10 +67,8 @@
//
CStringList::~CStringList()
{
- TRACE_FUNC_ENTRY;
delete iLines;
iLines = NULL;
- TRACE_FUNC_EXIT;
}
// -----------------------------------------------------------------------------
@@ -85,11 +78,9 @@
//
void CStringList::ConstructL()
{
- TRACE_FUNC_ENTRY;
const TInt KDefaultArrayGranularity = 10;
iLines = new (ELeave) CDesCArrayFlat(KDefaultArrayGranularity);
SetMark(0);
- TRACE_FUNC_EXIT;
}
// -----------------------------------------------------------------------------
--- a/connectivitymodules/SeCon/services/ftp/inc/sconftp.h Mon Jun 21 16:36:59 2010 +0300
+++ b/connectivitymodules/SeCon/services/ftp/inc/sconftp.h Thu Jul 15 19:35:12 2010 +0300
@@ -1,5 +1,5 @@
/*
-* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2005-2010 Nokia Corporation and/or its subsidiary(-ies).
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of "Eclipse Public License v1.0"
@@ -234,6 +234,8 @@
*/
void UpdateDriveTypeInfoL();
+ void CreateObexBufObjectL( CObexBufObject*& aObject, CBufFlat*& aBuffer );
+
CSConFTP();
virtual void ConstructL();
--- a/connectivitymodules/SeCon/services/ftp/src/sconftp.cpp Mon Jun 21 16:36:59 2010 +0300
+++ b/connectivitymodules/SeCon/services/ftp/src/sconftp.cpp Thu Jul 15 19:35:12 2010 +0300
@@ -1,5 +1,5 @@
/*
-* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2005-2010 Nokia Corporation and/or its subsidiary(-ies).
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of "Eclipse Public License v1.0"
@@ -378,21 +378,7 @@
if( ret == KErrNone )
{
- delete aObject;
- aObject = CObexBufObject::NewL( NULL );
-
- if( aBuffer )
- {
- aBuffer->Reset();
- delete aBuffer;
- }
-
- aBuffer = CBufFlat::NewL( KSConBufferSize );
- aBuffer->ResizeL( KSConBufferSize );
-
- TObexFilenameBackedBuffer bufferdetails( *aBuffer, iTempFileName,
- CObexBufObject::EDoubleBuffering );
- aObject->SetDataBufL( bufferdetails );
+ CreateObexBufObjectL( aObject, aBuffer );
}
}
else
@@ -432,21 +418,7 @@
if( ret == KErrNone )
{
- delete aObject;
- aObject = CObexBufObject::NewL( NULL );
-
- if( aBuffer )
- {
- aBuffer->Reset();
- delete aBuffer;
- }
-
- aBuffer = CBufFlat::NewL( KSConBufferSize );
- aBuffer->ResizeL( KSConBufferSize );
-
- TObexFilenameBackedBuffer bufferdetails( *aBuffer, iTempFileName,
- CObexBufObject::EDoubleBuffering );
- aObject->SetDataBufL( bufferdetails );
+ CreateObexBufObjectL( aObject, aBuffer );
if( lowMemory )
{
@@ -460,6 +432,31 @@
return ret;
}
+void CSConFTP::CreateObexBufObjectL( CObexBufObject*& aObject, CBufFlat*& aBuffer )
+ {
+ delete aObject;
+ aObject = NULL;
+ aObject = CObexBufObject::NewL( NULL );
+
+ delete aBuffer;
+ aBuffer = NULL;
+
+ aBuffer = CBufFlat::NewL( KSConBufferSize );
+ aBuffer->ResizeL( KSConBufferSize );
+
+ TObexFilenameBackedBuffer bufferdetails( *aBuffer, iTempFileName,
+ CObexBufObject::EDoubleBuffering );
+ TRAPD( err, aObject->SetDataBufL( bufferdetails ));
+ if ( err == KErrNoMemory )
+ {
+ LOGGER_WRITE( "KErrNoMemory, Using singe buffer strategy");
+ // If fails, use singe buffer strategy to save RAM
+ TObexFilenameBackedBuffer lowMemBufferdetails( *aBuffer, iTempFileName,
+ CObexBufObject::ESingleBuffering );
+ aObject->SetDataBufL( lowMemBufferdetails );
+ }
+ }
+
// -----------------------------------------------------------------------------
// CSConFTP::PutFileObjectFinalizeL( CObexBufObject*& aObject )
// Stores the relayed file object to inbox or file system.
--- a/mtpdataproviders/mtppictbridgedp/inc/s60dependency.h Mon Jun 21 16:36:59 2010 +0300
+++ b/mtpdataproviders/mtppictbridgedp/inc/s60dependency.h Thu Jul 15 19:35:12 2010 +0300
@@ -24,7 +24,7 @@
#include <e32base.h>
-#include <platform/mw/usbwatcherinternalpskeys.h>
+#include <platform/mw/UsbWatcherInternalPSKeys.h>
#include <platform/mw/usbpersonalityids.h>
#include <pathinfo.h>
#include <featmgr/featmgr.h>
--- a/mtpfws/mtpfw/common/inc/uiklafinternalcrkeys.h Mon Jun 21 16:36:59 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,94 +0,0 @@
-/*
-* Copyright (c) 2004-2008 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: Internal Central Repository keys.
-*
-*/
-
-
-#ifndef __UIKLAF_INTERNAL_CR_KEYS_H__
-#define __UIKLAF_INTERNAL_CR_KEYS_H__
-
-const TUid KCRUidUiklaf = { 0x101F8774 };
-
-// Helper constants for free disk space levels.
-#define DISK_SPACE_OK 0
-#define DISK_SPACE_WARNING -1
-#define DISK_SPACE_CRITICAL -2
-
-/**
- * Use KUikOODDiskFreeSpaceWarningNoteLevel instead of this!!
- * Threshold for disk space warning level (bytes).
- * Read-only key. Default value: 196608
- */
-const TUint32 KUikOODDiskWarningThreshold = 0x00000001;
-
-/**
- * Threshold for disk space critical level (bytes).
- * Read-only key. Default value: 131072
- */
-const TUint32 KUikOODDiskCriticalThreshold = 0x00000002;
-
-/**
- * Threshold for low RAM level (bytes).
- * Read-only key. Default value: 750000
- */
-const TUint32 KUikOOMRamLowThreshold = 0x00000003;
-
-/**
- * Threshold for good RAM level (bytes).
- * Read-only key. Default value: 1000000
- */
-const TUint32 KUikOOMRamGoodThreshold = 0x00000004;
-
-/**
- * Timeout for application exit (milliseconds).
- * Read-only key. Default value: 1000000
- */
-const TUint32 KUikOOMMaxAppExitTime = 0x00000005;
-
-/**
- * Threshold for disk space warning note level as percent of used disk space.
- * Read-only key. Default value: 95
- */
-const TUint32 KUikOODDiskFreeSpaceWarningNoteLevel = 0x00000006;
-
-/**
- * Threshold for disk space warning note level for mass memory.
- * Read-only key. Default value: 20971520
- */
-const TUint32 KUikOODDiskFreeSpaceWarningNoteLevelMassMemory = 0x00000007;
-
-#ifdef __MTP_NAVIENGINE_TEST
-//The free size of C-Drive of NaviEngine env is less than 21M,
-//it will block many ONB test cases
-const TInt KFreeSpaceThreshHoldDefaultValue(0);
-const TInt KFreeSpaceExtraReserved(0);
-
-#else
-//MTP should reserve some disk space to prevent OOD(Out of Disk) monitor
-//popup 'Out of memory' note.When syncing music through ovi player,
-//sometimes device screen get freeze with this note
-//Be default, this value is read from Central Respository, if error while
-//reading, use this one
-const TInt KFreeSpaceThreshHoldDefaultValue(20*1024*1024);//20M bytes
-
-//Beside the OOD threshold value, we need to reserve extra disk space
-//for harvest server do the harvest, set this as 1M
-const TInt KFreeSpaceExtraReserved(1024*1024);//1M bytes
-
-#endif
-
-#endif __UIKLAF_INTERNAL_CR_KEYS_H__
-
-// End of file
--- a/mtpfws/mtpfw/dataproviders/devdp/src/cmtpdevicedp.cpp Mon Jun 21 16:36:59 2010 +0300
+++ b/mtpfws/mtpfw/dataproviders/devdp/src/cmtpdevicedp.cpp Thu Jul 15 19:35:12 2010 +0300
@@ -481,7 +481,7 @@
__ASSERT_ALWAYS( isFolder, User::Leave( KErrArgument ));
__ASSERT_ALWAYS( aParentHandle != KMTPHandleNone, User::Leave( KErrArgument ));
- __ASSERT_ALWAYS( Framework().StorageMgr().ValidStorageId( aStorageId ), User::Invariant());
+ __ASSERT_ALWAYS( Framework().StorageMgr().ValidStorageId( aStorageId ), User::Leave( KErrArgument ));
__FLOG_VA((_L16("Add Entry for Path:%S"), &aPath ));
aObjectInfo.SetUint( CMTPObjectMetaData::EDataProviderId, Framework().DataProviderId() );
--- a/mtpfws/mtpfw/dataproviders/devdp/src/cmtpgetstorageinfo.cpp Mon Jun 21 16:36:59 2010 +0300
+++ b/mtpfws/mtpfw/dataproviders/devdp/src/cmtpgetstorageinfo.cpp Thu Jul 15 19:35:12 2010 +0300
@@ -26,10 +26,7 @@
#include "rmtpdevicedpsingletons.h"
#include "cmtpdevicedpconfigmgr.h"
#include "mtpframeworkconst.h"
-
-//This file is exported from s60 sdk, now just copy it
-//to make sure onb can run
-#include "UiklafInternalCRKeys.h"
+#include "mtpcommonconst.h"
// Class constants.
__FLOG_STMT(_LIT8(KComponent,"GetStorageInfo");)
--- a/mtpfws/mtpfw/dataproviders/devdp/src/mtpdevicedpprocessor.cpp Mon Jun 21 16:36:59 2010 +0300
+++ b/mtpfws/mtpfw/dataproviders/devdp/src/mtpdevicedpprocessor.cpp Thu Jul 15 19:35:12 2010 +0300
@@ -52,6 +52,8 @@
#include "cmtpgetserviceinfo.h"
#include "cmtpgetformatcapabilities.h"
#include "cmtpsetobjectprotection.h"
+#include "cmtpcommonrequestprocessor.h"
+
/**
device data provider mapping table from request ID to factory method of the request processor
*/
@@ -89,7 +91,9 @@
{EMTPOpCodeGetServiceIDs, CMTPGetServiceIds::NewL},
{EMTPOpCodeGetServiceInfo, CMTPGetServiceInfo::NewL},
{EMTPOpCodeGetFormatCapabilities,CMTPGetFormatCapabilities::NewL},
- {EMTPOpCodeSetObjectProtection, CMTPSetObjectProtection::NewL}
+ {EMTPOpCodeSetObjectProtection, CMTPSetObjectProtection::NewL},
+ {EMTPOpCodeSetServicePropList,CMTPCommonRequestProcessor::NewL<EMTPRespCodeInvalidServiceID, ETrue>},
+ {EMTPOpCodeDeleteServicePropList,CMTPCommonRequestProcessor::NewL<EMTPRespCodeInvalidServiceID, ETrue>}
};
/**
--- a/mtpfws/mtpfw/dataproviders/dputility/src/cmtpmoveobject.cpp Mon Jun 21 16:36:59 2010 +0300
+++ b/mtpfws/mtpfw/dataproviders/dputility/src/cmtpmoveobject.cpp Thu Jul 15 19:35:12 2010 +0300
@@ -36,7 +36,7 @@
*/
const TMTPRequestElementInfo KMTPMoveObjectPolicy[] =
{
- {TMTPTypeRequest::ERequestParameter1, EMTPElementTypeObjectHandle, EMTPElementAttrFileOrDir | EMTPElementAttrWrite, 0, 0, 0},
+ {TMTPTypeRequest::ERequestParameter1, EMTPElementTypeObjectHandle, EMTPElementAttrFileOrDir, 0, 0, 0},
{TMTPTypeRequest::ERequestParameter2, EMTPElementTypeStorageId, EMTPElementAttrWrite, 0, 0, 0},
{TMTPTypeRequest::ERequestParameter3, EMTPElementTypeObjectHandle, EMTPElementAttrDir, 1, 0, 0}
};
--- a/mtpfws/mtpfw/dataproviders/dputility/src/cmtpsendobjectinfo.cpp Mon Jun 21 16:36:59 2010 +0300
+++ b/mtpfws/mtpfw/dataproviders/dputility/src/cmtpsendobjectinfo.cpp Thu Jul 15 19:35:12 2010 +0300
@@ -540,7 +540,7 @@
}
}
- if (result)
+ if (result && !iIsFolder)
{
result &= !Exists(iFullPath);
if (!result)
@@ -613,7 +613,7 @@
}
}
- if (result)
+ if (result && !iIsFolder)
{
result = !Exists(iFullPath);
if (!result)
@@ -1100,18 +1100,28 @@
iReceivedObject->SetUint(CMTPObjectMetaData::EStorageId, iStorageId);
iReceivedObject->SetDesCL(CMTPObjectMetaData::ESuid, iFullPath);
- iFramework.ObjectMgr().ReserveObjectHandleL(*iReceivedObject, iObjectSize);
-
if(iIsFolder)
{
- SetPropertiesL();
- iFramework.ObjectMgr().CommitReservedObjectHandleL(*iReceivedObject);
+ SetPropertiesL();
+ TUint32 handle = iFramework.ObjectMgr().HandleL(iFullPath);
+ if (handle != KMTPHandleNone)
+ {
+ // The folder is already in DB
+ iReceivedObject->SetUint(CMTPObjectMetaData::EHandle, handle);
+ iFramework.ObjectMgr().ModifyObjectL(*iReceivedObject);
+ }
+ else
+ {
+ iFramework.ObjectMgr().ReserveObjectHandleL(*iReceivedObject, iObjectSize);
+ iFramework.ObjectMgr().CommitReservedObjectHandleL(*iReceivedObject);
+ }
}
else
- {
- iExpectedSendObjectRequest.SetUint32(TMTPTypeRequest::ERequestSessionID, iSessionId);
- iFramework.RouteRequestRegisterL(iExpectedSendObjectRequest, iConnection);
- }
+ {
+ iFramework.ObjectMgr().ReserveObjectHandleL(*iReceivedObject, iObjectSize);
+ iExpectedSendObjectRequest.SetUint32(TMTPTypeRequest::ERequestSessionID, iSessionId);
+ iFramework.RouteRequestRegisterL(iExpectedSendObjectRequest, iConnection);
+ }
TUint32 parameters[3];
parameters[0] = iStorageId;
parameters[1] = iParentHandle;
@@ -1124,7 +1134,10 @@
{
if (iIsFolder)
{
- User::LeaveIfError(iFramework.Fs().MkDirAll(iFullPath));
+ if (!Exists(iFullPath))
+ {
+ User::LeaveIfError(iFramework.Fs().MkDirAll(iFullPath));
+ }
}
else
{
--- a/mtpfws/mtpfw/dataproviders/dputility/src/rmtputility.cpp Mon Jun 21 16:36:59 2010 +0300
+++ b/mtpfws/mtpfw/dataproviders/dputility/src/rmtputility.cpp Thu Jul 15 19:35:12 2010 +0300
@@ -526,6 +526,7 @@
if (KErrNone != iFramework->Fs().Entry(entryName, entry))
{
// Skip objects that don't use the file path as SUID.
+ CleanupStack::PopAndDestroy(&rightPartName);
CleanupStack::PopAndDestroy(&entryName);
continue;
}
--- a/mtpfws/mtpfw/datatypes/group/mtpdatatypes.mmp Mon Jun 21 16:36:59 2010 +0300
+++ b/mtpfws/mtpfw/datatypes/group/mtpdatatypes.mmp Thu Jul 15 19:35:12 2010 +0300
@@ -37,8 +37,8 @@
MW_LAYER_SYSTEMINCLUDE_SYMBIAN
USERINCLUDE ../inc
-//For UiklafInternalCRKeys.h,should be removed, after we switched to DFs
-USERINCLUDE ../../common/inc
+USERINCLUDE ../../inc
+
SOURCEPATH ../src
--- a/mtpfws/mtpfw/datatypes/src/cmtptypefile.cpp Mon Jun 21 16:36:59 2010 +0300
+++ b/mtpfws/mtpfw/datatypes/src/cmtptypefile.cpp Thu Jul 15 19:35:12 2010 +0300
@@ -21,9 +21,7 @@
#include <mtp/cmtptypefile.h>
#include <mtp/mtpdatatypeconstants.h>
-//This file is exported from s60 sdk, now just copy it
-//to make sure onb can run
-#include "UiklafInternalCRKeys.h"
+#include "mtpcommonconst.h"
// File type constants.
const TInt KMTPFileChunkSizeForLargeFile(0x00080000); // 512K
--- a/mtpfws/mtpfw/datatypes/src/cmtptypeobjectproplist.cpp Mon Jun 21 16:36:59 2010 +0300
+++ b/mtpfws/mtpfw/datatypes/src/cmtptypeobjectproplist.cpp Thu Jul 15 19:35:12 2010 +0300
@@ -609,9 +609,27 @@
{
User::Leave(KErrArgument);
}
- TUint16 retValue;
- GetValueL(&retValue, sizeof(TUint16));
- return retValue;
+
+ //Workaround for partial deletion issue observed on Windows XP/Windows7.
+ //When send an object from PC to device through Windows explorer, it will
+ //include the 'ProtectionStatus' property in the dataset of 'SendObjectPropList'
+ //command. While syncing through Ovi player or Windows Media Player, this property
+ //will not be included.
+ //When we delete a folder which contains read-only objects,we returns partial
+ //deletion code, because read-only object should not be deleted according to MTP spec.
+ //On receiving this,Windows popup a dialog saying 'device stops response', this really
+ //give user bad experience, to prevent this, we make this workaround here: when dataprovider
+ //query value of 'ProtectionStatus' property,always return EMTPProtectionNoProtection(0x0000).
+ if (EMTPObjectPropCodeProtectionStatus == iPropertyCode)
+ {
+ return EMTPProtectionNoProtection;
+ }
+ else
+ {
+ TUint16 retValue;
+ GetValueL(&retValue, sizeof(TUint16));
+ return retValue;
+ }
default:
User::Leave(KErrArgument);
}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mtpfws/mtpfw/inc/mtpcommonconst.h Thu Jul 15 19:35:12 2010 +0300
@@ -0,0 +1,53 @@
+// Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+/**
+ @file
+ @internalComponent
+*/
+
+#ifndef MTPCOMMONCONST_H
+#define MTPCOMMONCONST_H
+
+#ifdef __SERIES60_
+#include <UiklafInternalCRKeys.h>
+#else
+//Following is copied from 'UiklafInternalCRKeys.h', which is
+//exported from S60 sdk, in Symbian CBR, this file does not exist.
+const TUid KCRUidUiklaf = { 0x101F8774 };
+const TUint32 KUikOODDiskFreeSpaceWarningNoteLevel = 0x00000006;
+const TUint32 KUikOODDiskFreeSpaceWarningNoteLevelMassMemory = 0x00000007;
+#endif
+
+#ifdef __MTP_NAVIENGINE_TEST
+//The free size of C-Drive of NaviEngine env is less than 21M,
+//it will block many ONB test cases
+const TInt KFreeSpaceThreshHoldDefaultValue(0);
+const TInt KFreeSpaceExtraReserved(0);
+
+#else
+//MTP should reserve some disk space to prevent OOD(Out of Disk) monitor
+//popup 'Out of memory' note.When syncing music through ovi player,
+//sometimes device screen get freeze with this note
+//Be default, this value is read from Central Respository, if error while
+//reading, use this one
+const TInt KFreeSpaceThreshHoldDefaultValue(20*1024*1024);//20M bytes
+
+//Beside the OOD threshold value, we need to reserve extra disk space
+//for harvest server,Thumbnail manager to store their data, set this as 7M
+const TInt KFreeSpaceExtraReserved(7*1024*1024);//7M bytes
+
+#endif
+#endif //MTPCOMMONCONST_H
--- a/mtpfws/mtpfw/src/cmtpobjectstore.cpp Mon Jun 21 16:36:59 2010 +0300
+++ b/mtpfws/mtpfw/src/cmtpobjectstore.cpp Thu Jul 15 19:35:12 2010 +0300
@@ -442,6 +442,12 @@
TBool needUpdateOwner = EFalse;
TUint dpId(aObject.Uint(CMTPObjectMetaData::EDataProviderId));
+ if ((aObject.DesC(CMTPObjectMetaData::ESuid)).Length() > KMaxFileName)
+ {
+ // The length of object uid should not excceeds KMaxFileName
+ User::Leave( KErrBadName );
+ }
+
TFileName suid;
suid.CopyLC(aObject.DesC(CMTPObjectMetaData::ESuid));
TUint32 suidHash = DefaultHash::Des16(suid);
@@ -478,7 +484,8 @@
aObject.SetUint(CMTPObjectMetaData::EHandle, handle);
id = iEnumeratingCacheObjList[found]->iPOUID;
aObject.SetUint(CMTPObjectMetaData::EIdentifier, id);
- if(iEnumeratingCacheObjList[found]->iFormatcode != aObject.Uint(CMTPObjectMetaData::EFormatCode))
+ if(iEnumeratingCacheObjList[found]->iFormatcode != aObject.Uint(CMTPObjectMetaData::EFormatCode) ||
+ iEnumeratingCacheObjList[found]->iObjParentId != aObject.Uint(CMTPObjectMetaData::EParentHandle))
{//have different owner
needUpdateOwner = ETrue;
}
@@ -523,6 +530,7 @@
needToInsert = ETrue;
__FLOG_VA((_L8("InsertObjectL After enmueration, needUpdateOwner %d needToInsert %d"), needUpdateOwner, needToInsert));
}
+
if (needToInsert)//needToInsert and needUpdateOwner can't be true at same time
{
TUint32 parentHandle(aObject.Uint(CMTPObjectMetaData::EParentHandle));
@@ -562,6 +570,7 @@
iBatched.SetColL(EObjectStoreModes, aObject.Uint(CMTPObjectMetaData::EModes));
iBatched.SetColL(EObjectStoreNonConsumable, aObject.Uint(CMTPObjectMetaData::ENonConsumable));
iBatched.SetColL(EObjectStoreName, aObject.DesC(CMTPObjectMetaData::EName));
+ iBatched.SetColL(EObjectStoreParentHandle, aObject.Uint(CMTPObjectMetaData::EParentHandle));
iBatched.PutL();
CleanupStack::Pop(&iBatched);
IncTranOpsNumL();
@@ -938,6 +947,14 @@
{
err = iDatabase.Recover();
}
+ if(KErrNone == err)
+ {
+ err = iDatabase.Compact();
+ if(KErrNone != err)
+ {//the DB file is corrupt
+ BaflUtils::DeleteFile(iSingletons.Fs(), fullName);
+ }
+ }
}
if (err != KErrNone)