devsoundextensions/audiorouting/Output/AudioOutputProxy/src/AudioOutputProxy.cpp
changeset 13 efebd1779a59
parent 0 40261b775718
child 40 f429a0a2075b
child 54 b68f3e90dca1
--- a/devsoundextensions/audiorouting/Output/AudioOutputProxy/src/AudioOutputProxy.cpp	Tue Feb 02 01:56:55 2010 +0200
+++ b/devsoundextensions/audiorouting/Output/AudioOutputProxy/src/AudioOutputProxy.cpp	Fri Apr 16 16:34:49 2010 +0300
@@ -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);
+		}
 	}
 
 // ---------------------------------------------------------