# HG changeset patch # User Dremov Kirill (Nokia-D-MSW/Tampere) # Date 1284493949 -10800 # Node ID 74aa6861c87daa10a3e049bb225ac5ae3c01d65c # Parent 4a793f564d72831437a1df4f1d583458ec1ab753 Revision: 201032 Kit: 201035 diff -r 4a793f564d72 -r 74aa6861c87d connectivitymodules/SeCon/servers/pcconn/inc/sconpcconnclientserver.h --- a/connectivitymodules/SeCon/servers/pcconn/inc/sconpcconnclientserver.h Wed Sep 01 12:20:56 2010 +0100 +++ b/connectivitymodules/SeCon/servers/pcconn/inc/sconpcconnclientserver.h Tue Sep 14 22:52:29 2010 +0300 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2005-2006 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" @@ -48,7 +48,7 @@ // Chunk const TUint KSConPCConnChunkSize = 128; -const TUint KSConPCConnChunkMaxSize = 65536; +const TUint KSConPCConnChunkMaxSize = 0x100000; // 1048576 bytes const TUint KSConPCConnBufferMaxSize = 65000; // Version number diff -r 4a793f564d72 -r 74aa6861c87d mtpdataproviders/mtpimagedp/inc/cmtpimagedp.h --- a/mtpdataproviders/mtpimagedp/inc/cmtpimagedp.h Wed Sep 01 12:20:56 2010 +0100 +++ b/mtpdataproviders/mtpimagedp/inc/cmtpimagedp.h Tue Sep 14 22:52:29 2010 +0300 @@ -58,7 +58,7 @@ public: CMTPImageDpObjectPropertyMgr& PropertyMgr()const; - CMTPImageDpThumbnailCreator& ThumbnailManager() const; + CMTPImageDpThumbnailCreator* ThumbnailManager(); CRepository& Repository() const; TMTPFormatCode FindFormat(const TDesC& aExtension); diff -r 4a793f564d72 -r 74aa6861c87d mtpdataproviders/mtpimagedp/src/cmtpimagedp.cpp --- a/mtpdataproviders/mtpimagedp/src/cmtpimagedp.cpp Wed Sep 01 12:20:56 2010 +0100 +++ b/mtpdataproviders/mtpimagedp/src/cmtpimagedp.cpp Tue Sep 14 22:52:29 2010 +0300 @@ -96,8 +96,6 @@ { __FLOG_OPEN(KMTPSubsystem, KComponent); __FLOG(_L8(">> CMTPImageDataProvider::ConstructL")); - - iThumbnailManager = CMTPImageDpThumbnailCreator::NewL(*this); iNewPicNotifier = CMTPImageDpNewPicturesNotifier::NewL(); //Setup central repository connection @@ -454,11 +452,14 @@ __FLOG(_L8("<< NotifyStorageEnumerationCompleteL")); } -CMTPImageDpThumbnailCreator& CMTPImageDataProvider::ThumbnailManager() const - { - __ASSERT_DEBUG(iThumbnailManager, User::Invariant()); - return *iThumbnailManager; - } +CMTPImageDpThumbnailCreator* CMTPImageDataProvider::ThumbnailManager() + { + if(NULL == iThumbnailManager) + { + TRAP_IGNORE(iThumbnailManager = CMTPImageDpThumbnailCreator::NewL(*this)); + } + return iThumbnailManager; + } CMTPImageDpObjectPropertyMgr& CMTPImageDataProvider::PropertyMgr()const { diff -r 4a793f564d72 -r 74aa6861c87d mtpdataproviders/mtpimagedp/src/cmtpimagedpgetthumb.cpp --- a/mtpdataproviders/mtpimagedp/src/cmtpimagedpgetthumb.cpp Wed Sep 01 12:20:56 2010 +0100 +++ b/mtpdataproviders/mtpimagedp/src/cmtpimagedpgetthumb.cpp Tue Sep 14 22:52:29 2010 +0300 @@ -111,21 +111,26 @@ TEntry fileEntry; User::LeaveIfError(iFramework.Fs().Entry(iObjectMeta->DesC(CMTPObjectMetaData::ESuid), fileEntry)); - imgDp.ThumbnailManager().GetThumbMgr()->SetFlagsL(CThumbnailManager::EDefaultFlags); - if(fileEntry.FileSize() > KFileSizeMax) + + CMTPImageDpThumbnailCreator* tnc = imgDp.ThumbnailManager(); + if(tnc != NULL) { - __FLOG(_L8(">> CMTPImageDpGetThumb::ServiceL, fileEntry.FileSize() > KFileSizeMax")); - imgDp.ThumbnailManager().GetThumbMgr()->SetFlagsL(CThumbnailManager::EDoNotCreate); + tnc->GetThumbMgr()->SetFlagsL(CThumbnailManager::EDefaultFlags); + if(fileEntry.FileSize() > KFileSizeMax) + { + __FLOG(_L8(">> CMTPImageDpGetThumb::ServiceL, fileEntry.FileSize() > KFileSizeMax")); + tnc->GetThumbMgr()->SetFlagsL(CThumbnailManager::EDoNotCreate); + } + + tnc->GetThumbnailL(iObjectMeta->DesC(CMTPObjectMetaData::ESuid), thumbnailData, err); + imgDp.PropertyMgr().StoreThunmnail(iObjectMeta->Uint(CMTPObjectMetaData::EHandle), thumbnailData); } - - imgDp.ThumbnailManager().GetThumbnailL(iObjectMeta->DesC(CMTPObjectMetaData::ESuid), thumbnailData, err); - User::LeaveIfError(err); - User::LeaveIfNull(thumbnailData); - - //Transfer ownership of thumbnailData to Property Manager - imgDp.PropertyMgr().StoreThunmnail(iObjectMeta->Uint(CMTPObjectMetaData::EHandle), thumbnailData); + //Transfer ownership of thumbnailData to Property Manager } - iThumb->Write(*thumbnailData); + if(thumbnailData != NULL) + { + iThumb->Write(*thumbnailData); + } SendDataL(*iThumb); __FLOG(_L8("<< CMTPImageDpGetThumb::ServiceL")); } diff -r 4a793f564d72 -r 74aa6861c87d mtpdataproviders/mtpimagedp/src/cmtpimagedpobjectpropertymgr.cpp --- a/mtpdataproviders/mtpimagedp/src/cmtpimagedpobjectpropertymgr.cpp Wed Sep 01 12:20:56 2010 +0100 +++ b/mtpdataproviders/mtpimagedp/src/cmtpimagedpobjectpropertymgr.cpp Tue Sep 14 22:52:29 2010 +0300 @@ -454,21 +454,23 @@ */ TEntry fileEntry; TInt err = iFs.Entry(iObjectInfo->DesC(CMTPObjectMetaData::ESuid), fileEntry); - if (err == KErrNone) + CMTPImageDpThumbnailCreator* tnc = iDataProvider.ThumbnailManager(); + if (err == KErrNone && tnc != NULL) { + if(fileEntry.FileSize() > KFileSizeMax || !alwaysCreate) { - iDataProvider.ThumbnailManager().GetThumbMgr()->SetFlagsL(CThumbnailManager::EDoNotCreate); + tnc->GetThumbMgr()->SetFlagsL(CThumbnailManager::EDoNotCreate); } else { - iDataProvider.ThumbnailManager().GetThumbMgr()->SetFlagsL(CThumbnailManager::EDefaultFlags); + tnc->GetThumbMgr()->SetFlagsL(CThumbnailManager::EDefaultFlags); } /** * trap the leave to avoid return general error when PC get object property list */ - TRAP(err, iDataProvider.ThumbnailManager().GetThumbnailL(iObjectInfo->DesC(CMTPObjectMetaData::ESuid), iThumbnailCache.iThumbnailData, err)); + TRAP(err, tnc->GetThumbnailL(iObjectInfo->DesC(CMTPObjectMetaData::ESuid), iThumbnailCache.iThumbnailData, err)); if (err == KErrNone) { iThumbnailCache.iObjectHandle = iObjectInfo->Uint(CMTPObjectMetaData::EHandle); @@ -484,6 +486,10 @@ } } } + else + { + aValue = KThumbCompressedSize; + } } break; @@ -599,22 +605,23 @@ */ TEntry fileEntry; TInt err = iFs.Entry(iObjectInfo->DesC(CMTPObjectMetaData::ESuid), fileEntry); - if (err == KErrNone) + CMTPImageDpThumbnailCreator* tnc = iDataProvider.ThumbnailManager(); + if (err == KErrNone && tnc != NULL) { if(fileEntry.FileSize() > KFileSizeMax || !alwaysCreate) { - iDataProvider.ThumbnailManager().GetThumbMgr()->SetFlagsL(CThumbnailManager::EDoNotCreate); + tnc->GetThumbMgr()->SetFlagsL(CThumbnailManager::EDoNotCreate); } else { - iDataProvider.ThumbnailManager().GetThumbMgr()->SetFlagsL(CThumbnailManager::EDefaultFlags); + tnc->GetThumbMgr()->SetFlagsL(CThumbnailManager::EDefaultFlags); } /** * trap the leave to avoid return general error when PC get object property list */ - TRAP(err, iDataProvider.ThumbnailManager().GetThumbnailL(iObjectInfo->DesC(CMTPObjectMetaData::ESuid), iThumbnailCache.iThumbnailData, err)); + TRAP(err, tnc->GetThumbnailL(iObjectInfo->DesC(CMTPObjectMetaData::ESuid), iThumbnailCache.iThumbnailData, err)); if (err == KErrNone) { iThumbnailCache.iObjectHandle = iObjectInfo->Uint(CMTPObjectMetaData::EHandle); diff -r 4a793f564d72 -r 74aa6861c87d mtpdataproviders/mtpimagedp/src/cmtpimagedpthumbnailcreator.cpp --- a/mtpdataproviders/mtpimagedp/src/cmtpimagedpthumbnailcreator.cpp Wed Sep 01 12:20:56 2010 +0100 +++ b/mtpdataproviders/mtpimagedp/src/cmtpimagedpthumbnailcreator.cpp Tue Sep 14 22:52:29 2010 +0300 @@ -68,7 +68,7 @@ delete iBitmap; delete iObjectSource; delete iThumbMgr; - if(iActiveSchedulerWait->IsStarted()) + if(iActiveSchedulerWait != NULL && iActiveSchedulerWait->IsStarted()) { *iCreationErr = KErrNotReady; iActiveSchedulerWait->AsyncStop(); diff -r 4a793f564d72 -r 74aa6861c87d mtpfws/mtpfw/inc/cmtpconnection.h --- a/mtpfws/mtpfw/inc/cmtpconnection.h Wed Sep 01 12:20:56 2010 +0100 +++ b/mtpfws/mtpfw/inc/cmtpconnection.h Tue Sep 14 22:52:29 2010 +0300 @@ -147,6 +147,7 @@ void EnqueueEvent(CMTPEventLink* aLink); void DequeueEvent(CMTPEventLink* aLink); + void DequeueAllEvents(); /** * This method define and attach the property for publishing connection state diff -r 4a793f564d72 -r 74aa6861c87d mtpfws/mtpfw/src/cmtpconnection.cpp --- a/mtpfws/mtpfw/src/cmtpconnection.cpp Wed Sep 01 12:20:56 2010 +0100 +++ b/mtpfws/mtpfw/src/cmtpconnection.cpp Tue Sep 14 22:52:29 2010 +0300 @@ -82,17 +82,9 @@ __FLOG(_L8("~CMTPConnection - Entry")); CloseAllSessions(); - // Remove any events not associated - // with a session - TSglQueIter iter(iEventQ); - iter.SetToFirst(); - CMTPEventLink* link = NULL; - - while ((link = iter++) != NULL) - { - delete link; - } - + //remove all events + DequeueAllEvents(); + iSessions.ResetAndDestroy(); if (iTransportConnection != NULL) @@ -667,9 +659,16 @@ DequeueEvent(iEventQ.First()); if (iPendingEventCount > 0) { - // Forward the event to the transport connection layer. - __FLOG(_L8("Sending queued event")); - iTransportConnection->SendEventL(iEventQ.First()->iEvent); + if (NULL != iTransportConnection) + { + // Forward the event to the transport connection layer. + __FLOG(_L8("Sending queued event")); + iTransportConnection->SendEventL(iEventQ.First()->iEvent); + } + else + { + DequeueAllEvents(); + } } __FLOG(_L8("SendEventCompleteL - Exit")); @@ -1046,6 +1045,19 @@ __FLOG(_L8("RemoveEventsForSession - Exit")); } +void CMTPConnection::DequeueAllEvents() + { + TSglQueIter iter(iEventQ); + iter.SetToFirst(); + CMTPEventLink* link = NULL; + + while ((link = iter++) != NULL) + { + delete link; + } + iPendingEventCount = 0; + } + void CMTPConnection::DequeueEvent(CMTPEventLink* aLink) { iEventQ.Remove(*aLink);