devsoundextensions/audiorouting/Output/AudioOutputProxy/src/AudioOutputProxy.cpp
branchRCL_3
changeset 8 bc06d8566074
parent 0 40261b775718
child 40 f429a0a2075b
child 54 b68f3e90dca1
--- a/devsoundextensions/audiorouting/Output/AudioOutputProxy/src/AudioOutputProxy.cpp	Fri Mar 12 15:50:33 2010 +0200
+++ b/devsoundextensions/audiorouting/Output/AudioOutputProxy/src/AudioOutputProxy.cpp	Mon Mar 15 12:46:07 2010 +0200
@@ -43,6 +43,7 @@
     iOutput        = ENoPreference;
     iDefaultOutput = ENoPreference;
     iSecureOutput  = EFalse;
+    iRegistered = EFalse;
     }
 
 // Two-phased constructor.
@@ -140,14 +141,22 @@
 //
 void CAudioOutputProxy::RegisterObserverL(MAudioOutputObserver& aObserver)
 	{
-	iRegistered = ETrue;
-	iObserver = &aObserver;
-	delete iAsyncSender;
-	iAsyncSender = NULL;
+	if(iRegistered)
+		{
+	       iObserver = &aObserver;
+	       iAsyncSender->SetObserver(aObserver);
+	       }
+	else
+		{
+		iRegistered = ETrue;
+		iObserver = &aObserver;
+		delete iAsyncSender;
+		iAsyncSender = NULL;
 
-	iAsyncSender = CAudioOutputProxyAO::NewL(this,aObserver,iCustomCommand);
-	iAsyncSender->SetRegisterFlag(ETrue);
-	iAsyncSender->SendAsyncMessage(iMessageHandler,EAofRegisterObserver);
+		iAsyncSender = CAudioOutputProxyAO::NewL(this,aObserver,iCustomCommand);
+		iAsyncSender->SetRegisterFlag(ETrue);
+		iAsyncSender->SendAsyncMessage(iMessageHandler,EAofRegisterObserver);
+		}
 	}
 
 // ---------------------------------------------------------