diff -r 6752808b2036 -r 646a02f170b9 metadataengine/client/src/mdenotifierao.cpp --- a/metadataengine/client/src/mdenotifierao.cpp Fri Feb 19 23:14:48 2010 +0200 +++ b/metadataengine/client/src/mdenotifierao.cpp Fri Mar 12 15:44:28 2010 +0200 @@ -238,74 +238,64 @@ case EObjectNotifyAdd: { MMdEObjectObserver* obs = static_cast( iObserver ); - obs->HandleObjectNotification( iSessionImpl, ENotifyAdd, iIdArray ); - iIdArray.Reset(); + obs->HandleObjectNotification( iSessionImpl, ENotifyAdd, iIdArray ); break; } case EObjectNotifyModify: { MMdEObjectObserver* obs = static_cast( iObserver ); - obs->HandleObjectNotification( iSessionImpl, ENotifyModify, iIdArray ); - iIdArray.Reset(); + obs->HandleObjectNotification( iSessionImpl, ENotifyModify, iIdArray ); break; } case EObjectNotifyRemove: { MMdEObjectObserver* obs = static_cast( iObserver ); - obs->HandleObjectNotification( iSessionImpl, ENotifyRemove, iIdArray ); - iIdArray.Reset(); + obs->HandleObjectNotification( iSessionImpl, ENotifyRemove, iIdArray ); break; } case EObjectNotifyPresent: { MMdEObjectPresentObserver* obs = static_cast( iObserver ); - obs->HandleObjectPresentNotification( iSessionImpl, ETrue, iIdArray ); - iIdArray.Reset(); + obs->HandleObjectPresentNotification( iSessionImpl, ETrue, iIdArray ); break; } case EObjectNotifyNotPresent: { MMdEObjectPresentObserver* obs = static_cast( iObserver ); - obs->HandleObjectPresentNotification( iSessionImpl, EFalse, iIdArray ); - iIdArray.Reset(); + obs->HandleObjectPresentNotification( iSessionImpl, EFalse, iIdArray ); break; } case ERelationNotifyAdd: { MMdERelationObserver* obs = static_cast( iObserver ); - obs->HandleRelationNotification( iSessionImpl, ENotifyAdd, iIdArray ); - iIdArray.Reset(); + obs->HandleRelationNotification( iSessionImpl, ENotifyAdd, iIdArray ); break; } case ERelationNotifyModify: { MMdERelationObserver* obs = static_cast( iObserver ); - obs->HandleRelationNotification( iSessionImpl, ENotifyModify, iIdArray ); - iIdArray.Reset(); + obs->HandleRelationNotification( iSessionImpl, ENotifyModify, iIdArray ); break; } case ERelationNotifyRemove: { MMdERelationObserver* obs = static_cast( iObserver ); - obs->HandleRelationNotification( iSessionImpl, ENotifyRemove, iIdArray ); - iIdArray.Reset(); + obs->HandleRelationNotification( iSessionImpl, ENotifyRemove, iIdArray ); break; } case ERelationNotifyPresent: { MMdERelationPresentObserver* obs = static_cast( iObserver ); - obs->HandleRelationPresentNotification( iSessionImpl, ETrue, iIdArray ); - iIdArray.Reset(); + obs->HandleRelationPresentNotification( iSessionImpl, ETrue, iIdArray ); break; } case ERelationNotifyNotPresent: { MMdERelationPresentObserver* obs = static_cast( iObserver ); - obs->HandleRelationPresentNotification( iSessionImpl, EFalse, iIdArray ); - iIdArray.Reset(); + obs->HandleRelationPresentNotification( iSessionImpl, EFalse, iIdArray ); break; } @@ -313,22 +303,21 @@ { MMdERelationItemObserver* obs = static_cast( iObserver ); obs->HandleRelationItemNotification( iSessionImpl, ENotifyRemove, iRelationItemArray ); - iRelationItemArray.Reset(); + iRelationItemArray.Reset(); + iRelationItemArray.Compress(); break; } case EEventNotifyAdd: { MMdEEventObserver* obs = static_cast( iObserver ); - obs->HandleEventNotification( iSessionImpl, ENotifyAdd, iIdArray); - iIdArray.Reset(); + obs->HandleEventNotification( iSessionImpl, ENotifyAdd, iIdArray); break; } case EEventNotifyRemove: { MMdEEventObserver* obs = static_cast( iObserver ); - obs->HandleEventNotification( iSessionImpl, ENotifyRemove, iIdArray); - iIdArray.Reset(); + obs->HandleEventNotification( iSessionImpl, ENotifyRemove, iIdArray); break; } @@ -343,6 +332,8 @@ // no observer to call - this should be skipped on server side! break; } + iIdArray.Reset(); + iIdArray.Compress(); } void CMdENotifierAO::DecodeIdBufferL() @@ -356,6 +347,7 @@ __ASSERT_DEBUG( iNamespaceDefId == itemIds.iNamespaceDefId, User::Panic( _L("Incorrect namespaceDef from returned items!"), KErrCorrupt ) ); iDataBuffer->PositionL( itemIds.iObjectIds.iPtr.iOffset ); + iIdArray.ReserveL( itemIds.iObjectIds.iPtr.iCount ); for( TUint32 i = 0; i < itemIds.iObjectIds.iPtr.iCount; ++i ) { TItemId id; @@ -374,12 +366,13 @@ CMdENamespaceDef& namespaceDef = iSessionImpl.GetNamespaceDefL( iNamespaceDefId ); iDataBuffer->PositionL( items.iRelations.iPtr.iOffset ); TMdERelation relation; + iRelationItemArray.ReserveL( items.iRelations.iPtr.iCount ); for (TInt i = 0; i < items.iRelations.iPtr.iCount; ++i ) { relation.DeSerializeL( *iDataBuffer, namespaceDef ); if ( relation.Id() ) { - iRelationItemArray.Append( relation ); + iRelationItemArray.AppendL( relation ); } } }