gst_plugins_symbian/gst/devsound/devsoundsinkwrapper.cpp
changeset 13 04c79585b4c7
parent 7 71e347f905f2
child 26 69c7080681bf
--- a/gst_plugins_symbian/gst/devsound/devsoundsinkwrapper.cpp	Thu May 27 13:09:21 2010 +0300
+++ b/gst_plugins_symbian/gst/devsound/devsoundsinkwrapper.cpp	Fri Jun 11 13:57:07 2010 +0300
@@ -42,6 +42,7 @@
     iIlbcDecoderIntfc = NULL;
     iCallbackError = KErrNone;
     iAudioOutput = NULL;
+    iIsBufferToBeFilledDone = TRUE;
     }
 
 /*********************************************************/
@@ -78,6 +79,7 @@
         {
         User::RequestComplete(stat, KErrNone);
         iCallbackError = KErrNone;
+        iIsBufferToBeFilledDone = FALSE;
         }
     else
         {
@@ -613,15 +615,19 @@
 int playinit(DevSoundWrapper *handle)
     {
     TRACE_PRN_FN_ENT;
-
-    ((handle)->AL)->InitialiseActiveListener();
-    handle->eosReceived = false;
+    handle->iCallbackError = KErrNone;
+    if( handle->iIsBufferToBeFilledDone )
+    {
+        ((handle)->AL)->InitialiseActiveListener();
+        handle->eosReceived = false;
+    
+        TRAP(handle->iCallbackError,(handle->dev_sound)->PlayInitL());
+        if (handle->iCallbackError == KErrNone)
+            {
+            ((handle)->AL)->StartActiveScheduler();
+            }    
+    }
 
-    TRAP(handle->iCallbackError,(handle->dev_sound)->PlayInitL());
-    if (handle->iCallbackError == KErrNone)
-        {
-        ((handle)->AL)->StartActiveScheduler();
-        }
 
     TRACE_PRN_IF_ERR(handle->iCallbackError);
     TRACE_PRN_FN_EXT;
@@ -679,7 +685,7 @@
     (handle->dev_sound)->PlayData();
 
     ((handle)->AL)->StartActiveScheduler();
-
+    handle->iIsBufferToBeFilledDone = TRUE;
     TRACE_PRN_FN_EXT;
     return KErrNone;
     }