os/mm/devsound/a3fdevsound/src/mmfdevsoundserver/mmfdevsoundserverstart.cpp
author sl@SLION-WIN7.fritz.box
Fri, 15 Jun 2012 03:10:57 +0200
changeset 0 bde4ae8d615e
permissions -rw-r--r--
First public contribution.
sl@0
     1
sl@0
     2
// Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
sl@0
     3
// All rights reserved.
sl@0
     4
// This component and the accompanying materials are made available
sl@0
     5
// under the terms of "Eclipse Public License v1.0"
sl@0
     6
// which accompanies this distribution, and is available
sl@0
     7
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
sl@0
     8
//
sl@0
     9
// Initial Contributors:
sl@0
    10
// Nokia Corporation - initial contribution.
sl@0
    11
//
sl@0
    12
// Contributors:
sl@0
    13
//
sl@0
    14
// Description:
sl@0
    15
//
sl@0
    16
sl@0
    17
#include <e32std.h>
sl@0
    18
#include <ecom/ecom.h>
sl@0
    19
#include "mmfdevsoundserverstart.h"
sl@0
    20
#include "mmfdevsoundserver.h"
sl@0
    21
sl@0
    22
sl@0
    23
//OTHER EXPORTED FUNCTIONS 
sl@0
    24
sl@0
    25
/**
sl@0
    26
 	CMMFDevSoundServer::StartThread
sl@0
    27
 	Thread entry-point function.
sl@0
    28
 	The TServerStart objects is passed as the thread parameter
sl@0
    29
 */
sl@0
    30
EXPORT_C TInt CMMFDevSoundServer::StartThread(TAny* aParms)
sl@0
    31
	{
sl@0
    32
	TInt err = KErrNone;
sl@0
    33
#ifdef SYMBIAN_USE_SEPARATE_HEAPS
sl@0
    34
	__UHEAP_MARK;
sl@0
    35
#endif
sl@0
    36
	TDevSoundServerStart* start = reinterpret_cast<TDevSoundServerStart*>(aParms);
sl@0
    37
	CTrapCleanup* cleanup = CTrapCleanup::New();
sl@0
    38
	if (!cleanup)
sl@0
    39
		{
sl@0
    40
		err = KErrNoMemory;
sl@0
    41
		}
sl@0
    42
	else
sl@0
    43
		{
sl@0
    44
		TRAP(err, StartThreadL(*start));
sl@0
    45
		}
sl@0
    46
	delete cleanup;
sl@0
    47
	
sl@0
    48
	REComSession::FinalClose();
sl@0
    49
#ifdef SYMBIAN_USE_SEPARATE_HEAPS
sl@0
    50
	__UHEAP_MARKEND;
sl@0
    51
#endif
sl@0
    52
	return err;
sl@0
    53
	}
sl@0
    54
sl@0
    55
void CMMFDevSoundServer::StartThreadL(TDevSoundServerStart& aStart)
sl@0
    56
	{
sl@0
    57
	CActiveScheduler* sched = new(ELeave) CActiveScheduler;
sl@0
    58
	CleanupStack::PushL(sched);
sl@0
    59
	
sl@0
    60
	CActiveScheduler::Install(sched);
sl@0
    61
	CMMFDevSoundServer* server = CMMFDevSoundServer::NewL(aStart.iAudioServer, aStart.iProcessId);
sl@0
    62
	CleanupStack::PushL(server);
sl@0
    63
	
sl@0
    64
	//Rename and set the priority of devsound server
sl@0
    65
	RenamePrioritizeServer();
sl@0
    66
	
sl@0
    67
	aStart.iDevSoundServerHandle = server->Server();
sl@0
    68
	// Sync with the client and enter the active scheduler
sl@0
    69
	RThread::Rendezvous(KErrNone);
sl@0
    70
	sched->Start();
sl@0
    71
sl@0
    72
	CleanupStack::PopAndDestroy(2, sched); // sched, server
sl@0
    73
	}
sl@0
    74
sl@0
    75
//  End of File