Update contrib.
1 // Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
2 // All rights reserved.
3 // This component and the accompanying materials are made available
4 // under the terms of "Eclipse Public License v1.0"
5 // which accompanies this distribution, and is available
6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
8 // Initial Contributors:
9 // Nokia Corporation - initial contribution.
19 #include "mmfaudioserverfactory.h"
20 #include <a3f/mmfaudiosvrservice.hrh>
21 #include <mm/mmpluginutils.h>
22 #include <mm/mmcleanup.h>
26 * CMMFAudioServerFactory::CMMFAudioServerFactory
27 * C++ default constructor.
29 CMMFAudioServerFactory::CMMFAudioServerFactory()
34 * CMMFAudioServerFactory::ConstructL
35 * Symbian 2nd phase constructor.
37 void CMMFAudioServerFactory::ConstructL()
39 TUid KAudioServiceInterfaceDefinitionUid = {KUidA3fAudioServicePlugin};
40 RImplInfoPtrArray ecomArray;
41 CleanupResetAndDestroyPushL(ecomArray);
43 MmPluginUtils::FindImplementationsL(KAudioServiceInterfaceDefinitionUid, ecomArray);
45 TInt count = ecomArray.Count();
47 for (TInt i=0; i<count; i++)
50 TUid implementationUid = ecomArray[i]->ImplementationUid();
52 TAny* ptr = REComSession::CreateImplementationL( implementationUid,destructorKey,NULL);
53 MAudioSvrService* audioservice = (static_cast <MAudioSvrService*>(ptr));
54 audioservice->PassDestructorKey(destructorKey);
55 CleanupReleasePushL(*audioservice);
56 iAudioServList.AppendL(audioservice);
57 CleanupStack::Pop(audioservice);
58 User::LeaveIfError(audioservice->Load());
61 CleanupStack::PopAndDestroy(&ecomArray);
64 // -----------------------------------------------------------------------------
65 // CMMFAudioServerFactory::NewL
66 // Two-phased constructor.
67 // -----------------------------------------------------------------------------
69 EXPORT_C CMMFAudioServerFactory* CMMFAudioServerFactory::NewL()
71 CMMFAudioServerFactory* self = new (ELeave)CMMFAudioServerFactory;
72 CleanupStack::PushL(self);
74 CleanupStack::Pop(self);
79 EXPORT_C CMMFAudioServerFactory::~CMMFAudioServerFactory()
81 TInt audioservicecount = iAudioServList.Count();
82 for(TInt i= 0;i<audioservicecount;i++ )
84 iAudioServList[i]->Release();
86 iAudioServList.Close();
90 * CMMFAudioServerFactory::StartL
91 * Called by Audio Server when Audio Server is started
92 * (other items were commented in a header).
94 EXPORT_C void CMMFAudioServerFactory::StartL(
95 const CMMFAudioServer& /*aAudioServer*/)
97 TInt audioservicecount = iAudioServList.Count();
98 for (TInt i=0; i<audioservicecount; i++)
100 User::LeaveIfError(iAudioServList[i]->Start());
106 * CMMFAudioServerFactory::Stop
107 * Called by Audio Server when Audio Server is shutting down
109 EXPORT_C void CMMFAudioServerFactory::Stop(
110 const CMMFAudioServer& /*aAudioServer*/)
112 TInt audioservicecount = iAudioServList.Count();
113 for(TInt i= 0;i<audioservicecount;i++ )
115 iAudioServList[i]->Stop();