--- a/imagehandlingutilities/thumbnailmanager/thumbagdaemon/src/thumbagprocessor.cpp Fri Sep 03 10:29:37 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,2560 +0,0 @@
-/*
-* Copyright (c) 2006-2007 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: Processor
-*
-*/
-
-
-#include <e32base.h>
-
-#include <mdeconstants.h>
-#include <centralrepository.h>
-
-#include <mpxcollectionutility.h>
-#include <mpxmessagegeneraldefs.h>
-#include <mpxcollectionmessage.h>
-#include <coreapplicationuisdomainpskeys.h>
-
-#include "thumbagprocessor.h"
-#include "thumbnaillog.h"
-#include "thumbnailmanagerconstants.h"
-#include "thumbnailmanagerprivatecrkeys.h"
-#include "OstTraceDefinitions.h"
-#ifdef OST_TRACE_COMPILER_IN_USE
-#include "thumbagprocessorTraces.h"
-#endif
-
-// ---------------------------------------------------------------------------
-// CThumbAGProcessor::NewL()
-// ---------------------------------------------------------------------------
-//
-CThumbAGProcessor* CThumbAGProcessor::NewL()
- {
- TN_DEBUG1( "CThumbAGProcessor::NewL() - begin" );
- OstTrace0( TRACE_NORMAL, CTHUMBAGPROCESSOR_NEWL, "CThumbAGProcessor::NewL - begin" );
-
- CThumbAGProcessor* self = new( ELeave )CThumbAGProcessor();
- CleanupStack::PushL( self );
- self->ConstructL();
- CleanupStack::Pop( self );
- return self;
- }
-
-// ---------------------------------------------------------------------------
-// CThumbAGProcessor::CThumbAGProcessor()
-// ---------------------------------------------------------------------------
-//
-CThumbAGProcessor::CThumbAGProcessor(): CActive( CActive::EPriorityStandard ), iMMCHarvestingItemsLeftTemp(0),
- iPHHarvestingItemsLeftTemp(0)
- {
- TN_DEBUG1( "CThumbAGProcessor::CThumbAGProcessor() - begin" );
- OstTrace0( TRACE_NORMAL, CTHUMBAGPROCESSOR_CTHUMBAGPROCESSOR, "CThumbAGProcessor::CThumbAGProcessor- begin" );
-
- CActiveScheduler::Add( this );
- }
-
-// ---------------------------------------------------------------------------
-// CThumbAGProcessor::ConstructL()
-// ---------------------------------------------------------------------------
-//
-void CThumbAGProcessor::ConstructL()
- {
- TN_DEBUG1( "CThumbAGProcessor::ConstructL() - begin" );
- OstTrace0( TRACE_NORMAL, CTHUMBAGPROCESSOR_CONSTRUCTL, "CThumbAGProcessor::ConstructL - begin" );
-
- iShutdown = EFalse;
-
- iTMSession = CThumbnailManager::NewL( *this );
- iTMSession->SetRequestObserver(*this);
-
- iQueryAllItems = NULL;
- iQueryPlaceholders = NULL;
- iQuery = NULL;
- iQueryActive = EFalse;
- iModify = EFalse;
- iProcessingCount = 0;
-
- iActiveCount = 0;
-
- // set auto create values from cenrep
- CheckAutoCreateValuesL();
-
- iPeriodicTimer = CPeriodic::NewL(CActive::EPriorityStandard);
-
- iMountTimer = CPeriodic::NewL(CActive::EPriorityUserInput);
-
- SetForceRun( EFalse );
-
- iFormatObserver = CTMFormatObserver::NewL( *this );
-
- iFormatting = EFalse;
- iSessionDied = EFalse;
-
- iCollectionUtility = NULL;
-
- iActivityManager = CTMActivityManager::NewL( this, KBackgroundGenerationIdle);
-
- UpdatePSValues(ETrue, ETrue);
-
- RProperty::Define(KTAGDPSNotification, KMPXHarvesting, RProperty::EInt);
-
- //start foreground generation observer
- iForegroundGenerationObserver = CTMRPropertyObserver::NewL( *this, KTAGDPSNotification, KForceBackgroundGeneration, ETrue );
-
- TN_DEBUG1( "CThumbAGProcessor::ConstructL() - end" );
- OstTrace0( TRACE_NORMAL, DUP1_CTHUMBAGPROCESSOR_CONSTRUCTL, "CThumbAGProcessor::ConstructL - end" );
- }
-
-// ---------------------------------------------------------------------------
-// CThumbAGProcessor::~CThumbAGProcessor()
-// ---------------------------------------------------------------------------
-//
-CThumbAGProcessor::~CThumbAGProcessor()
- {
- TN_DEBUG1( "CThumbAGProcessor::~CThumbAGProcessor() - begin" );
- OstTrace0( TRACE_NORMAL, DUP1_CTHUMBAGPROCESSOR_CTHUMBAGPROCESSOR, "CThumbAGProcessor::~CThumbAGProcessor - begin" );
-
- Shutdown();
-
- Cancel();
-
- if (iTMSession)
- {
- iTMSession->RemoveRequestObserver();
- delete iTMSession;
- iTMSession = NULL;
- }
-
- if(iMountTimer)
- {
- iMountTimer->Cancel();
- delete iMountTimer;
- iMountTimer = NULL;
- }
-
- if(iPeriodicTimer)
- {
- iPeriodicTimer->Cancel();
- delete iPeriodicTimer;
- iPeriodicTimer = NULL;
- }
-
- if(iActivityManager)
- {
- delete iActivityManager;
- iActivityManager = NULL;
- }
-
- if (iQuery)
- {
- iQuery->Cancel();
- delete iQuery;
- iQuery = NULL;
- }
-
- if(iQueryPlaceholders)
- {
- iQueryPlaceholders->Cancel();
- delete iQueryPlaceholders;
- iQueryPlaceholders = NULL;
- }
-
- if (iQueryAllItems)
- {
- iQueryAllItems->Cancel();
- delete iQueryAllItems;
- iQueryAllItems = NULL;
- }
-
- if (!iInit)
- {
-#ifdef MDS_MODIFY_OBSERVER
- iHarvesterClient.RemoveHarvesterEventObserver(*this);
- iHarvesterClient.Close();
-#endif
- }
-
- if(iForegroundGenerationObserver)
- {
- delete iForegroundGenerationObserver;
- iForegroundGenerationObserver = NULL;
- }
-
- if(iFormatObserver)
- {
- delete iFormatObserver;
- iFormatObserver = NULL;
- }
-
- if ( iCollectionUtility )
- {
- iCollectionUtility->Close();
- iCollectionUtility = NULL;
- }
-
- for(TInt i=0;i<iGenerationQueue.Count();i++)
- {
- delete iGenerationQueue[i].iUri;
- iGenerationQueue[i].iUri = NULL;
- }
-
- iGenerationQueue.Reset();
- iGenerationQueue.Close();
-
- iQueryQueue.Close();
-
- TN_DEBUG1( "CThumbAGProcessor::~CThumbAGProcessor() - end" );
- OstTrace0( TRACE_NORMAL, DUP2_CTHUMBAGPROCESSOR_CTHUMBAGPROCESSOR, "CThumbAGProcessor::~CThumbAGProcessor - end" );
- }
-
-// ---------------------------------------------------------------------------
-// CThumbAGProcessor::Shutdown()
-// ---------------------------------------------------------------------------
-//
-void CThumbAGProcessor::Shutdown()
- {
- TN_DEBUG1( "CThumbAGProcessor::Shutdown()" );
- OstTrace0( TRACE_NORMAL, CTHUMBAGPROCESSOR_SHUTDOWN, "CThumbAGProcessor::Shutdown" );
- iShutdown = ETrue;
- UpdatePSValues(EFalse, EFalse);
- }
-
-// -----------------------------------------------------------------------------
-// CThumbAGProcessor::HandleQueryNewResults()
-// -----------------------------------------------------------------------------
-//
-void CThumbAGProcessor::HandleQueryNewResults( CMdEQuery& aQuery,
- const TInt aFirstNewItemIndex,
- const TInt aNewItemCount )
- {
- // PH & AllItems query results are handled here
-
- if(iShutdown)
- {
- return;
- }
-
- if (aNewItemCount > 0)
- {
- if(&aQuery == iQueryPlaceholders)
- {
- TN_DEBUG2( "CThumbAGProcessor::HandleQueryNewResults - iQueryPlaceholders, %d new", aNewItemCount);
- OstTrace1( TRACE_NORMAL, CTHUMBAGPROCESSOR_HANDLEQUERYNEWRESULTS, "CThumbAGProcessor::HandleQueryNewResults - iQueryPlaceholders;aNewItemCount=%d", aNewItemCount );
-
- for(TInt i = aFirstNewItemIndex; i < iQueryPlaceholders->Count(); i++)
- {
- const CMdEObject* object = &iQueryPlaceholders->Result(i);
-
- if(!object)
- {
- continue;
- }
-
- if(!object->Placeholder())
- {
- TN_DEBUG2( "CThumbAGProcessor::HandleQueryNewResults %d not placeholder", object->Id());
- OstTrace1( TRACE_NORMAL, DUP1_CTHUMBAGPROCESSOR_HANDLEQUERYNEWRESULTS, "CThumbAGProcessor::HandleQueryNewResults - not placeholder;object->Id()=%u", object->Id() );
- continue;
- }
-
- // ignore if fails
- TThumbnailGenerationItem item;
- item.iItemId = object->Id();
- item.iPlaceholder = ETrue;
-
- SetGenerationItemType( item, object->Def().Id());
-
- AppendProcessingQueue( item );
- }
- }
- else if(&aQuery == iQueryAllItems)
- {
- TN_DEBUG2( "CThumbAGProcessor::HandleQueryNewResults - QueryAllItems, %d new", aNewItemCount);
- OstTrace1( TRACE_NORMAL, DUP2_CTHUMBAGPROCESSOR_HANDLEQUERYNEWRESULTS, "CThumbAGProcessor::HandleQueryNewResults - QueryAllItems;aNewItemCount=%d", aNewItemCount );
-
- for(TInt i = aFirstNewItemIndex; i < iQueryAllItems->Count(); i++)
- {
- const CMdEObject* object = &iQueryAllItems->Result(i);
-
- if(!object)
- {
- continue;
- }
-
- TThumbnailGenerationItem item;
- item.iItemId = object->Id();
-
- SetGenerationItemType(item, object->Def().Id());
-
- TInt itemIndex = iGenerationQueue.FindInOrder(item, Compare);
-
- item.iPlaceholder = object->Placeholder();
-
- AppendProcessingQueue( item );
- }
- }
- }
- else
- {
- TN_DEBUG1( "CThumbAGProcessor::HandleQueryNewResults - error, no new items");
- OstTrace0( TRACE_NORMAL, DUP3_CTHUMBAGPROCESSOR_HANDLEQUERYNEWRESULTS, "CThumbAGProcessor::HandleQueryNewResults - error, no new items" );
- }
- }
-
-// -----------------------------------------------------------------------------
-// CThumbAGProcessor::HandleQueryCompleted()
-// -----------------------------------------------------------------------------
-//
-void CThumbAGProcessor::HandleQueryCompleted( CMdEQuery& aQuery, const TInt aError )
- {
- TN_DEBUG3( "CThumbAGProcessor::HandleQueryCompleted, aError == %d Count== %d", aError, aQuery.Count());
- OstTraceExt2( TRACE_NORMAL, CTHUMBAGPROCESSOR_HANDLEQUERYCOMPLETED, "CThumbAGProcessor::HandleQueryCompleted;aError=%d;aQuery.Count()=%d", aError, aQuery.Count() );
-
- if(iShutdown)
- {
- return;
- }
-
- if(&aQuery == iQueryPlaceholders)
- {
- TN_DEBUG1( "CThumbAGProcessor::HandleQueryCompleted - iQueryPlaceholders completed");
- OstTrace0( TRACE_NORMAL, DUP1_CTHUMBAGPROCESSOR_HANDLEQUERYCOMPLETED, "CThumbAGProcessor::HandleQueryCompleted - iQueryPlaceholders completed" );
-
- //free query
- delete iQueryPlaceholders;
- iQueryPlaceholders = NULL;
-
- if(iDoQueryAllItems)
- {
- iDoQueryAllItems = EFalse;
- TRAP_IGNORE(QueryAllItemsL());
- }
- }
- else if(&aQuery == iQueryAllItems)
- {
- TN_DEBUG1( "CThumbAGProcessor::HandleQueryCompleted - QueryAllItems completed");
- OstTrace0( TRACE_NORMAL, DUP2_CTHUMBAGPROCESSOR_HANDLEQUERYCOMPLETED, "CThumbAGProcessor::HandleQueryCompleted - QueryAllItems completed" );
-
-#ifdef _DEBUG
-TN_DEBUG2( "CThumbAGProcessor::HandleQueryCompleted IN-COUNTERS---------- Amount: %d, Add",iQueryAllItems->Count());
-OstTrace1( TRACE_NORMAL, DUP3_CTHUMBAGPROCESSOR_HANDLEQUERYCOMPLETED, "CThumbAGProcessor::HandleQueryCompleted IN-COUNTERS---------- Amount;iQueryAllItems->Count()=%d", iQueryAllItems->Count() );
-#endif
-
- //free query
- delete iQueryAllItems;
- iQueryAllItems = NULL;
- }
- else if(&aQuery == iQuery )
- {
- TN_DEBUG1( "CThumbAGProcessor::HandleQueryCompleted - Query completed");
- OstTrace0( TRACE_NORMAL, DUP4_CTHUMBAGPROCESSOR_HANDLEQUERYCOMPLETED, "CThumbAGProcessor::HandleQueryCompleted - Query completed" );
-
- if(iQueryActive)
- {
- iQueryReady = ETrue;
- iQueryActive = EFalse;
- }
-
- // if no errors in query
- if (aError == KErrNone && iQuery)
- {
- iProcessingCount = iQuery->Count();
-
- if(iProcessingCount != iQueryQueue.Count() )
- {
- TN_DEBUG1( "CThumbAGProcessor::HandleQueryCompleted() some result items missing");
- OstTrace0( TRACE_NORMAL, DUP5_CTHUMBAGPROCESSOR_HANDLEQUERYCOMPLETED, "CThumbAGProcessor::HandleQueryCompleted - some result items missing" );
-
- RArray<TItemId> queryQueueDelta;
-
- //search delta items which were queried, but not found
- for(TInt queryItem =0; queryItem < iQueryQueue.Count();queryItem++)
- {
- TBool found(EFalse);
- for(TInt queryResult = 0; queryResult < iQuery->Count(); queryResult++)
- {
- const CMdEObject* object = &iQuery->Result(queryResult);
-
- if( iQueryQueue[queryItem] == object->Id())
- {
- found = ETrue;
- break;
- }
- }
-
- if(!found)
- {
- TN_DEBUG2( "CThumbAGProcessor::HandleQueryCompleted() %d missing from query results", iQueryQueue[queryItem] );
- OstTrace1( TRACE_NORMAL, DUP6_CTHUMBAGPROCESSOR_HANDLEQUERYCOMPLETED, "CThumbAGProcessor::HandleQueryCompleted;iQueryQueue[queryItem]=%d", iQueryQueue[queryItem] );
-
- // ignore if fails
- queryQueueDelta.InsertInOrder(iQueryQueue[queryItem], CompareId);
- }
- }
-
- TN_DEBUG2( "CThumbAGProcessor::HandleQueryCompleted() missing items found %d", queryQueueDelta.Count());
- OstTrace1( TRACE_NORMAL, DUP7_CTHUMBAGPROCESSOR_HANDLEQUERYCOMPLETED, "CThumbAGProcessor::HandleQueryCompleted - missing items found;queryQueueDelta.Count()=%d", queryQueueDelta.Count() );
- //cleanup from previous queue it item is not found from MDS
- while(queryQueueDelta.Count())
- {
- TThumbnailGenerationItem item;
- item.iItemId = queryQueueDelta[0];
- TInt itemIndex = iQueryQueue.FindInOrder(item.iItemId, CompareId);
-
- if(itemIndex >= 0)
- {
- TN_DEBUG2( "CThumbAGProcessor::HandleQueryCompleted() remove %d from iQueryQueue", queryQueueDelta[0]);
- OstTrace1( TRACE_NORMAL, DUP8_CTHUMBAGPROCESSOR_HANDLEQUERYCOMPLETED, "CThumbAGProcessor::HandleQueryCompleted - remove from iQueryQueue;queryQueueDelta[0]=%d", queryQueueDelta[0] );
- iQueryQueue.Remove( itemIndex );
-
- //remove from procesing queue
- itemIndex = iGenerationQueue.FindInOrder(item, Compare);
-
- if(itemIndex >= 0)
- {
-
- if( iUnknown )
- {
- TN_DEBUG2( "CThumbAGProcessor::HandleQueryCompleted() mark %d as EGenerationItemTypeNotFound in iGenerationQueue", queryQueueDelta[0]);
- OstTrace1( TRACE_NORMAL, DUP9_CTHUMBAGPROCESSOR_HANDLEQUERYCOMPLETED, "CThumbAGProcessor::HandleQueryCompleted - mark as EGenerationItemTypeNotFound in iGenerationQueue;queryQueueDelta[0]=%d", queryQueueDelta[0] );
- //mark to be removed, cleanup is done below
- iGenerationQueue[itemIndex].iItemType = EGenerationItemTypeNotFound;
- }
- else
- {
- TN_DEBUG2( "CThumbAGProcessor::HandleQueryCompleted() remove %d from iGenerationQueue", queryQueueDelta[0]);
- OstTrace1( TRACE_NORMAL, DUP10_CTHUMBAGPROCESSOR_HANDLEQUERYCOMPLETED, "CThumbAGProcessor::HandleQueryCompleted - remove from iGenerationQueue;queryQueueDelta[0]=%d", queryQueueDelta[0] );
- iGenerationQueue.Remove( itemIndex );
- }
- }
- }
- queryQueueDelta.Remove(0);
- }
- queryQueueDelta.Close();
- }
-
- if(iUnknown)
- {
- for(TInt i = 0; i < iQuery->Count(); i++)
- {
- const CMdEObject* object = &iQuery->Result(i);
-
- if(!object)
- {
- continue;
- }
-
- TThumbnailGenerationItem tempItem;
- tempItem.iItemId = object->Id();
- TInt itemIndex = iGenerationQueue.FindInOrder(tempItem, Compare);
-
- if(itemIndex >= 0)
- {
- TThumbnailGenerationItem& item = iGenerationQueue[itemIndex];
-
- if(iGenerationQueue[itemIndex].iItemType == EGenerationItemTypeNotFound)
- {
- TN_DEBUG2( "CThumbAGProcessor::HandleQueryCompleted() remove EGenerationItemTypeNotFound %d item from iGenerationQueue", item.iItemId);
- OstTrace1( TRACE_NORMAL, DUP11_CTHUMBAGPROCESSOR_HANDLEQUERYCOMPLETED, "CThumbAGProcessor::HandleQueryCompleted - remove EGenerationItemTypeNotFound item from iGenerationQueue;item.iItemId=%u", item.iItemId );
- iGenerationQueue.Remove(itemIndex);
- continue;
- }
-
- SetGenerationItemType(item, object->Def().Id());
-
- if(item.iItemType == EGenerationItemTypeUnknown )
- {
- TN_DEBUG2( "CThumbAGProcessor::HandleQueryCompleted() remove unknown item %d", item.iItemId);
- OstTrace1( TRACE_NORMAL, DUP12_CTHUMBAGPROCESSOR_HANDLEQUERYCOMPLETED, "CThumbAGProcessor::HandleQueryCompleted - remove unknown item;item.iItemId=%u", item.iItemId );
- iGenerationQueue.Remove(itemIndex);
- continue;
- }
-
- item.iPlaceholder = object->Placeholder();
-
- }
- }
-
- iQueryQueue.Reset();
- iProcessingCount = 0;
- iUnknown = EFalse;
- }
-
- // no results, reset query
- if( !iProcessingCount )
- {
- delete iQuery;
- iQuery = NULL;
- iModify = EFalse;
- }
- }
- else
- {
- //Delete and cancel query, do not return items back to original queue
- DeleteAndCancelQuery( EFalse );
- TN_DEBUG1( "CThumbAGProcessor::HandleQueryCompleted() Query FAILED!");
- OstTrace0( TRACE_NORMAL, DUP13_CTHUMBAGPROCESSOR_HANDLEQUERYCOMPLETED, "CThumbAGProcessor::HandleQueryCompleted - Query FAILED!" );
- }
- }
- else
- {
- TN_DEBUG1( "CThumbAGProcessor::HandleQueryCompleted() - NO QUERY ACTIVE");
- OstTrace0( TRACE_NORMAL, DUP14_CTHUMBAGPROCESSOR_HANDLEQUERYCOMPLETED, "CThumbAGProcessor::HandleQueryCompleted - NO QUERY ACTIVE" );
- __ASSERT_DEBUG((EFalse), User::Panic(_L("CThumbAGProcessor::HandleQueryCompleted()"), -1));
- }
-
- ActivateAO();
- }
-
-// -----------------------------------------------------------------------------
-// CThumbAGProcessor::ThumbnailPreviewReady()
-// -----------------------------------------------------------------------------
-//
-void CThumbAGProcessor::ThumbnailPreviewReady( MThumbnailData& /*aThumbnail*/,
- TThumbnailRequestId /*aId*/)
- {
- TN_DEBUG1( "CThumbAGProcessor::ThumbnailPreviewReady()");
- OstTrace0( TRACE_NORMAL, CTHUMBAGPROCESSOR_THUMBNAILPREVIEWREADY, "CThumbAGProcessor::ThumbnailPreviewReady" );
- // No implementation required
- }
-
-// -----------------------------------------------------------------------------
-// CThumbAGProcessor::ThumbnailReady()d
-// -----------------------------------------------------------------------------
-//
-void CThumbAGProcessor::ThumbnailReady( TInt aError, MThumbnailData& /*aThumbnail*/,
- TThumbnailRequestId /*aId*/ )
- {
- TN_DEBUG2( "CThumbAGProcessor::ThumbnailReady() aError == %d", aError );
- OstTrace1( TRACE_NORMAL, CTHUMBAGPROCESSOR_THUMBNAILREADY, "CThumbAGProcessor::ThumbnailReady;aError=%d", aError );
-
- iActiveCount--;
-
- // TNM server died, delete session
- if( aError == KErrServerTerminated )
- {
- TN_DEBUG1( "CThumbAGProcessor::ThumbnailReady() - **** THUMBNAIL SERVER DIED ****" );
- OstTrace0( TRACE_NORMAL, DUP1_CTHUMBAGPROCESSOR_THUMBNAILREADY, "CThumbAGProcessor::ThumbnailReady - **** THUMBNAIL SERVER DIED ****" );
-
- iSessionDied = ETrue;
-
- if( !iPeriodicTimer->IsActive())
- {
- StartTimeout();
- }
-
- //reset PS idle so that RunL() can startup reopen TNM session and proceed
- TInt ret = RProperty::Set(KServerIdle, KIdle, ETrue);
- TN_DEBUG2( "CThumbAGProcessor::ThumbnailReady() set Idle ret = %d", ret );
- OstTrace1( TRACE_NORMAL, DUP2_CTHUMBAGPROCESSOR_THUMBNAILREADY, "CThumbAGProcessor::ThumbnailReady - set Idle ret;ret=%d", ret );
- return;
- }
-
- ActivateAO();
-
- TN_DEBUG1( "CThumbAGProcessor::ThumbnailReady() - end" );
- OstTrace0( TRACE_NORMAL, DUP3_CTHUMBAGPROCESSOR_THUMBNAILREADY, "CThumbAGProcessor::ThumbnailReady - end" );
- }
-
-// -----------------------------------------------------------------------------
-// CThumbAGProcessor::ThumbnailRequestReady()
-// -----------------------------------------------------------------------------
-//
-void CThumbAGProcessor::ThumbnailRequestReady( TInt /*aError*/, TThumbnailRequestType aRequestType,
- TThumbnailRequestId /*aId*/ )
- {
- if (aRequestType == ERequestDeleteThumbnails)
- {
- TN_DEBUG1( "CThumbAGProcessor::ThumbnailRequestReady() - delete" );
- OstTrace0( TRACE_NORMAL, CTHUMBAGPROCESSOR_THUMBNAILREQUESTREADY, "CThumbAGProcessor::ThumbnailRequestReady - delete" );
-
- iActiveCount--;
-
- ActivateAO();
- }
- }
-
-// ---------------------------------------------------------------------------
-// CThumbAGProcessor::SetMdESession()
-// ---------------------------------------------------------------------------
-//
-void CThumbAGProcessor::SetMdESessionL( CMdESession* aMdESession )
- {
- TN_DEBUG1( "CThumbAGProcessor::SetMdESession() - begin" );
- OstTrace0( TRACE_NORMAL, CTHUMBAGPROCESSOR_SETMDESESSIONL, "CThumbAGProcessor::SetMdESessionL - begin" );
-
- iMdESession = aMdESession;
-
- __ASSERT_DEBUG((iMdESession), User::Panic(_L("CThumbAGProcessor::SetMdESession() !iMdESession "), KErrBadHandle));
-
- TRAPD( err, iDefNamespace = &iMdESession->GetDefaultNamespaceDefL() );
- if (err != KErrNone)
- {
- TN_DEBUG2( "CThumbAGProcessor::SetMdESession() GetDefaultNamespaceDefL() err = %d", err );
- OstTrace1( TRACE_NORMAL, DUP1_CTHUMBAGPROCESSOR_SETMDESESSIONL, "CThumbAGProcessor::SetMdESessionL;err=%d", err );
- __ASSERT_DEBUG((iDefNamespace), User::Panic(_L("CThumbAGProcessor::SetMdESession() !iDefNamespace "), KErrBadHandle));
- }
- else
- {
- iImageObjectDef = &iDefNamespace->GetObjectDefL( MdeConstants::Image::KImageObject );
- __ASSERT_DEBUG((iImageObjectDef), User::Panic(_L("CThumbAGProcessor::SetMdESession() !iDefNamespace "), KErrBadHandle));
- iVideoObjectDef = &iDefNamespace->GetObjectDefL( MdeConstants::Video::KVideoObject );
- __ASSERT_DEBUG((iVideoObjectDef), User::Panic(_L("CThumbAGProcessor::SetMdESession() !iVideoObjectDef "), KErrBadHandle));
- iAudioObjectDef = &iDefNamespace->GetObjectDefL( MdeConstants::Audio::KAudioObject );
- __ASSERT_DEBUG((iAudioObjectDef), User::Panic(_L("CThumbAGProcessor::SetMdESession() !iAudioObjectDef "), KErrBadHandle));
-
- //do async init
- iInit = ETrue;
-
- ActivateAO();
- }
- }
-
-// ---------------------------------------------------------------------------
-// CThumbAGProcessor::AddToQueue()
-// ---------------------------------------------------------------------------
-//
-void CThumbAGProcessor::AddToQueueL( TObserverNotificationType aType,
- TThumbnailGenerationItemType aItemType,
- const RArray<TItemId>& aIDArray,
- const RPointerArray<HBufC>& aObjectUriArray,
- TBool /*aPresent*/ )
- {
- TN_DEBUG1( "CThumbAGProcessor::AddToQueueL() - begin" );
- OstTrace0( TRACE_NORMAL, CTHUMBAGPROCESSOR_ADDTOQUEUEL, "CThumbAGProcessor::AddToQueueL - begin" );
-
- // update queues
- if (aType == ENotifyAdd)
- {
- TN_DEBUG1( "CThumbAGProcessor::AddToQueueL() - ENotifyAdd" );
-
- for (int i=0; i<aIDArray.Count(); i++)
- {
- TThumbnailGenerationItem item;
- item.iItemId = aIDArray[i];
- item.iItemType = aItemType;
-
- SetGenerationItemAction(item, aItemType);
-
- if(iPHHarvesting)
- {
- item.iPlaceholder = ETrue;
- }
-
- AppendProcessingQueue( item );
- }
- }
- else if (aType == ENotifyModify)
- {
- TN_DEBUG1( "CThumbAGProcessor::AddToQueueL() - ENotifyModify" );
- OstTrace0( TRACE_NORMAL, DUP1_CTHUMBAGPROCESSOR_ADDTOQUEUEL, "CThumbAGProcessor::AddToQueueL - ENotifyModify" );
-
- if(iPHHarvesting)
- {
- TN_DEBUG1( "CThumbAGProcessor::AddToQueueL() - PH harvesting active, treat like add" );
- OstTrace0( TRACE_NORMAL, DUP2_CTHUMBAGPROCESSOR_ADDTOQUEUEL, "CThumbAGProcessor::AddToQueueL - PH harvesting active, treat like add" );
- for (int i=0; i<aIDArray.Count(); i++)
- {
- TThumbnailGenerationItem item;
- item.iItemId = aIDArray[i];
- item.iItemType = aItemType;
-
- TInt itemIndex = iGenerationQueue.FindInOrder(item, Compare);
-
- if (itemIndex >= 0)
- {
- TN_DEBUG1( "CThumbAGProcessor::AddToQueueL() - set as non-placeholder");
- OstTrace0( TRACE_NORMAL, DUP3_CTHUMBAGPROCESSOR_ADDTOQUEUEL, "CThumbAGProcessor::AddToQueueL - set as non-placeholder" );
- iGenerationQueue[itemIndex].iPlaceholder = EFalse;
- }
- else
- {
- TN_DEBUG1( "CThumbAGProcessor::AddToQueueL() - append");
- OstTrace0( TRACE_NORMAL, DUP4_CTHUMBAGPROCESSOR_ADDTOQUEUEL, "CThumbAGProcessor::AddToQueueL - append" );
- item.iPlaceholder = EFalse;
- SetGenerationItemAction( item, aItemType );
- AppendProcessingQueue( item );
- }
- }
- }
- else
- {
- TN_DEBUG1( "CThumbAGProcessor::AddToQueueL() - PH harvesting finished, check is real modify!" );
- OstTrace0( TRACE_NORMAL, DUP5_CTHUMBAGPROCESSOR_ADDTOQUEUEL, "CThumbAGProcessor::AddToQueueL - PH harvesting finished, check is real modify!" );
-
- TInt itemIndex(KErrNotFound);
-
- for (int i=0; i<aIDArray.Count(); i++)
- {
- TThumbnailGenerationItem item;
- item.iItemId = aIDArray[i];
- item.iItemType = aItemType;
-
- itemIndex = iGenerationQueue.FindInOrder(item, Compare);
-
- if (itemIndex >= 0)
- {
- if( iGenerationQueue[itemIndex].iPlaceholder )
- {
- TN_DEBUG1( "CThumbAGProcessor::AddToQueueL() - placeholder modify");
- OstTrace0( TRACE_NORMAL, DUP6_CTHUMBAGPROCESSOR_ADDTOQUEUEL, "CThumbAGProcessor::AddToQueueL - placeholder modify" );
- iGenerationQueue[itemIndex].iPlaceholder = EFalse;
- }
- else
- {
- TN_DEBUG1( "CThumbAGProcessor::AddToQueueL() - real modify");
- OstTrace0( TRACE_NORMAL, DUP7_CTHUMBAGPROCESSOR_ADDTOQUEUEL, "CThumbAGProcessor::AddToQueueL - real modify" );
- iGenerationQueue[itemIndex].iItemAction = EGenerationItemActionModify;
- SetForceRun( ETrue );
- }
- }
- else
- {
- TN_DEBUG1( "CThumbAGProcessor::AddToQueueL() - append");
- OstTrace0( TRACE_NORMAL, DUP8_CTHUMBAGPROCESSOR_ADDTOQUEUEL, "CThumbAGProcessor::AddToQueueL - append" );
- SetGenerationItemAction( item, aItemType);
- item.iPlaceholder = EFalse;
- AppendProcessingQueue( item );
- }
- }
- }
- }
- else if (aType == ENotifyRemove && aItemType == EGenerationItemTypeAny)
- {
- TN_DEBUG1( "CThumbAGProcessor::AddToQueueL() - ENotifyRemove, remove IDs from all queues");
- OstTrace0( TRACE_NORMAL, DUP9_CTHUMBAGPROCESSOR_ADDTOQUEUEL, "CThumbAGProcessor::AddToQueueL - ENotifyRemove, remove IDs from all queues" );
-
- for (int i=0; i<aIDArray.Count(); i++)
- {
- TThumbnailGenerationItem item;
- item.iItemId = aIDArray[i];
- item.iItemType = aItemType;
-
- TInt itemIndex = iGenerationQueue.FindInOrder(item, Compare);
-
- if(itemIndex >= 0)
- {
- iGenerationQueue[itemIndex].iItemAction = EGenerationItemActionDelete;
- delete iGenerationQueue[itemIndex].iUri;
- iGenerationQueue[itemIndex].iUri = NULL;
-
- if( aObjectUriArray[i])
- {
- iGenerationQueue[itemIndex].iUri = aObjectUriArray[i]->AllocL();
- }
- else
- {
- //invalid URI remove from processing queue
- iGenerationQueue.Remove(itemIndex);
- }
- }
- else
- {
- TN_DEBUG1( "CThumbAGProcessor::AddToQueueL() - append");
- OstTrace0( TRACE_NORMAL, DUP10_CTHUMBAGPROCESSOR_ADDTOQUEUEL, "CThumbAGProcessor::AddToQueueL - append" );
- item.iItemAction = EGenerationItemActionDelete;
- delete item.iUri;
- item.iUri = NULL;
-
- if( aObjectUriArray[i])
- {
- item.iUri = aObjectUriArray[i]->AllocL();
- CleanupStack::PushL( item.iUri );
- User::LeaveIfError( iGenerationQueue.InsertInOrder(item, Compare) );
- CleanupStack::Pop();
- }
-
- //owned by item
- item.iUri = NULL;
- }
-
- TN_DEBUG2( "CThumbAGProcessor::AddToQueueL() - %S", aObjectUriArray[i]);
- OstTraceExt1( TRACE_NORMAL, DUP11_CTHUMBAGPROCESSOR_ADDTOQUEUEL, "CThumbAGProcessor::AddToQueueL;aObjectUriArray[i]=%S", *aObjectUriArray[i] );
- }
- }
-#ifdef _DEBUG
- else
- {
- TN_DEBUG1( "CThumbAGProcessor::AddToQueueL() - should not come here" );
- OstTrace0( TRACE_NORMAL, DUP12_CTHUMBAGPROCESSOR_ADDTOQUEUEL, "CThumbAGProcessor::AddToQueueL - should not come here" );
- __ASSERT_DEBUG((EFalse), User::Panic(_L("CThumbAGProcessor::AddToQueueL()"), KErrArgument));
- User::Leave( KErrArgument );
- }
-#endif
-
- ActivateAO();
-
- TN_DEBUG1( "CThumbAGProcessor::AddToQueueL() - end" );
- OstTrace0( TRACE_NORMAL, DUP13_CTHUMBAGPROCESSOR_ADDTOQUEUEL, "CThumbAGProcessor::AddToQueueL - end" );
- }
-
-// ---------------------------------------------------------------------------
-// CThumbAGProcessor::CreateThumbnailsL()
-// ---------------------------------------------------------------------------
-//
-void CThumbAGProcessor::CreateThumbnailsL( const CMdEObject* aObject )
- {
- TN_DEBUG1( "CThumbAGProcessor::CreateThumbnailsL() - begin" );
- OstTrace0( TRACE_NORMAL, CTHUMBAGPROCESSOR_CREATETHUMBNAILSL, "CThumbAGProcessor::CreateThumbnailsL - begin" );
-
- __ASSERT_DEBUG((iTMSession), User::Panic(_L("CThumbAGProcessor::CreateThumbnailsL() !iTMSession "), KErrBadHandle));
- __ASSERT_DEBUG((iDefNamespace), User::Panic(_L("CThumbAGProcessor::CreateThumbnailsL() !iDefNamespace "), KErrBadHandle));
-
- if(!iTMSession || !iDefNamespace)
- {
- return;
- }
-
- TInt orientationVal = 0;
- TInt64 modifiedVal = 0;
-
- CMdEProperty* orientation = NULL;
-
- TInt orientErr = aObject->Property( iImageObjectDef->GetPropertyDefL( MdeConstants::Image::KOrientationProperty ), orientation, 0 );
-
- if (orientErr == KErrNone)
- {
- orientationVal = orientation->Uint16ValueL();
- }
-
- CMdEProperty* modified = NULL;
- CMdEObjectDef& baseObjDef = iDefNamespace->GetObjectDefL( MdeConstants::Object::KBaseObject );
- TInt modifyErr = aObject->Property( baseObjDef.GetPropertyDefL( MdeConstants::Object::KLastModifiedDateProperty ), modified, 0 );
-
- if (modifyErr >= 0)
- {
- modifiedVal = modified->TimeValueL().Int64();
- }
-
- // update thumbs
- if (iTMSession)
- {
- // 2nd round and modify updates both sizes if needed
- if( i2ndRound )
- {
- //generate both if needed
- TN_DEBUG1( "CThumbAGProcessor::CreateThumbnailsL() EOptimizeForQuality ");
- OstTrace0( TRACE_NORMAL, DUP1_CTHUMBAGPROCESSOR_CREATETHUMBNAILSL, "CThumbAGProcessor::CreateThumbnailsL - EOptimizeForQuality" );
- iTMSession->SetQualityPreferenceL( CThumbnailManager::EOptimizeForQuality );
-
- TN_DEBUG2( "CThumbAGProcessor::CreateThumbnailsL() - 2nd round add remove from queue", aObject->Id() );
- OstTrace1( TRACE_NORMAL, DUP2_CTHUMBAGPROCESSOR_CREATETHUMBNAILSL, "CThumbAGProcessor::CreateThumbnailsL - 2nd round add remove from queue;aObject->Id()=%u", aObject->Id() );
-
- TThumbnailGenerationItem item;
- item.iItemId = aObject->Id();
- TInt itemIndex = iGenerationQueue.FindInOrder(item, Compare);
-
- if(itemIndex >=0 )
- {
- if(iGenerationQueue[itemIndex].iItemAction == EGenerationItemAction2ndAdd)
- {
- iGenerationQueue.Remove(itemIndex);
- }
- }
- }
- // 1st roung generation
- else
- {
- //1st round
- TN_DEBUG1( "CThumbAGProcessor::CreateThumbnailsL() EOptimizeForQualityWithPreview");
- OstTrace0( TRACE_NORMAL, DUP3_CTHUMBAGPROCESSOR_CREATETHUMBNAILSL, "CThumbAGProcessor::CreateThumbnailsL - EOptimizeForQualityWithPreview" );
- iTMSession->SetQualityPreferenceL( CThumbnailManager::EOptimizeForQualityWithPreview );
-
- // add item to 2nd round queue
- TN_DEBUG2( "CThumbAGProcessor::CreateThumbnailsL() - 1st round add/modify, append to 2nd round queue", aObject->Id() );
- OstTrace1( TRACE_NORMAL, DUP4_CTHUMBAGPROCESSOR_CREATETHUMBNAILSL, "CThumbAGProcessor::CreateThumbnailsL - 1st round add/modify, append to 2nd round queue;aObject->Id()=%u", aObject->Id() );
-
- TThumbnailGenerationItem item;
- item.iItemId = aObject->Id();
- TInt itemIndex = iGenerationQueue.FindInOrder(item, Compare);
-
- if(itemIndex >=0 )
- {
- if(iGenerationQueue[itemIndex].iItemAction == EGenerationItemActionModify)
- {
- iGenerationQueue.Remove(itemIndex);
- }
- //change 1st round item for 2nd round processing
- //2nd round item can be deleted
- else if(iGenerationQueue[itemIndex].iItemAction == EGenerationItemActionAdd)
- {
- iGenerationQueue[itemIndex].iItemAction = EGenerationItemAction2ndAdd;
- }
- else
- {
- iGenerationQueue.Remove(itemIndex);
- }
- }
- }
-
- // run as lower priority than getting but higher that creating thumbnails
- TRAPD(err, iTMSession->UpdateThumbnailsL(KNoId, aObject->Uri(), orientationVal, modifiedVal, CActive::EPriorityIdle ));
-
- if ( err != KErrNone )
- {
- TN_DEBUG2( "CThumbAGProcessor::CreateThumbnailsL, iTMSession error == %d", err );
- OstTrace0( TRACE_NORMAL, DUP5_CTHUMBAGPROCESSOR_CREATETHUMBNAILSL, "CThumbAGProcessor::CreateThumbnailsL" );
-
- iSessionDied = ETrue;
- ActivateAO();
- }
- else
- {
- iActiveCount++;
- }
- }
- else
- {
- ActivateAO();
- }
-
- TN_DEBUG1( "CThumbAGProcessor::CreateThumbnailsL() - end" );
- OstTrace0( TRACE_NORMAL, DUP6_CTHUMBAGPROCESSOR_CREATETHUMBNAILSL, "CThumbAGProcessor::CreateThumbnailsL - end" );
- }
-
-// ---------------------------------------------------------------------------
-// CThumbAGProcessor::QueryL()
-// ---------------------------------------------------------------------------
-//
-void CThumbAGProcessor::QueryL(/*RArray<TItemId>& aIDArray*/TThumbnailGenerationItemAction aAction )
- {
- TN_DEBUG1( "CThumbAGProcessor::QueryL() - begin" );
- OstTrace0( TRACE_NORMAL, CTHUMBAGPROCESSOR_QUERYL, "CThumbAGProcessor::QueryL - begin" );
-
- __ASSERT_DEBUG((iMdESession), User::Panic(_L("CThumbAGProcessor::QueryL() !iMdeSession "), KErrBadHandle));
- __ASSERT_DEBUG((iDefNamespace), User::Panic(_L("CThumbAGProcessor::QueryL() !iDefNamespace "), KErrBadHandle));
-
- if(!iMdESession || !iDefNamespace || iShutdown)
- {
- return;
- }
-
- //reset query queue
- iQueryQueue.Reset();
- //set reference to current pprocessing queue
-
- iQueryReady = EFalse;
-
- // delete old query
- if (iQuery)
- {
- delete iQuery;
- iQuery = NULL;
- }
-
- //move ID from source queue to Query queue
- TInt maxCount = iGenerationQueue.Count();
-
- TN_DEBUG3( "CThumbAGProcessor::QueryL() - fill begin iGenerationQueue == %d, iQueryQueue == %d", iGenerationQueue.Count(), iQueryQueue.Count() );
- OstTraceExt2( TRACE_NORMAL, DUP1_CTHUMBAGPROCESSOR_QUERYL, "CThumbAGProcessor::QueryL - - fill begin iGenerationQueue, iQueryQueue;iGenerationQueue.Count()=%d;iQueryQueue.Count()=%d", iGenerationQueue.Count(), iQueryQueue.Count() );
-
- TInt itemCount(0);
- for(TInt i=0; itemCount < KMaxQueryItems && i < maxCount; i++)
- {
- TInt itemIndex(KErrNotFound);
- switch(aAction)
- {
- //1st round items
- case EGenerationItemActionAdd:
- if(iGenerationQueue[i].iItemAction == aAction )
- {
- itemIndex = i;
- }
- break;
- case EGenerationItemActionModify:
- if( iGenerationQueue[i].iItemAction == aAction )
- {
- itemIndex = i;
- }
- break;
- case EGenerationItemAction2ndAdd:
- if( iGenerationQueue[i].iItemAction == aAction )
- {
- itemIndex = i;
- }
- break;
- //unknown stuff
- case EGenerationItemActionResolveType:
- if( iGenerationQueue[i].iItemType == EGenerationItemTypeUnknown )
- {
- itemIndex = i;
- }
- break;
- default:
- break;
- };
-
- if( itemIndex >= 0 )
- {
- TN_DEBUG2( "CThumbAGProcessor::QueryL() - fill %d", iGenerationQueue[itemIndex].iItemId );
- OstTrace1( TRACE_NORMAL, DUP2_CTHUMBAGPROCESSOR_QUERYL, "CThumbAGProcessor::QueryL - fill;iGenerationQueue[itemIndex].iItemId=%u", iGenerationQueue[itemIndex].iItemId );
- iQueryQueue.InsertInOrder(iGenerationQueue[itemIndex].iItemId, CompareId);
- itemCount++;
- }
- }
-
- if(!itemCount)
- {
- TN_DEBUG1( "CThumbAGProcessor::QueryL() - empty query, cancel?!");
- OstTrace0( TRACE_NORMAL, DUP3_CTHUMBAGPROCESSOR_QUERYL, "CThumbAGProcessor::QueryL - empty query, cancel?!" );
- iQueryActive = EFalse;
- __ASSERT_DEBUG((iMdESession), User::Panic(_L("CThumbAGProcessor::QueryL() empty! "), KErrNotFound));
- return;
- }
-
- TN_DEBUG3( "CThumbAGProcessor::QueryL() - fill end iGenerationQueue == %d, iQueryQueue == %d", iGenerationQueue.Count(), iQueryQueue.Count() );
- OstTraceExt2( TRACE_NORMAL, DUP4_CTHUMBAGPROCESSOR_QUERYL, "CThumbAGProcessor::QueryL;iGenerationQueue.Count()=%d;iQueryQueue.Count()=%d", iGenerationQueue.Count(), iQueryQueue.Count() );
-
- CMdEObjectDef& objDef = iDefNamespace->GetObjectDefL( MdeConstants::Object::KBaseObject );
- iQuery = iMdESession->NewObjectQueryL( *iDefNamespace, objDef, this );
-
- if(iQuery)
- {
- iQuery->SetResultMode( EQueryResultModeItem );
-
- CMdELogicCondition& rootCondition = iQuery->Conditions();
- rootCondition.SetOperator( ELogicConditionOperatorAnd );
-
- // add IDs
- CleanupClosePushL( iQueryQueue );
- rootCondition.AddObjectConditionL( iQueryQueue );
- CleanupStack::Pop( &iQueryQueue );
-
- // add object type conditions
- if (!(iModify || iUnknown))
- {
- CMdELogicCondition& objDefCondition = rootCondition.AddLogicConditionL( ELogicConditionOperatorOr );
-
- if (iAutoImage)
- {
- CMdEObjectDef& imageDef = iDefNamespace->GetObjectDefL( MdeConstants::Image::KImageObject );
- objDefCondition.AddObjectConditionL( imageDef );
- }
- if (iAutoVideo)
- {
- CMdEObjectDef& videoDef = iDefNamespace->GetObjectDefL( MdeConstants::Video::KVideoObject );
- objDefCondition.AddObjectConditionL( videoDef );
- }
- if (iAutoAudio)
- {
- CMdEObjectDef& audioDef = iDefNamespace->GetObjectDefL( MdeConstants::Audio::KAudioObject );
- objDefCondition.AddObjectConditionL( audioDef );
- }
- }
-
- iQuery->FindL();
- }
- else
- {
- iQueryActive = EFalse;
- }
-
- TN_DEBUG1( "CThumbAGProcessor::QueryL() - end" );
- OstTrace0( TRACE_NORMAL, DUP5_CTHUMBAGPROCESSOR_QUERYL, "CThumbAGProcessor::QueryL - end" );
- }
-
-
-// ---------------------------------------------------------------------------
-// CThumbAGProcessor::QueryForPlaceholders()
-// ---------------------------------------------------------------------------
-//
-
-void CThumbAGProcessor::QueryPlaceholdersL(TBool aPresent)
- {
- TN_DEBUG1( "CThumbAGProcessor::QueryPlaceholdersL" );
- OstTrace0( TRACE_NORMAL, CTHUMBAGPROCESSOR_QUERYPLACEHOLDERSL, "CThumbAGProcessor::QueryPlaceholdersL" );
-
- __ASSERT_DEBUG((iMdESession), User::Panic(_L("CThumbAGProcessor::QueryPlaceholdersL() !iMdeSession "), KErrBadHandle));
- __ASSERT_DEBUG((iDefNamespace), User::Panic(_L("CThumbAGProcessor::QueryPlaceholdersL() !iDefNamespace "), KErrBadHandle));
-
- if(!iMdESession || !iDefNamespace || iShutdown)
- {
- return;
- }
-
- if( iQueryPlaceholders )
- {
- if( !iQueryPlaceholders->IsComplete() )
- {
- TN_DEBUG1( "CThumbAGProcessor::QueryPlaceholdersL active- skip" );
- OstTrace0( TRACE_NORMAL, DUP1_CTHUMBAGPROCESSOR_QUERYPLACEHOLDERSL, "CThumbAGProcessor::QueryPlaceholdersL - skip" );
- return;
- }
-
- // delete old query
- iQueryPlaceholders->Cancel();
- delete iQueryPlaceholders;
- iQueryPlaceholders = NULL;
- }
-
- TN_DEBUG1( "CThumbAGProcessor::QueryPlaceholdersL - start" );
- OstTrace0( TRACE_NORMAL, DUP2_CTHUMBAGPROCESSOR_QUERYPLACEHOLDERSL, "CThumbAGProcessor::QueryPlaceholdersL - start" );
-
- CMdEObjectDef& imageObjDef = iDefNamespace->GetObjectDefL( MdeConstants::Image::KImageObject );
- CMdEObjectDef& videoObjDef = iDefNamespace->GetObjectDefL( MdeConstants::Video::KVideoObject );
- CMdEObjectDef& audioObjDef = iDefNamespace->GetObjectDefL( MdeConstants::Audio::KAudioObject );
-
- CMdEObjectDef& objDef = iDefNamespace->GetObjectDefL( MdeConstants::Object::KBaseObject);
- iQueryPlaceholders = iMdESession->NewObjectQueryL( *iDefNamespace, objDef, this );
-
- if(iQueryPlaceholders)
- {
- iQueryPlaceholders->SetResultMode( EQueryResultModeItem );
-
- CMdELogicCondition& rootCondition = iQueryPlaceholders->Conditions();
- rootCondition.SetOperator( ELogicConditionOperatorOr );
-
- CMdEObjectCondition& imagePHObjectCondition = rootCondition.AddObjectConditionL(imageObjDef);
- CleanupStack::PushL( &imagePHObjectCondition );
- imagePHObjectCondition.SetPlaceholderOnly( ETrue );
- imagePHObjectCondition.SetNotPresent( aPresent );
-
- CMdEObjectCondition& videoPHObjectCondition = rootCondition.AddObjectConditionL(videoObjDef);
- CleanupStack::PushL( &videoPHObjectCondition );
- videoPHObjectCondition.SetPlaceholderOnly( ETrue );
- videoPHObjectCondition.SetNotPresent( aPresent );
-
- CMdEObjectCondition& audioPHObjectCondition = rootCondition.AddObjectConditionL(audioObjDef);
- CleanupStack::PushL( &audioPHObjectCondition );
- audioPHObjectCondition.SetPlaceholderOnly( ETrue );
- audioPHObjectCondition.SetNotPresent( aPresent );
-
- iQueryPlaceholders->FindL(KMdEQueryDefaultMaxCount, KMaxQueryBatchSize);
-
- CleanupStack::Pop(3, &imagePHObjectCondition );
- }
-
- TN_DEBUG1( "CThumbAGProcessor::QueryPlaceholdersL - end" );
- OstTrace0( TRACE_NORMAL, DUP3_CTHUMBAGPROCESSOR_QUERYPLACEHOLDERSL, "CThumbAGProcessor::QueryPlaceholdersL - end" );
- }
-
-
-// ---------------------------------------------------------------------------
-// CThumbAGProcessor::RunL()
-// ---------------------------------------------------------------------------
-//
-void CThumbAGProcessor::RunL()
- {
- TN_DEBUG1( "CThumbAGProcessor::RunL() - begin" );
- OstTrace0( TRACE_NORMAL, CTHUMBAGPROCESSOR_RUNL, "CThumbAGProcessor::RunL - begin" );
-
- if(iShutdown)
- {
- TN_DEBUG1( "CThumbAGProcessor::RunL() - shutdown" );
- OstTrace0( TRACE_NORMAL, DUP1_CTHUMBAGPROCESSOR_RUNL, "CThumbAGProcessor::RunL - shutdown" );
- return;
- }
-
- if (iSessionDied)
- {
- TN_DEBUG1( "CThumbAGProcessor::RunL() - iSessionDied" );
- OstTrace0( TRACE_NORMAL, DUP2_CTHUMBAGPROCESSOR_RUNL, "CThumbAGProcessor::RunL - iSessionDied" );
- delete iTMSession;
- iTMSession = NULL;
- }
-
- if (iInit)
- {
- TN_DEBUG1( "CThumbAGProcessor::RunL() - Do Initialisation 1" );
- OstTrace0( TRACE_NORMAL, DUP3_CTHUMBAGPROCESSOR_RUNL, "CThumbAGProcessor::RunL - Do Initialisation 1" );
-
- iInit = EFalse;
- iInit2 = ETrue;
-
- iGenerationQueue.Reset();
- iQueryQueue.Reset();
-
- //query all not present placeholders
- TRAP_IGNORE(QueryPlaceholdersL( ETrue ));
- //query all items after PH query
- iDoQueryAllItems = ETrue;
- TN_DEBUG1( "CThumbAGProcessor::RunL() - Initialisation 1 done" );
- OstTrace0( TRACE_NORMAL, DUP4_CTHUMBAGPROCESSOR_RUNL, "CThumbAGProcessor::RunL - Initialisation 1 done" );
- ActivateAO();
- return;
- }
-
- if(iInit2)
- {
- TN_DEBUG1( "CThumbAGProcessor::RunL() - Do Initialisation 2" );
- OstTrace0( TRACE_NORMAL, DUP5_CTHUMBAGPROCESSOR_RUNL, "CThumbAGProcessor::RunL - Do Initialisation 2" );
-
- iInit2 = EFalse;
- TInt err(KErrNone);
-
-#ifdef MDS_MODIFY_OBSERVER
- TN_DEBUG1( "CThumbAGProcessor::RunL() do iHarvesterClient connect");
- OstTrace0( TRACE_NORMAL, DUP6_CTHUMBAGPROCESSOR_RUNL, "CThumbAGProcessor::RunL - do iHarvesterClient connect" );
- err = iHarvesterClient.Connect();
- TN_DEBUG2( "CThumbAGProcessor::RunL() iHarvesterClient connect err = %d", err);
- OstTrace1( TRACE_NORMAL, DUP7_CTHUMBAGPROCESSOR_RUNL, "CThumbAGProcessor::RunL - iHarvesterClient connect;err=%d", err );
-
- __ASSERT_DEBUG((err == KErrNone), User::Panic(_L("CThumbAGProcessor::RunL(), !iHarvesterClient "), err));
-
- if( err == KErrNone )
- {
- TN_DEBUG1( "CThumbAGProcessor::RunL() add iHarvesterClient observer");
- OstTrace0( TRACE_NORMAL, DUP8_CTHUMBAGPROCESSOR_RUNL, "CThumbAGProcessor::RunL - add iHarvesterClient observer" );
- err = iHarvesterClient.AddHarvesterEventObserver( *this, EHEObserverTypeOverall | EHEObserverTypeMMC | EHEObserverTypePlaceholder, 20 );
- TN_DEBUG2( "CThumbAGProcessor::RunL() iHarvesterClient observer err = %d", err);
- OstTrace1( TRACE_NORMAL, DUP9_CTHUMBAGPROCESSOR_RUNL, "CThumbAGProcessor::RunL - iHarvesterClient observer;err=%d", err );
-
- if( err != KErrNone )
- {
- TN_DEBUG1( "CThumbAGProcessor::RunL() add iHarvesterClient observer failed");
- OstTrace0( TRACE_NORMAL, DUP10_CTHUMBAGPROCESSOR_RUNL, "CThumbAGProcessor::RunL - add iHarvesterClient observer failed" );
- // if we fail observer harvester, fake it
- iHarvesterActivated = ETrue;
- }
- __ASSERT_DEBUG((err==KErrNone), User::Panic(_L("CThumbAGProcessor::RunL(), !iHarvesterClient "), err));
- }
-#endif
-
- TN_DEBUG1( "CThumbAGProcessor::RunL() MMPXCollectionUtility");
- OstTrace0( TRACE_NORMAL, DUP11_CTHUMBAGPROCESSOR_RUNL, "CThumbAGProcessor::RunL - MMPXCollectionUtility");
- TRAP( err, iCollectionUtility = MMPXCollectionUtility::NewL( this, KMcModeIsolated ));
- TN_DEBUG2( "CThumbAGProcessor::RunL() create MMPXCollectionUtility err = %d", err);
- OstTrace1( TRACE_NORMAL, DUP12_CTHUMBAGPROCESSOR_RUNL, "CThumbAGProcessor::RunL - create MMPXCollectionUtility err;err=%d", err );
- __ASSERT_DEBUG((iCollectionUtility), User::Panic(_L("CThumbAGProcessor::RunL(), !iCollectionUtility "), err));
-
- __ASSERT_DEBUG((iActivityManager), User::Panic(_L("CThumbAGProcessor::RunL(), !iActivityManager "), KErrBadHandle));
- if(iActivityManager)
- {
- iActivityManager->Start();
- }
-
- TN_DEBUG1( "CThumbAGProcessor::RunL() - Initialisation 2 done" );
- OstTrace0( TRACE_NORMAL, DUP13_CTHUMBAGPROCESSOR_RUNL, "CThumbAGProcessor::RunL - Initialisation 2 done" );
- return;
- }
-
- // restart session if died
- if (!iTMSession)
- {
- TN_DEBUG1( "CThumbAGProcessor::RunL() - open TNM session");
- OstTrace0( TRACE_NORMAL, DUP14_CTHUMBAGPROCESSOR_RUNL, "CThumbAGProcessor::RunL" );
- TRAPD( err, iTMSession = CThumbnailManager::NewL( *this ) );
-
- if (err != KErrNone)
- {
- iTMSession = NULL;
- ActivateAO();
- TN_DEBUG2( "CThumbAGProcessor::RunL() - Session restart failed, error == %d", err );
- OstTrace1( TRACE_NORMAL, DUP15_CTHUMBAGPROCESSOR_RUNL, "CThumbAGProcessor::RunL - Session restart failed, error;err=%d", err );
- }
- else
- {
- iTMSession->SetRequestObserver(*this);
- iSessionDied = EFalse;
- }
- }
-
- // do not run if request is already issued to TNM server even if forced
- if(iActiveCount >= KMaxDaemonRequests)
- {
- TN_DEBUG1( "CThumbAGProcessor::RunL() - waiting for previous to complete, abort..." );
- OstTrace0( TRACE_NORMAL, DUP16_CTHUMBAGPROCESSOR_RUNL, "CThumbAGProcessor::RunL - waiting for previous to complete, abort..." );
- return;
- }
-
- //force run can proceed from this point
-#ifdef _DEBUG
- if( iForegroundRun )
- {
- TN_DEBUG1( "void CThumbAGProcessor::RunL() KForceBackgroundGeneration enabled");
- OstTrace0( TRACE_NORMAL, DUP17_CTHUMBAGPROCESSOR_RUNL, "CThumbAGProcessor::RunL - KForceBackgroundGeneration enabled" );
- }
-
- if( iForceRun )
- {
- TN_DEBUG1( "CThumbAGProcessor::RunL() - *** FORCED RUN ***");
- OstTrace0( TRACE_NORMAL, DUP18_CTHUMBAGPROCESSOR_RUNL, "CThumbAGProcessor::RunL - *** FORCED RUN ***" );
- }
-#endif
-
- if( (iForceRun || iForegroundRun ) && !iMountTimer->IsActive() )
- {
- TN_DEBUG1( "void CThumbAGProcessor::RunL() skip idle detection!");
- OstTrace0( TRACE_NORMAL, DUP19_CTHUMBAGPROCESSOR_RUNL, "CThumbAGProcessor::RunL - skip idle detection!" );
- CancelTimeout();
- }
- else
- {
- if( !iIdle || iHarvesting || iMPXHarvesting || iPeriodicTimer->IsActive() )
- {
- TN_DEBUG1( "void CThumbAGProcessor::RunL() device not idle");
- OstTrace0( TRACE_NORMAL, DUP20_CTHUMBAGPROCESSOR_RUNL, "CThumbAGProcessor::RunL - device not idle" );
- return;
- }
- else
- {
- //check is server idle
- TInt serveIdle(KErrNotFound);
- TInt ret = RProperty::Get(KServerIdle, KIdle, serveIdle);
-
- if(ret != KErrNone || !serveIdle )
- {
- //start inactivity timer and retry on after callback
- TN_DEBUG1( "void CThumbAGProcessor::RunL() server not idle");
- OstTrace0( TRACE_NORMAL, DUP21_CTHUMBAGPROCESSOR_RUNL, "CThumbAGProcessor::RunL - server not idle" );
- StartTimeout();
- return;
- }
- TN_DEBUG1( "void CThumbAGProcessor::RunL() device and server idle, process");
- OstTrace0( TRACE_NORMAL, DUP22_CTHUMBAGPROCESSOR_RUNL, "CThumbAGProcessor::RunL - device and server idle, process" );
- }
- }
-
- //Handle completed MDS Query
- if( iQueryReady && iProcessingCount)
- {
- TInt err(KErrNone);
- //if force or non forced
- //if unknown items or mount timer is active, abort processing
-
- if(((iForceRun && iModify ) || (!iForceRun && !iModify )) && !iUnknownItemCount && !iMountTimer->IsActive())
- {
- TN_DEBUG1( "CThumbAGProcessor::RunL() - iQueryReady START" );
- OstTrace0( TRACE_NORMAL, DUP23_CTHUMBAGPROCESSOR_RUNL, "CThumbAGProcessor::RunL - iQueryReady START" );
-
- const CMdEObject* object = &iQuery->Result( iProcessingCount-1 );
- iProcessingCount--;
-
- if ( object )
- {
- //process one item at once
- //remove item from queryQueue when request is issued
-
- TInt itemIndex = iQueryQueue.FindInOrder(object->Id(), CompareId);
- if(itemIndex >= 0)
- {
- iQueryQueue.Remove(itemIndex);
- }
-
- TRAP( err, CreateThumbnailsL( object ) );
- TN_DEBUG2( "CThumbAGProcessor::RunL(), CreateThumbnailsL error == %d", err );
- OstTrace1( TRACE_NORMAL, DUP24_CTHUMBAGPROCESSOR_RUNL, "CThumbAGProcessor::RunL - CreateThumbnailsL error;err=%d", err );
- __ASSERT_DEBUG((err==KErrNone), User::Panic(_L("CThumbAGProcessor::RunL(), CreateThumbnailsL() "), err));
- }
- }
- //force is coming, but executing non-forced query complete-> cancel old
- else
- {
- //cancel query
- TN_DEBUG1( "CThumbAGProcessor::RunL() - cancel processing query" );
- OstTrace0( TRACE_NORMAL, DUP25_CTHUMBAGPROCESSOR_RUNL, "CThumbAGProcessor::RunL - cancel processing query" );
- DeleteAndCancelQuery( ETrue );
- ActivateAO();
- return;
- }
-
- //is last query item
- if( iProcessingCount <= 0 )
- {
- TN_DEBUG1( "CThumbAGProcessor::RunL() - iQueryReady FINISH" );
- OstTrace0( TRACE_NORMAL, DUP26_CTHUMBAGPROCESSOR_RUNL, "CThumbAGProcessor::RunL - iQueryReady FINISH" );
- iQueryReady = EFalse;
- iQueryActive = EFalse;
- }
-
- ActivateAO();
- }
- //waiting for MDS query to complete
- else if( iQueryActive )
- {
- //state mismatch
- if(iForceRun && !(iModify || iUnknown))
- {
- //cancel query and move items back to original processing queue
- DeleteAndCancelQuery(ETrue);
- ActivateAO();
- }
- else
- {
- TN_DEBUG1( "CThumbAGProcessor::RunL() - waiting for query to complete, abort..." );
- OstTrace0( TRACE_NORMAL, DUP27_CTHUMBAGPROCESSOR_RUNL, "CThumbAGProcessor::RunL - waiting for query to complete, abort..." );
- }
- }
- else if ( iUnknownItemCount > 0 )
- {
- TN_DEBUG1( "void CThumbAGProcessor::RunL() unknown items in queue");
- OstTrace0( TRACE_NORMAL, DUP28_CTHUMBAGPROCESSOR_RUNL, "CThumbAGProcessor::RunL - unknown items in queue" );
-
- i2ndRound = EFalse;
- iModify = EFalse;
- iUnknown = ETrue;
- iQueryActive = ETrue;
-
- QueryL( EGenerationItemActionResolveType );
- }
- else if ( iDeleteItemCount > 0 )
- {
- TN_DEBUG1( "void CThumbAGProcessor::RunL() delete thumbnails");
- OstTrace0( TRACE_NORMAL, DUP29_CTHUMBAGPROCESSOR_RUNL, "CThumbAGProcessor::RunL - delete thumbnails" );
- // delete thumbs by URI
- __ASSERT_DEBUG((iTMSession), User::Panic(_L("CThumbAGProcessor::RunL() !iTMSession "), KErrBadHandle));
- if(iTMSession)
- {
- TInt itemIndex(KErrNotFound);
-
- for(TInt i=0;i<iGenerationQueue.Count() || itemIndex == KErrNotFound;i++)
- {
- if(iGenerationQueue[i].iItemAction == EGenerationItemActionDelete)
- {
- itemIndex = i;
- }
- }
-
- if(itemIndex >= 0)
- {
- if(!iGenerationQueue[itemIndex].iUri)
- {
- //URI is invalid
- TN_DEBUG1( "void CThumbAGProcessor::RunL() unable to delete URI inbalid");
- OstTrace0( TRACE_NORMAL, DUP30_CTHUMBAGPROCESSOR_RUNL, "CThumbAGProcessor::RunL - unable to delete URI inbalid" );
- iGenerationQueue.Remove( itemIndex );
- ActivateAO();
- return;
- }
-
- TN_DEBUG2( "void CThumbAGProcessor::RunL() delete %S", iGenerationQueue[itemIndex].iUri);
- OstTraceExt1( TRACE_NORMAL, DUP31_CTHUMBAGPROCESSOR_RUNL, "CThumbAGProcessor::RunL;iGenerationQueue[itemIndex].iUri=%S", *iGenerationQueue[itemIndex].iUri );
- CThumbnailObjectSource* source = NULL;
- TRAPD(err, source = CThumbnailObjectSource::NewL( *iGenerationQueue[itemIndex].iUri, KNullDesC));
-
- if(err == KErrNone)
- {
- iTMSession->DeleteThumbnails( *source );
- }
- delete source;
-
- delete iGenerationQueue[itemIndex].iUri;
- iGenerationQueue[itemIndex].iUri = NULL;
- iGenerationQueue.Remove( itemIndex );
-
- iActiveCount++;
- }
- }
- }
- // no items in query queue, start new
- // select queue to process, priority by type
- else if ( iModifyItemCount > 0 )
- {
- TN_DEBUG1( "void CThumbAGProcessor::RunL() update thumbnails");
- OstTrace0( TRACE_NORMAL, DUP32_CTHUMBAGPROCESSOR_RUNL, "CThumbAGProcessor::RunL - update thumbnails" );
-
- i2ndRound = EFalse;
-
- // query for object info
- iQueryActive = ETrue;
- iModify = ETrue;
- iUnknown = EFalse;
- QueryL( EGenerationItemActionModify );
- }
- else if ( iAddItemCount > 0 )
- {
- TN_DEBUG1( "void CThumbAGProcessor::RunL() update 1st round thumbnails");
- OstTrace0( TRACE_NORMAL, DUP33_CTHUMBAGPROCESSOR_RUNL, "CThumbAGProcessor::RunL - update 1st round thumbnails" );
-
- i2ndRound = EFalse;
- iUnknown = EFalse;
- // query for object info
- iQueryActive = ETrue;
-
- QueryL( EGenerationItemActionAdd );
- }
- else if( i2ndAddItemCount > 0)
- {
- TN_DEBUG1( "void CThumbAGProcessor::RunL() update 2nd round thumbnails");
- OstTrace0( TRACE_NORMAL, DUP34_CTHUMBAGPROCESSOR_RUNL, "CThumbAGProcessor::RunL - update 2nd round thumbnails" );
-
- // query for object info
- iQueryActive = ETrue;
- i2ndRound = ETrue;
- iUnknown = EFalse;
- QueryL( EGenerationItemAction2ndAdd );
- }
-
- TN_DEBUG1( "CThumbAGProcessor::RunL() - end" );
- OstTrace0( TRACE_NORMAL, DUP35_CTHUMBAGPROCESSOR_RUNL, "CThumbAGProcessor::RunL - end" );
- }
-
-// ---------------------------------------------------------------------------
-// CThumbAGProcessor::DeleteAndCancelQuery()
-// ---------------------------------------------------------------------------
-//
-void CThumbAGProcessor::DeleteAndCancelQuery(TBool aRestoreItems)
- {
- TN_DEBUG2( "CThumbAGProcessor::DeleteAndCancelQuery(aRestoreItems = %d) in", aRestoreItems );
- OstTrace1( TRACE_NORMAL, CTHUMBAGPROCESSOR_DELETEANDCANCELQUERY, "CThumbAGProcessor::DeleteAndCancelQuery;aRestoreItems=%d", aRestoreItems );
-
- if(iQuery)
- {
- TN_DEBUG1( "CThumbAGProcessor::DeleteAndCancelQuery() - deleting query" );
- OstTrace0( TRACE_NORMAL, DUP1_CTHUMBAGPROCESSOR_DELETEANDCANCELQUERY, "CThumbAGProcessor::DeleteAndCancelQuery - deleting query" );
- iQuery->Cancel();
- delete iQuery;
- iQuery = NULL;
- }
-
- iQueryReady = EFalse;
- iQueryActive = EFalse;
- iProcessingCount = 0;
-
- //move remainig IDs in query queue back to original queue
- while(iQueryQueue.Count())
- {
- if(!aRestoreItems )
- {
- TThumbnailGenerationItem item;
- item.iItemId = iQueryQueue[0];
- TInt itemIndex = iGenerationQueue.FindInOrder(item, Compare);
-
- if(itemIndex >= 0)
- {
- delete iGenerationQueue[itemIndex].iUri;
- iGenerationQueue[itemIndex].iUri = NULL;
- iGenerationQueue.Remove(itemIndex);
- }
- }
- iQueryQueue.Remove(0);
- }
-
- TN_DEBUG1( "CThumbAGProcessor::DeleteAndCancelQuery() out" );
- OstTrace0( TRACE_NORMAL, DUP2_CTHUMBAGPROCESSOR_DELETEANDCANCELQUERY, "CThumbAGProcessor::DeleteAndCancelQuery - out" );
- }
-
-// ---------------------------------------------------------------------------
-// CThumbAGProcessor::DoCancel()
-// ---------------------------------------------------------------------------
-//
-void CThumbAGProcessor::DoCancel()
- {
- // No implementation required
- }
-
-void CThumbAGProcessor::HarvestingUpdated(
- HarvesterEventObserverType aHEObserverType,
- HarvesterEventState aHarvesterEventState,
- TInt aItemsLeft )
- {
- TN_DEBUG4( "CThumbAGProcessor::HarvestingUpdated -- start() aHEObserverType = %d, aHarvesterEventState = %d, aItemsLeft = %d", aHEObserverType, aHarvesterEventState, aItemsLeft );
- OstTraceExt3( TRACE_NORMAL, CTHUMBAGPROCESSOR_HARVESTINGUPDATED, "CThumbAGProcessor::HarvestingUpdated;aHEObserverType=%u;aHarvesterEventState=%u;aItemsLeft=%d", aHEObserverType, aHarvesterEventState, aItemsLeft );
-
- if(iShutdown)
- {
- return;
- }
-
- if(!iHarvesterActivated)
- {
- iHarvesterActivated = ETrue;
- }
-
- #ifdef _DEBUG
- if( aHEObserverType == EHEObserverTypePlaceholder)
- {
- TN_DEBUG1( "CThumbAGProcessor::HarvestingUpdated -- type EHEObserverTypePlaceholder");
- OstTrace0( TRACE_NORMAL, DUP1_CTHUMBAGPROCESSOR_HARVESTINGUPDATED, "CThumbAGProcessor::HarvestingUpdated -- type EHEObserverTypePlaceholder" );
- }
- else if( aHEObserverType == EHEObserverTypeOverall)
- {
- TN_DEBUG1( "CThumbAGProcessor::HarvestingUpdated -- type EHEObserverTypeOverall");
- OstTrace0( TRACE_NORMAL, DUP2_CTHUMBAGPROCESSOR_HARVESTINGUPDATED, "CThumbAGProcessor::HarvestingUpdated -- type EHEObserverTypeOverall" );
- }
- else if( aHEObserverType == EHEObserverTypeMMC)
- {
- TN_DEBUG1( "CThumbAGProcessor::HarvestingUpdated -- type EHEObserverTypeMMC");
- OstTrace0( TRACE_NORMAL, DUP3_CTHUMBAGPROCESSOR_HARVESTINGUPDATED, "CThumbAGProcessor::HarvestingUpdated -- type EHEObserverTypeMMC" );
- }
- #endif
-
- //placeholder harvesting
- if( aHEObserverType == EHEObserverTypePlaceholder)
- {
- switch(aHarvesterEventState)
- {
- case EHEStateStarted:
- case EHEStateHarvesting:
- case EHEStateResumed:
- {
- iPHHarvestingTemp = ETrue;
- break;
- }
- case EHEStatePaused:
- case EHEStateFinished:
- case EHEStateUninitialized:
- {
- iPHHarvestingTemp = EFalse;
- break;
- }
- };
-
- if(iPHHarvestingTemp != iPHHarvesting)
- {
- iPHHarvesting = iPHHarvestingTemp;
-
- if( iPHHarvesting )
- {
- TN_DEBUG1( "CThumbAGProcessor::HarvestingUpdated -- MDS placeholder harvesterin started");
- OstTrace0( TRACE_NORMAL, DUP4_CTHUMBAGPROCESSOR_HARVESTINGUPDATED, "CThumbAGProcessor::HarvestingUpdated -- MDS placeholder harvesterin starteds" );
- }
- else
- {
- TN_DEBUG1( "CThumbAGProcessor::HarvestingUpdated -- MDS placeholder harvesting finished");
- OstTrace0( TRACE_NORMAL, DUP5_CTHUMBAGPROCESSOR_HARVESTINGUPDATED, "CThumbAGProcessor::HarvestingUpdated -- MDS placeholder harvesting finished" );
- //query present placeholders
- TRAP_IGNORE(QueryPlaceholdersL( EFalse ));
- iDoQueryAllItems = EFalse;
- iPHHarvestingItemsLeftTemp = 0;
- }
- }
-
- //restart mount timout if PH item count is increasing durin MMC harvesting
- if(iMMCHarvesting && iPHHarvesting && aItemsLeft > iPHHarvestingItemsLeftTemp)
- {
- //if items count increasing, restart mount timeout
- TN_DEBUG1( "CThumbAGProcessor::HarvestingUpdated -- PH count increasing, restart mount timeout");
- OstTrace0( TRACE_NORMAL, DUP6_CTHUMBAGPROCESSOR_HARVESTINGUPDATED, "CThumbAGProcessor::HarvestingUpdated -- PH count increasing, restart mount timeout" );
-
- if(iMountTimer->IsActive())
- {
- iMountTimer->Cancel();
- }
-
- iMountTimer->Start( KMountTimeout, KMountTimeout, TCallBack(MountTimerCallBack, this));
- }
-
- //we are interestead of only PHs during MMC harvesting
- if( iMMCHarvesting )
- {
- iPHHarvestingItemsLeftTemp = aItemsLeft;
- }
- }
- //overall harvesting
- else if ( aHEObserverType == EHEObserverTypeOverall)
- {
- switch(aHarvesterEventState)
- {
- case EHEStateStarted:
- case EHEStateHarvesting:
- case EHEStatePaused:
- case EHEStateResumed:
- {
- iHarvestingTemp = ETrue;
- break;
- }
- case EHEStateFinished:
- case EHEStateUninitialized:
- {
- iHarvestingTemp = EFalse;
- break;
- }
- };
-
- if(iHarvestingTemp != iHarvesting)
- {
- iHarvesting = iHarvestingTemp;
-
- if( iHarvesting )
- {
- TN_DEBUG1( "CThumbAGProcessor::HarvestingUpdated -- MDS harvesting started");
- OstTrace0( TRACE_NORMAL, DUP7_CTHUMBAGPROCESSOR_HARVESTINGUPDATED, "CThumbAGProcessor::HarvestingUpdated -- MDS harvesting started" );
- CancelTimeout();
- }
- else
- {
- TN_DEBUG1( "CThumbAGProcessor::HarvestingUpdated -- MDS harvesting finished ");
- OstTrace0( TRACE_NORMAL, DUP8_CTHUMBAGPROCESSOR_HARVESTINGUPDATED, "CThumbAGProcessor::HarvestingUpdated -- MDS harvesting finished" );
- // continue processing if needed
- StartTimeout();
-
- if(iMountTimer->IsActive())
- {
- iMountTimer->Cancel();
- }
- }
- }
- }
- //MMC harvesting
- else if( aHEObserverType == EHEObserverTypeMMC)
- {
- switch(aHarvesterEventState)
- {
- case EHEStateStarted:
- case EHEStateHarvesting:
- case EHEStatePaused:
- case EHEStateResumed:
- {
- iMMCHarvestingTemp = ETrue;
- break;
- }
- case EHEStateFinished:
- case EHEStateUninitialized:
- {
- iMMCHarvestingTemp = EFalse;
- break;
- }
- };
-
- if(iMMCHarvestingTemp != iMMCHarvesting)
- {
- iMMCHarvesting = iMMCHarvestingTemp;
-
- if( iMMCHarvesting )
- {
- TN_DEBUG1( "CThumbAGProcessor::HarvestingUpdated -- MDS MMC harvesterin started");
- OstTrace0( TRACE_NORMAL, DUP9_CTHUMBAGPROCESSOR_HARVESTINGUPDATED, "CThumbAGProcessor::HarvestingUpdated -- MDS MMC harvesterin started" );
- UpdatePSValues(EFalse, ETrue);
- iMMCHarvestingItemsLeftTemp = 0;
- }
- else
- {
- //activate timeout if overall harvesting is not active
- if(!iHarvesting)
- {
- StartTimeout();
- }
- TN_DEBUG1( "CThumbAGProcessor::HarvestingUpdated -- MDS MMC harvesting finished ");
- OstTrace0( TRACE_NORMAL, DUP10_CTHUMBAGPROCESSOR_HARVESTINGUPDATED, "CThumbAGProcessor::HarvestingUpdated -- MDS MMC harvesting finished" );
- }
- }
-
- //restart mount timout if MMC item count is still increasing
- if(iMMCHarvesting && aItemsLeft > iMMCHarvestingItemsLeftTemp)
- {
- TN_DEBUG1( "CThumbAGProcessor::HarvestingUpdated -- MMC count increasing, restart mount timeout");
- OstTrace0( TRACE_NORMAL, DUP11_CTHUMBAGPROCESSOR_HARVESTINGUPDATED, "CThumbAGProcessor::HarvestingUpdated -- MMC count increasing, restart mount timeout" );
-
- if(iMountTimer->IsActive())
- {
- iMountTimer->Cancel();
- }
-
- iMountTimer->Start( KMountTimeout, KMountTimeout, TCallBack(MountTimerCallBack, this));
- }
-
- iMMCHarvestingItemsLeftTemp = aItemsLeft;
- }
-
- TN_DEBUG4( "CThumbAGProcessor::HarvestingUpdated -- end() iHarvesting == %d, iPHHarvesting == %d iMMCHarvesting == %d ", iHarvesting, iPHHarvesting, iMMCHarvesting);
- OstTraceExt3( TRACE_NORMAL, DUP12_CTHUMBAGPROCESSOR_HARVESTINGUPDATED, "CThumbAGProcessor::HarvestingUpdated;iHarvesting=%u;iPHHarvesting=%u;iMMCHarvesting=%u", iHarvesting, iPHHarvesting, iMMCHarvesting );
- }
-
-// ---------------------------------------------------------------------------
-// CThumbAGProcessor::StartTimeout()
-// ---------------------------------------------------------------------------
-//
-void CThumbAGProcessor::StartTimeout()
- {
- TN_DEBUG1( "CThumbAGProcessor::StartTimeout()");
- OstTrace0( TRACE_NORMAL, CTHUMBAGPROCESSOR_STARTTIMEOUT, "CThumbAGProcessor::StartTimeout" );
- CancelTimeout();
-
- if(!iHarvesting && !iMPXHarvesting && !iPeriodicTimer->IsActive() && !iShutdown)
- {
- iPeriodicTimer->Start( KHarvestingCompleteTimeout, KHarvestingCompleteTimeout,
- TCallBack(PeriodicTimerCallBack, this));
- }
- }
-
-// ---------------------------------------------------------------------------
-// CThumbAGProcessor::StopTimeout()
-// ---------------------------------------------------------------------------
-//
-void CThumbAGProcessor::CancelTimeout()
- {
- TN_DEBUG1( "CThumbAGProcessor::CancelTimeout()");
- OstTrace0( TRACE_NORMAL, CTHUMBAGPROCESSOR_CANCELTIMEOUT, "CThumbAGProcessor::CancelTimeout" );
- if(iPeriodicTimer->IsActive())
- {
- iPeriodicTimer->Cancel();
- }
- }
-
-// ---------------------------------------------------------------------------
-// CThumbAGProcessor::RunError()
-// ---------------------------------------------------------------------------
-//
-#ifdef _DEBUG
-TInt CThumbAGProcessor::RunError(TInt aError)
-#else
-TInt CThumbAGProcessor::RunError(TInt /*aError*/)
-#endif
- {
- TN_DEBUG2( "CThumbAGrocessor::RunError() %d", aError);
-#ifdef _DEBUG
- OstTrace1( TRACE_NORMAL, CTHUMBAGPROCESSOR_RUNERROR, "CThumbAGProcessor::RunError;aError=%d", aError );
-#else
- OstTrace0( TRACE_NORMAL, DUP1_CTHUMBAGPROCESSOR_RUNERROR, "CThumbAGProcessor::RunError");
-#endif
- UpdatePSValues(EFalse, EFalse);
-
- iActiveCount--;
-
- ActivateAO();
-
- // nothing to do
- return KErrNone;
- }
-
-// ---------------------------------------------------------------------------
-// CThumbAGProcessor::ActivateAO()
-// ---------------------------------------------------------------------------
-//
-void CThumbAGProcessor::ActivateAO()
- {
- UpdateItemCounts();
-
- if(iFormatting)
- {
- TN_DEBUG1( "CThumbAGProcessor::ActivateAO() - FORMATTING - DAEMON ON PAUSE");
- OstTrace0( TRACE_NORMAL, CTHUMBAGPROCESSOR_ACTIVATEAO, "CThumbAGProcessor::ActivateAO - FORMATTING - DAEMON ON PAUSE" );
- return;
- }
-
- //check if forced run needs to continue
- if ( (iModifyItemCount > 0 || iDeleteItemCount > 0 || iUnknownItemCount > 0) && !iMountTimer->IsActive())
- {
- TN_DEBUG1( "CThumbAGProcessor::ActivateAO() - forced run");
- OstTrace0( TRACE_NORMAL, DUP1_CTHUMBAGPROCESSOR_ACTIVATEAO, "CThumbAGProcessor::ActivateAO - iModifyItemCount > 0 || iUnknownItemCount > 0 || iDeleteItemCount > 0" );
- SetForceRun( ETrue );
- }
- else
- {
- iModify = EFalse;
- SetForceRun( EFalse );
- }
-
- if( !IsActive() && !iShutdown && ((iActiveCount < KMaxDaemonRequests && !iQueryActive) || iForceRun ))
- {
- TN_DEBUG1( "CThumbAGProcessor::ActivateAO() - Activated");
- OstTrace0( TRACE_NORMAL, DUP2_CTHUMBAGPROCESSOR_ACTIVATEAO, "CThumbAGProcessor::ActivateAO - Activated" );
- SetActive();
- TRequestStatus* statusPtr = &iStatus;
- User::RequestComplete( statusPtr, KErrNone );
- }
-
- UpdatePSValues(EFalse, EFalse);
- }
-
-// ---------------------------------------------------------------------------
-// CThumbAGProcessor::PeriodicTimerCallBack()
-// ---------------------------------------------------------------------------
-//
-TInt CThumbAGProcessor::PeriodicTimerCallBack(TAny* aAny)
- {
- TN_DEBUG1( "CThumbAGProcessor::PeriodicTimerCallBack()");
- OstTrace0( TRACE_NORMAL, CTHUMBAGPROCESSOR_PERIODICTIMERCALLBACK, "CThumbAGProcessor::PeriodicTimerCallBack" );
- CThumbAGProcessor* self = static_cast<CThumbAGProcessor*>( aAny );
-
- self->CancelTimeout();
- self->ActivateAO();
-
- return KErrNone; // Return value ignored by CPeriodic
- }
-
-// ---------------------------------------------------------------------------
-// CThumbAGProcessor::CheckAutoCreateValuesL()
-// ---------------------------------------------------------------------------
-//
-void CThumbAGProcessor::CheckAutoCreateValuesL()
- {
- CRepository* rep = CRepository::NewL( TUid::Uid( THUMBNAIL_CENREP_UID ));
-
- TBool imageGrid( EFalse );
- TBool imageList( EFalse );
- TBool imageFull( EFalse );
- TBool videoGrid( EFalse );
- TBool videoList( EFalse );
- TBool videoFull( EFalse );
- TBool audioGrid( EFalse );
- TBool audioList( EFalse );
- TBool audioFull( EFalse );
-
- // get cenrep values
- TInt ret = rep->Get( KAutoCreateImageGrid, imageGrid );
- TN_DEBUG2( "CThumbAGProcessor::CheckAutoCreateValuesL() KAutoCreateImageGrid %d", ret);
- OstTrace1( TRACE_NORMAL, CTHUMBAGPROCESSOR_CHECKAUTOCREATEVALUESL, "CThumbAGProcessor::CheckAutoCreateValuesL - KAutoCreateImageGrid;ret=%d", ret );
- ret = rep->Get( KAutoCreateImageList, imageList );
- TN_DEBUG2( "CThumbAGProcessor::CheckAutoCreateValuesL() KAutoCreateImageList %d", ret);
- OstTrace1( TRACE_NORMAL, DUP1_CTHUMBAGPROCESSOR_CHECKAUTOCREATEVALUESL, "CThumbAGProcessor::CheckAutoCreateValuesL - KAutoCreateImageList;ret=%d", ret );
- ret = rep->Get( KAutoCreateImageFullscreen, imageFull );
- TN_DEBUG2( "CThumbAGProcessor::CheckAutoCreateValuesL() KAutoCreateImageFullscreen %d", ret);
- OstTrace1( TRACE_NORMAL, DUP2_CTHUMBAGPROCESSOR_CHECKAUTOCREATEVALUESL, "CThumbAGProcessor::CheckAutoCreateValuesL;ret=%d", ret );
- ret = rep->Get( KAutoCreateVideoGrid, videoGrid );
- TN_DEBUG2( "CThumbAGProcessor::CheckAutoCreateValuesL() KAutoCreateVideoGrid %d", ret);
- OstTrace1( TRACE_NORMAL, DUP3_CTHUMBAGPROCESSOR_CHECKAUTOCREATEVALUESL, "CThumbAGProcessor::CheckAutoCreateValuesL - KAutoCreateVideoGrid;ret=%d", ret );
- ret = rep->Get( KAutoCreateVideoList, videoList );
- TN_DEBUG2( "CThumbAGProcessor::CheckAutoCreateValuesL() KAutoCreateVideoList %d", ret);
- OstTrace1( TRACE_NORMAL, DUP4_CTHUMBAGPROCESSOR_CHECKAUTOCREATEVALUESL, "CThumbAGProcessor::CheckAutoCreateValuesL - KAutoCreateVideoList;ret=%d", ret );
- ret = rep->Get( KAutoCreateVideoFullscreen, videoFull );
- TN_DEBUG2( "CThumbAGProcessor::CheckAutoCreateValuesL() KAutoCreateVideoFullscreen %d", ret);
- OstTrace1( TRACE_NORMAL, DUP5_CTHUMBAGPROCESSOR_CHECKAUTOCREATEVALUESL, "CThumbAGProcessor::CheckAutoCreateValuesL - KAutoCreateVideoFullscreen;ret=%d", ret );
- ret = rep->Get( KAutoCreateAudioGrid, audioGrid );
- TN_DEBUG2( "CThumbAGProcessor::CheckAutoCreateValuesL() KAutoCreateAudioGrid %d", ret);
- OstTrace1( TRACE_NORMAL, DUP6_CTHUMBAGPROCESSOR_CHECKAUTOCREATEVALUESL, "CThumbAGProcessor::CheckAutoCreateValuesL - KAutoCreateAudioGrid;ret=%d", ret );
- ret = rep->Get( KAutoCreateAudioList, audioList );
- TN_DEBUG2( "CThumbAGProcessor::CheckAutoCreateValuesL() KAutoCreateAudioList %d", ret);
- OstTrace1( TRACE_NORMAL, DUP7_CTHUMBAGPROCESSOR_CHECKAUTOCREATEVALUESL, "CThumbAGProcessor::CheckAutoCreateValuesL - KAutoCreateAudioList;ret=%d", ret );
- ret = rep->Get( KAutoCreateAudioFullscreen, audioFull );
- TN_DEBUG2( "CThumbAGProcessor::CheckAutoCreateValuesL() KAutoCreateAudioFullscreen %d", ret);
- OstTrace1( TRACE_NORMAL, DUP8_CTHUMBAGPROCESSOR_CHECKAUTOCREATEVALUESL, "CThumbAGProcessor::CheckAutoCreateValuesL - KAutoCreateAudioFullscreen;ret=%d", ret );
-
- iAutoImage = EFalse;
- iAutoVideo = EFalse;
- iAutoAudio = EFalse;
-
- // set processing values
- if (imageGrid || imageList || imageFull)
- {
- iAutoImage = ETrue;
- }
- if (videoGrid || videoList || videoFull)
- {
- iAutoVideo = ETrue;
- }
- if (audioGrid || audioList || audioFull)
- {
- iAutoAudio = ETrue;
- }
-
- delete rep;
- }
-
-// ---------------------------------------------------------------------------
-// CThumbAGProcessor::RemoveFromQueues()
-// ---------------------------------------------------------------------------
-//
-#ifdef _DEBUG
-void CThumbAGProcessor::RemoveFromQueues( const RArray<TItemId>& aIDArray, const TBool aRemoveFromDelete )
-#else
-void CThumbAGProcessor::RemoveFromQueues( const RArray<TItemId>& aIDArray, const TBool /*aRemoveFromDelete*/ )
-#endif
- {
- TN_DEBUG2( "CThumbAGProcessor::RemoveFromQueues() aRemoveFromDelete == %d - begin", aRemoveFromDelete );
-#ifdef _DEBUG
- OstTrace1( TRACE_NORMAL, CTHUMBAGPROCESSOR_REMOVEFROMQUEUES, "CThumbAGProcessor::RemoveFromQueues - aRemoveFromDelete;aRemoveFromDelete=%d", aRemoveFromDelete );
-#else
- OstTrace0( TRACE_NORMAL, DUP1_CTHUMBAGPROCESSOR_REMOVEFROMQUEUES, "CThumbAGProcessor::RemoveFromQueues - aRemoveFromDelete" );
-#endif
-
- TInt itemIndex(KErrNotFound);
-
- for (int i=0; i< aIDArray.Count(); i++)
- {
- TThumbnailGenerationItem item;
- item.iItemId = aIDArray[i];
- TN_DEBUG2( "CThumbAGProcessor::RemoveFromQueues() - %d", aIDArray[i]);
- OstTrace1( TRACE_NORMAL, DUP2_CTHUMBAGPROCESSOR_REMOVEFROMQUEUES, "CThumbAGProcessor::RemoveFromQueues;aIDArray[i]=%u", aIDArray[i] );
-
- itemIndex = iGenerationQueue.FindInOrder(item, Compare);
- if(itemIndex >= 0)
- {
- delete iGenerationQueue[itemIndex].iUri;
- iGenerationQueue[itemIndex].iUri = NULL;
- iGenerationQueue.Remove(itemIndex);
- TN_DEBUG1( "CThumbAGProcessor::RemoveFromQueues() - iGenerationQueue" );
- OstTrace0( TRACE_NORMAL, DUP3_CTHUMBAGPROCESSOR_REMOVEFROMQUEUES, "CThumbAGProcessor::RemoveFromQueues - iGenerationQueue" );
- }
-
- itemIndex = iQueryQueue.FindInOrder(aIDArray[i], CompareId);
- if(itemIndex >= 0)
- {
- iQueryQueue.Remove(itemIndex);
- TN_DEBUG1( "CThumbAGProcessor::RemoveFromQueues() - iQueryQueue" );
- OstTrace0( TRACE_NORMAL, DUP4_CTHUMBAGPROCESSOR_REMOVEFROMQUEUES, "CThumbAGProcessor::RemoveFromQueues - iQueryQueue" );
- }
- }
-
- ActivateAO();
-
- TN_DEBUG1( "CThumbAGProcessor::RemoveFromQueues() - end" );
- OstTrace0( TRACE_NORMAL, DUP5_CTHUMBAGPROCESSOR_REMOVEFROMQUEUES, "CThumbAGProcessor::RemoveFromQueues - end" );
- }
-
-// ---------------------------------------------------------------------------
-// CThumbAGProcessor::SetForceRun()
-// ---------------------------------------------------------------------------
-//
-void CThumbAGProcessor::SetForceRun( const TBool aForceRun)
- {
- TN_DEBUG2( "CThumbAGProcessor::SetForceRun(%d) - end", aForceRun );
- OstTrace1( TRACE_NORMAL, CTHUMBAGPROCESSOR_SETFORCERUN, "CThumbAGProcessor::SetForceRun - end;aForceRun=%u", aForceRun );
-
- // enable forced run
- iForceRun = aForceRun;
- }
-
-// ---------------------------------------------------------------------------
-// CThumbAGProcessor::QueryForPlaceholders()
-// ---------------------------------------------------------------------------
-//
-void CThumbAGProcessor::QueryAllItemsL()
- {
- TN_DEBUG1( "CThumbAGProcessor::QueryAllItemsL" );
- OstTrace0( TRACE_NORMAL, CTHUMBAGPROCESSOR_QUERYALLITEMSL, "CThumbAGProcessor::QueryAllItemsL" );
-
- __ASSERT_DEBUG((iMdESession), User::Panic(_L("CThumbAGProcessor::QueryAllItemsL() !iMdeSession "), KErrBadHandle));
-
- if(!iMdESession)
- {
- return;
- }
-
- if( iQueryAllItems )
- {
- if( !iQueryAllItems->IsComplete() )
- {
- TN_DEBUG1( "CThumbAGProcessor::QueryAllItemsL active- skip" );
- OstTrace0( TRACE_NORMAL, DUP1_CTHUMBAGPROCESSOR_QUERYALLITEMSL, "CThumbAGProcessor::QueryAllItemsL - active- skip" );
- return;
- }
-
- // delete old query
- iQueryAllItems->Cancel();
- delete iQueryAllItems;
- iQueryAllItems = NULL;
- }
-
- TN_DEBUG1( "CThumbAGProcessor::QueryAllItemsL - start" );
- OstTrace0( TRACE_NORMAL, DUP2_CTHUMBAGPROCESSOR_QUERYALLITEMSL, "CThumbAGProcessor::QueryAllItemsL -start" );
-
- CMdEObjectDef& imageObjDef = iDefNamespace->GetObjectDefL( MdeConstants::Image::KImageObject );
- CMdEObjectDef& videoObjDef = iDefNamespace->GetObjectDefL( MdeConstants::Video::KVideoObject );
- CMdEObjectDef& audioObjDef = iDefNamespace->GetObjectDefL( MdeConstants::Audio::KAudioObject );
-
- CMdEObjectDef& objDef = iDefNamespace->GetObjectDefL( MdeConstants::Object::KBaseObject);
- iQueryAllItems = iMdESession->NewObjectQueryL( *iDefNamespace, objDef, this );
-
- iQueryAllItems->SetResultMode( EQueryResultModeItem );
-
- CMdELogicCondition& rootCondition = iQueryAllItems->Conditions();
- rootCondition.SetOperator( ELogicConditionOperatorOr );
-
- rootCondition.AddObjectConditionL(imageObjDef);
- rootCondition.AddObjectConditionL(videoObjDef);
- rootCondition.AddObjectConditionL(audioObjDef);
-
- iQueryAllItems->FindL(KMdEQueryDefaultMaxCount, KMaxQueryBatchSize);
-
- TN_DEBUG1( "CThumbAGProcessor::QueryAllItemsL - end" );
- OstTrace0( TRACE_NORMAL, DUP3_CTHUMBAGPROCESSOR_QUERYALLITEMSL, "CThumbAGProcessor::QueryAllItemsL" );
- }
-
-// -----------------------------------------------------------------------------
-// CThumbAGProcessor::HandleCollectionMessage
-// From MMPXCollectionObserver
-// Handle collection message.
-// -----------------------------------------------------------------------------
-//
-void CThumbAGProcessor::HandleCollectionMessage( CMPXMessage* aMessage, TInt aError )
- {
- if ( aError != KErrNone || !aMessage || iShutdown )
- {
- return;
- }
-
- TMPXMessageId generalId( *aMessage->Value<TMPXMessageId>( KMPXMessageGeneralId ) );
-
- TN_DEBUG2( "CThumbAGProcessor::HandleCollectionMessage KMPXMessageGeneralId=%d", generalId);
- OstTrace1( TRACE_NORMAL, CTHUMBAGPROCESSOR_HANDLECOLLECTIONMESSAGE, "CThumbAGProcessor::HandleCollectionMessage - KMPXMessageGeneralId;generalId=%u", generalId );
-
- //we are interestead of only general system events
- if ( generalId == KMPXMessageGeneral )
- {
- TInt event( *aMessage->Value<TInt>( KMPXMessageGeneralEvent ) );
- TInt op( *aMessage->Value<TInt>( KMPXMessageGeneralType ) );
- TN_DEBUG3( "CThumbAGProcessor::HandleCollectionMessage KMPXMessageGeneralEvent=%d", event, op);
- OstTraceExt2( TRACE_NORMAL, DUP1_CTHUMBAGPROCESSOR_HANDLECOLLECTIONMESSAGE, "CThumbAGProcessor::HandleCollectionMessage - KMPXMessageGeneralEvent;event=%d;op=%d", event, op );
- if ( event == TMPXCollectionMessage::EBroadcastEvent )
- {
- switch( op )
- {
- //when MTP sync or music collection is started then pause processing
- case EMcMsgRefreshStart:
- case EMcMsgUSBMTPStart:
- TN_DEBUG1("CThumbAGProcessor::HandleCollectionMessage MPX refresh started" );
- OstTrace0( TRACE_NORMAL, DUP2_CTHUMBAGPROCESSOR_HANDLECOLLECTIONMESSAGE, "CThumbAGProcessor::HandleCollectionMessage - MPX refresh started" );
- iMPXHarvesting = ETrue;
- CancelTimeout();
- break;
- //when MTP sync or music collection refresh is complete then resume processing
- case EMcMsgRefreshEnd:
- case EMcMsgUSBMTPEnd:
- case EMcMsgUSBMTPNotActive:
- TN_DEBUG1("CThumbAGProcessor::HandleCollectionMessage MPX refresh finished/not active" );
- OstTrace0( TRACE_NORMAL, DUP3_CTHUMBAGPROCESSOR_HANDLECOLLECTIONMESSAGE, "CThumbAGProcessor::HandleCollectionMessage - MPX refresh finished/not active" );
- iMPXHarvesting = EFalse;
- StartTimeout();
- break;
- default:
- break;
- }
-
- //signal Server's stores about MPX harvesting state
- if( iMPXHarvesting )
- {
- RProperty::Set(KTAGDPSNotification, KMPXHarvesting, ETrue);
- }
- else
- {
- RProperty::Set(KTAGDPSNotification, KMPXHarvesting, EFalse);
- }
-
- TN_DEBUG3( "CThumbAGProcessor::HandleCollectionMessage -- end() iHarvesting == %d, iMPXHarvesting == %d", iHarvesting, iMPXHarvesting);
- OstTraceExt2( TRACE_NORMAL, DUP4_CTHUMBAGPROCESSOR_HANDLECOLLECTIONMESSAGE, "CThumbAGProcessor::HandleCollectionMessage - end;iHarvesting=%u;iMPXHarvesting=%u", iHarvesting, iMPXHarvesting );
- }
- }
- }
-
-// -----------------------------------------------------------------------------
-// CThumbAGProcessor::HandleOpenL
-// From MMPXCollectionObserver
-// Handles the collection entries being opened.
-// -----------------------------------------------------------------------------
-//
-void CThumbAGProcessor::HandleOpenL( const CMPXMedia& /*aEntries*/, TInt /*aIndex*/,
- TBool /*aComplete*/, TInt /*aError*/ )
- {
- // not needed here
- }
-
-// -----------------------------------------------------------------------------
-// CThumbAGProcessor::HandleOpenL
-// From MMPXCollectionObserver
-// Handles an item being opened.
-// -----------------------------------------------------------------------------
-void CThumbAGProcessor::HandleOpenL( const CMPXCollectionPlaylist& /*aPlaylist*/, TInt /*aError*/ )
- {
- // not needed here
- }
-
-// -----------------------------------------------------------------------------
-// CThumbAGProcessor::HandleCollectionMediaL
-// From MMPXCollectionObserver
-// Handle media properties.
-// -----------------------------------------------------------------------------
-//
-void CThumbAGProcessor::HandleCollectionMediaL( const CMPXMedia& /*aMedia*/,
- TInt /*aError*/ )
- {
- // not needed here
- }
-
-// -----------------------------------------------------------------------------
-// ActivityChanged()
-// -----------------------------------------------------------------------------
-//
-void CThumbAGProcessor::ActivityChanged(const TBool aActive)
- {
- TN_DEBUG2( "void CThumbAGProcessor::ActivityChanged() aActive == %d", aActive);
- OstTrace0( TRACE_NORMAL, CTHUMBAGPROCESSOR_ACTIVITYCHANGED, "CThumbAGProcessor::ActivityChanged" );
- if(aActive)
- {
- iIdle = EFalse;
- }
- else
- {
- iIdle = ETrue;
-
- if(iGenerationQueue.Count() > 0 )
- {
- ActivateAO();
- }
- }
- }
-
-
-// ---------------------------------------------------------------------------
-// CThumbAGProcessor::FormatNotification
-// Handles a format operation
-// ---------------------------------------------------------------------------
-//
-void CThumbAGProcessor::FormatNotification( TBool aFormat )
- {
- TN_DEBUG2( "CThumbAGProcessor::FormatNotification(%d)", aFormat );
- OstTrace1( TRACE_NORMAL, CTHUMBAGPROCESSOR_FORMATNOTIFICATION, "CThumbAGProcessor::FormatNotification;aFormat=%u", aFormat );
-
- iFormatting = aFormat;
-
- if(!aFormat)
- {
- //force update
- UpdatePSValues(EFalse, ETrue);
- ActivateAO();
- }
- }
-
-// ---------------------------------------------------------------------------
-// CThumbAGProcessor::RPropertyNotification
-// Handles a RProperty changed operation
-// ---------------------------------------------------------------------------
-//
-void CThumbAGProcessor::RPropertyNotification(const TInt aError, const TUid aKeyCategory, const TUint aPropertyKey, const TInt aValue)
- {
- TN_DEBUG5( "CThumbAGProcessor::RPropertyNotification() aError = %d, aPropertyKey = %d, aKeyCategory = %d, aValue = %d", aError, aPropertyKey, aKeyCategory, aValue );
- OstTraceExt2( TRACE_NORMAL, CTHUMBAGPROCESSOR_RPROPERTYNOTIFICATION, "CThumbAGProcessor::RPropertyNotification;aPropertyKey=%u;aValue=%d", aPropertyKey, aValue );
-
- if(aPropertyKey == KForceBackgroundGeneration && aKeyCategory == KTAGDPSNotification )
- {
- if( aValue == 1 && aError == KErrNone )
- {
- iForegroundRun = ETrue;
- ActivateAO();
- }
- else
- {
- iForegroundRun = EFalse;
- }
- }
- }
-
-// ---------------------------------------------------------------------------
-// CThumbAGProcessor::UpdateItemsLeft
-// Update KItemsleft PS value if changed
-// ---------------------------------------------------------------------------
-//
-void CThumbAGProcessor::UpdatePSValues(const TBool aDefine, const TBool aForce)
- {
- TInt itemsLeft(KErrNotReady);
- TBool daemonProcessing = ETrue;
-
- if(iShutdown)
- {
- RProperty::Set(KTAGDPSNotification, KDaemonProcessing, EFalse);
- RProperty::Set(KTAGDPSNotification, KItemsleft, 0 );
- return;
- }
-
- if(aDefine)
- {
- TInt ret = RProperty::Define(KTAGDPSNotification, KDaemonProcessing, RProperty::EInt);
-
- if( ret != KErrNone )
- {
- TN_DEBUG2( "CThumbAGProcessor::UpdatePSValues() define KDaemonProcessing ret = %d", ret);
- OstTrace1( TRACE_NORMAL, CTHUMBAGPROCESSOR_UPDATEPSVALUES, "CThumbAGProcessor::UpdatePSValues - define KDaemonProcessing;ret=%d", ret );
- }
-
- ret = RProperty::Define(KTAGDPSNotification, KItemsleft, RProperty::EInt);
-
- if( ret != KErrNone )
- {
- TN_DEBUG2( "CThumbAGProcessor::UpdatePSValues() define KItemsleft ret = %d", ret);
- OstTrace1( TRACE_NORMAL, DUP1_CTHUMBAGPROCESSOR_UPDATEPSVALUES, "CThumbAGProcessor::UpdatePSValues - define KItemsleft;ret=%d", ret );
- }
- }
-
- // set itemsleft = KErrNotReady (-18) and daemonProcessing = ETrue if
- // - key is initalized
- // - mount timer is pending
- // - harvester observer is not yet activated
- // - single unknown item exists in processing queue
- // - forced
- if( iMountTimer->IsActive() || aForce || aDefine || iUnknownItemCount
- || !iHarvesterActivated )
- {
- daemonProcessing = ETrue;
- itemsLeft = KErrNotReady;
- }
- else
- {
- itemsLeft = iAddItemCount + iModifyItemCount;
- }
-
- TN_DEBUG2( "CThumbAGProcessor::UpdatePSValues() KItemsleft == %d", itemsLeft);
- OstTrace1( TRACE_NORMAL, DUP2_CTHUMBAGPROCESSOR_UPDATEPSVALUES, "CThumbAGProcessor::UpdatePSValues;itemsLeft=%d", itemsLeft );
-
- //cancel 2nd round generarion when there is items in 1st round queues
- if(iAddItemCount && i2ndRound)
- {
- DeleteAndCancelQuery(ETrue);
- i2ndRound = EFalse;
- }
-
- if( iGenerationQueue.Count() )
- {
- daemonProcessing = ETrue;
- }
- else
- {
- daemonProcessing = EFalse;
- }
-
- if( daemonProcessing != iPreviousDaemonProcessing)
- {
- TN_DEBUG2( "CThumbAGProcessor::UpdatePSValues() update KDaemonProcessing == %d", daemonProcessing);
- OstTrace1( TRACE_NORMAL, DUP3_CTHUMBAGPROCESSOR_UPDATEPSVALUES, "CThumbAGProcessor::UpdatePSValues - update KDaemonProcessing;daemonProcessing=%u", daemonProcessing );
- iPreviousDaemonProcessing = daemonProcessing;
- TInt ret = RProperty::Set(KTAGDPSNotification, KDaemonProcessing, daemonProcessing);
-
- if(ret != KErrNone )
- {
- TN_DEBUG3( "CThumbAGProcessor::UpdatePSValues() set KDaemonProcessing %d failed %d", daemonProcessing, ret);
- OstTraceExt2( TRACE_NORMAL, DUP4_CTHUMBAGPROCESSOR_UPDATEPSVALUES, "CThumbAGProcessor::UpdatePSValues - set KDaemonProcessing;daemonProcessing=%u;ret=%d", daemonProcessing, ret );
- }
- }
-
- TInt ret = RProperty::Get(KTAGDPSNotification, KItemsleft, iPreviousItemsLeft );
- TN_DEBUG2( "CThumbAGProcessor::UpdatePSValues() iPreviousItemsLeft == %d", iPreviousItemsLeft);
- OstTrace1( TRACE_NORMAL, DUP5_CTHUMBAGPROCESSOR_UPDATEPSVALUES, "CThumbAGProcessor::UpdatePSValues;iPreviousItemsLeft=%d", iPreviousItemsLeft );
-
- if( itemsLeft != iPreviousItemsLeft)
- {
- TN_DEBUG2( "CThumbAGProcessor::UpdatePSValues() Set KItemsleft == %d", itemsLeft);
- OstTrace1( TRACE_NORMAL, DUP6_CTHUMBAGPROCESSOR_UPDATEPSVALUES, "CThumbAGProcessor::UpdatePSValues - Set KItemsleft;itemsLeft=%d", itemsLeft );
- iPreviousItemsLeft = itemsLeft;
- TInt ret = RProperty::Set(KTAGDPSNotification, KItemsleft, itemsLeft );
-
- if(ret != KErrNone )
- {
- TN_DEBUG3( "CThumbAGProcessor::UpdatePSValues() set KItemsleft %d failed %d", itemsLeft, ret);
- OstTraceExt2( TRACE_NORMAL, DUP7_CTHUMBAGPROCESSOR_UPDATEPSVALUES, "CThumbAGProcessor::UpdatePSValues - set KItemsleft failed;itemsLeft=%d;ret=%d", itemsLeft, ret );
- }
- }
-
- }
-
-// ---------------------------------------------------------------------------
-// CThumbAGProcessor::Compare
-// Comparison function for logaritmic use of queue arrays
-// ---------------------------------------------------------------------------
-//
-
-TInt CThumbAGProcessor::Compare(const TThumbnailGenerationItem& aLeft, const TThumbnailGenerationItem& aRight)
- {
- return (aLeft.iItemId - aRight.iItemId);
- }
-
-TInt CThumbAGProcessor::CompareId(const TItemId& aLeft, const TItemId& aRight)
- {
- return (aLeft - aRight);
- }
-
-void CThumbAGProcessor::UpdateItemCounts()
- {
- TN_DEBUG1( "CThumbAGProcessor::UpdateItemCounts()");
- OstTrace0( TRACE_NORMAL, CTHUMBAGPROCESSOR_UPDATEITEMCOUNTS, "CThumbAGProcessor::UpdateItemCounts" );
- iModifyItemCount = 0;
- iDeleteItemCount = 0;
- iAddItemCount = 0;
- iUnknownItemCount = 0;
- i2ndAddItemCount = 0;
- iPlaceholderItemCount=0;
- iCameraItemCount =0;
- iImageItemCount=0;
- iVideoItemCount=0;
- iAudioItemCount=0;
-
- for(TInt i=0; i < iGenerationQueue.Count(); i++)
- {
- TThumbnailGenerationItem& item = iGenerationQueue[i];
-
- if(item.iItemAction == EGenerationItemActionModify)
- {
- iModifyItemCount++;
- }
-
- if(item.iItemAction == EGenerationItemActionDelete)
- {
- iDeleteItemCount++;
- }
-
- if(item.iItemType == EGenerationItemTypeUnknown)
- {
- iUnknownItemCount++;
- }
- if(item.iItemAction == EGenerationItemAction2ndAdd)
- {
- i2ndAddItemCount++;
- }
- if(item.iPlaceholder)
- {
- iPlaceholderItemCount++;
- }
- if(item.iItemType == EGenerationItemTypeCamera)
- {
- iCameraItemCount++;
- }
- if(item.iItemAction == EGenerationItemActionAdd )
- {
- iAddItemCount++;
- }
- if(item.iItemType == EGenerationItemTypeAudio)
- {
- iAudioItemCount++;
- }
- if(item.iItemType == EGenerationItemTypeVideo)
- {
- iVideoItemCount++;
- }
- if(item.iItemType == EGenerationItemTypeImage)
- {
- iImageItemCount++;
- }
- }
-
- TN_DEBUG2( "CThumbAGProcessor::UpdateItemCounts() iActiveCount = %d",
- iActiveCount);
- OstTrace1( TRACE_NORMAL, DUP1_CTHUMBAGPROCESSOR_UPDATEITEMCOUNTS, "CThumbAGProcessor::UpdateItemCounts - iActiveCount;iActiveCount=%u", iActiveCount );
- TN_DEBUG2( "CThumbAGProcessor::UpdateItemCounts() iPreviousItemsLeft = %d",
- iPreviousItemsLeft);
- OstTrace1( TRACE_NORMAL, DUP2_CTHUMBAGPROCESSOR_UPDATEITEMCOUNTS, "CThumbAGProcessor::UpdateItemCounts;iPreviousItemsLeft=%d", iPreviousItemsLeft );
- TN_DEBUG5( "CThumbAGProcessor::UpdateItemCounts() iHarvesting == %d, iMMCHarvesting == %d, iPHHarvesting == %d, iMPXHarvesting == %d",
- iHarvesting, iMMCHarvesting, iPHHarvesting, iMPXHarvesting);
- OstTraceExt4( TRACE_NORMAL, DUP3_CTHUMBAGPROCESSOR_UPDATEITEMCOUNTS, "CThumbAGProcessor::UpdateItemCounts;iHarvesting=%d;iMMCHarvesting=%d;iPHHarvesting=%d;iMPXHarvesting=%d",
- iHarvesting, iMMCHarvesting, iPHHarvesting, iMPXHarvesting );
-
- TN_DEBUG5( "CThumbAGProcessor::UpdateItemCounts() iIdle = %d, iForegroundRun = %d, timer = %d, iForceRun = %d",
- iIdle, iForegroundRun, iPeriodicTimer->IsActive(), iForceRun);
- OstTraceExt4( TRACE_NORMAL, DUP4_CTHUMBAGPROCESSOR_UPDATEITEMCOUNTS, "CThumbAGProcessor::UpdateItemCounts;iIdle=%d;iForegroundRun=%d;iPeriodicTimer->IsActive()=%d;iForceRun=%d",
- iIdle, iForegroundRun, iPeriodicTimer->IsActive(), iForceRun );
-
- TN_DEBUG4( "CThumbAGProcessor::UpdateItemCounts() iModify = %d, iQueryReady = %d, iProcessingCount = %d",
- iModify, iQueryReady, iProcessingCount);
- OstTraceExt2( TRACE_NORMAL, DUP5_CTHUMBAGPROCESSOR_UPDATEITEMCOUNTS, "CThumbAGProcessor::UpdateItemCounts;iModify=%u;iQueryReady=%u",
- iModify, iQueryReady );
- OstTrace1( TRACE_NORMAL, DUP12_CTHUMBAGPROCESSOR_UPDATEITEMCOUNTS, "CThumbAGProcessor::UpdateItemCounts;iProcessingCount=%u", iProcessingCount );
- TN_DEBUG2( "CThumbAGProcessor::UpdateItemCounts() iMountTimer = %d", iMountTimer->IsActive());
- OstTrace1( TRACE_NORMAL, DUP6_CTHUMBAGPROCESSOR_UPDATEITEMCOUNTS, "CThumbAGProcessor::UpdateItemCounts;iMountTimer->IsActive()=%u", iMountTimer->IsActive() );
- TN_DEBUG3( "CThumbAGProcessor::UpdateItemCounts() iGenerationQueue = %d, iQueryQueue = %d",
- iGenerationQueue.Count(), iQueryQueue.Count());
- OstTraceExt2( TRACE_NORMAL, DUP7_CTHUMBAGPROCESSOR_UPDATEITEMCOUNTS, "CThumbAGProcessor::UpdateItemCounts;iGenerationQueue.Count()=%d;iQueryQueue.Count()=%d", iGenerationQueue.Count(), iQueryQueue.Count() );
- TN_DEBUG5( "CThumbAGProcessor::UpdateItemCounts() iAddItemCount=%d, i2ndAddItemCount=%d, iModifyItemCount=%d, iDeleteItemCount=%d",
- iAddItemCount, i2ndAddItemCount, iModifyItemCount, iDeleteItemCount );
- OstTrace0( TRACE_NORMAL, DUP8_CTHUMBAGPROCESSOR_UPDATEITEMCOUNTS, "CThumbAGProcessor::UpdateItemCounts" );
- TN_DEBUG3( "CThumbAGProcessor::UpdateItemCounts() iUnknownItemCount=%d, iPlaceholderItemCount=%d",
- iUnknownItemCount, iPlaceholderItemCount);
- OstTraceExt2( TRACE_NORMAL, DUP9_CTHUMBAGPROCESSOR_UPDATEITEMCOUNTS, "CThumbAGProcessor::UpdateItemCounts;iUnknownItemCount=%d;iPlaceholderItemCount=%d", iUnknownItemCount, iPlaceholderItemCount );
- TN_DEBUG4( "CThumbAGProcessor::UpdateItemCounts() iAudioItemCount=%d, iVideoItemCount=%d, iImageItemCount=%d",
- iAudioItemCount, iVideoItemCount, iImageItemCount);
- OstTraceExt3( TRACE_NORMAL, DUP10_CTHUMBAGPROCESSOR_UPDATEITEMCOUNTS, "CThumbAGProcessor::UpdateItemCounts;iAudioItemCount=%u;iVideoItemCount=%d;iImageItemCount=%d",
- iAudioItemCount, iVideoItemCount, iImageItemCount );
-
- TN_DEBUG2( "CThumbAGProcessor::UpdateItemCounts() iCameraItemCount=%d", iCameraItemCount);
- OstTrace1( TRACE_NORMAL, DUP11_CTHUMBAGPROCESSOR_UPDATEITEMCOUNTS, "CThumbAGProcessor::UpdateItemCounts;iCameraItemCount=%d", iCameraItemCount );
-
- //compress queues when empty
- if(!iGenerationQueue.Count())
- {
- iGenerationQueue.Compress();
- }
-
- if(!iQueryQueue.Count())
- {
- iQueryQueue.Compress();
- }
- }
-
-
-// ---------------------------------------------------------------------------
-// CThumbAGProcessor::MountTimerCallBack()
-// ---------------------------------------------------------------------------
-//
-TInt CThumbAGProcessor::MountTimerCallBack(TAny* aAny)
- {
- TN_DEBUG1( "CThumbAGProcessor::MountTimerCallBack()");
- OstTrace0( TRACE_NORMAL, CTHUMBAGPROCESSOR_MOUNTTIMERCALLBACK, "CThumbAGProcessor::MountTimerCallBack" );
- CThumbAGProcessor* self = static_cast<CThumbAGProcessor*>( aAny );
-
- self->iMountTimer->Cancel();
-
- //activate timeout if overall or mmc harvestig is not active
- if(!self->iHarvesting && !self->iMMCHarvesting )
- {
- self->ActivateAO();
- }
-
- return KErrNone; // Return value ignored by CPeriodic
- }
-
-// ---------------------------------------------------------------------------
-// CThumbAGProcessor::SetGenerationItemAction()
-// ---------------------------------------------------------------------------
-//
-void CThumbAGProcessor::SetGenerationItemAction( TThumbnailGenerationItem& aGenerationItem, TThumbnailGenerationItemType aItemType )
- {
- switch( aItemType )
- {
- case EGenerationItemTypeAudio:
- aGenerationItem.iItemAction = EGenerationItemAction2ndAdd;
- break;
- case EGenerationItemTypeCamera:
- aGenerationItem.iItemAction = EGenerationItemAction2ndAdd;
- aGenerationItem.iPlaceholder = ETrue;
- break;
- case EGenerationItemTypeImage:
- aGenerationItem.iItemAction = EGenerationItemActionAdd;
- break;
- case EGenerationItemTypeVideo:
- //S^3 EGenerationItemActionAdd
- //S^4 EGenerationItemAction2ndAdd
- aGenerationItem.iItemAction = EGenerationItemAction2ndAdd;
- break;
- default:
- aGenerationItem.iItemAction = EGenerationItemActionResolveType;
- }
- }
-
-// ---------------------------------------------------------------------------
-// CThumbAGProcessor::SetGenerationItemType()
-// ---------------------------------------------------------------------------
-//
-void CThumbAGProcessor::SetGenerationItemType( TThumbnailGenerationItem& aGenerationItem, const TDefId aDefId )
- {
- if(aDefId == iImageObjectDef->Id())
- {
- aGenerationItem.iItemType = EGenerationItemTypeImage;
- }
- else if(aDefId == iAudioObjectDef->Id())
- {
- aGenerationItem.iItemType = EGenerationItemTypeAudio;
- }
- else if(aDefId == iVideoObjectDef->Id())
- {
- aGenerationItem.iItemType = EGenerationItemTypeVideo;
- }
- else
- {
- aGenerationItem.iItemType = EGenerationItemTypeUnknown;
- }
-
- SetGenerationItemAction( aGenerationItem, aGenerationItem.iItemType );
- }
-
-
-// -----------------------------------------------------------------------------
-// CThumbAGProcessor::AppendProcessingQueue()
-// -----------------------------------------------------------------------------
-//
-void CThumbAGProcessor::AppendProcessingQueue( TThumbnailGenerationItem& item )
- {
-
- TInt itemIndex = iGenerationQueue.FindInOrder( item, Compare );
-
- if(itemIndex >= 0)
- {
- iGenerationQueue[itemIndex].iPlaceholder = item.iPlaceholder;
- iGenerationQueue[itemIndex].iItemType = item.iItemType;
- iGenerationQueue[itemIndex].iItemAction = item.iItemAction;
- }
- else
- {
- iGenerationQueue.InsertInOrder(item, Compare);
- }
- }
-
-
-// End of file