diff -r 171e07ac910f -r c8156a91d13c musichomescreen_multiview/musiccontentpublisher/src/pluginmanager.cpp --- a/musichomescreen_multiview/musiccontentpublisher/src/pluginmanager.cpp Mon Mar 15 12:40:11 2010 +0200 +++ b/musichomescreen_multiview/musiccontentpublisher/src/pluginmanager.cpp Wed Mar 31 21:26:33 2010 +0300 @@ -103,18 +103,24 @@ } // --------------------------------------------------------------------------- -// Retuns a plugin by UID +// Retuns a plugin by Implementation UID // --------------------------------------------------------------------------- // TAny* CPluginManager::GetImplementation( TUid aUid ) { - TInt32 key = aUid.iUid; TAny* ret= NULL; - TAny** imp= NULL; - imp = iPluginMap.Find( key ); - if ( imp ) + THashMapIter iter( iPluginMap ); + const TInt32* pluginInstanceKey( NULL ); + TAny*const* ptr = iter.NextValue(); + while ( ptr ) { - ret = *imp; + pluginInstanceKey = iter.CurrentKey(); + if (REComSession::GetImplementationUidL( TUid::Uid( *pluginInstanceKey ) ) == aUid) + { + ret = *ptr; + break; + } + ptr = iter.NextValue(); } return ret; } @@ -165,16 +171,16 @@ { TUid current_plugin = infoArray[i]->ImplementationUid(); TAny* plug( NULL ); - TUid temp; + TUid instanceKey; TInt err( KErrNone ); TRAP( err, plug = REComSession::CreateImplementationL( current_plugin, - temp, + instanceKey, iParameter ) ); if ( err == KErrNone && plug ) { CleanupStack::PushL( plug ); - TInt32 key = current_plugin.iUid; + TInt32 key = instanceKey.iUid; iPluginMap.InsertL( key, plug ); CleanupStack::Pop( plug ); } @@ -194,16 +200,16 @@ THashMapIter iter( iPluginMap ); TAny*const* ptr = iter.NextValue(); CBase* plug( NULL ); - const TInt32* pluginUid( NULL ); + const TInt32* pluginInstanceKey( NULL ); while ( ptr ) { plug = static_cast( *ptr ); delete plug; plug = NULL; - pluginUid = iter.CurrentKey(); - REComSession::DestroyedImplementation( TUid::Uid( *pluginUid ) ); + pluginInstanceKey = iter.CurrentKey(); + REComSession::DestroyedImplementation( TUid::Uid( *pluginInstanceKey ) ); ptr = iter.NextValue(); - pluginUid = NULL; + pluginInstanceKey = NULL; } MPX_DEBUG1("CPluginManager::CleanPluginsTable --->"); }