javauis/mmapi_akn/baseline/src/cmmammfplayerbase.cpp
branchRCL_3
changeset 60 6c158198356e
parent 46 4376525cdefb
equal deleted inserted replaced
59:e5618cc85d74 60:6c158198356e
   144     if (aPostEvent)
   144     if (aPostEvent)
   145     {
   145     {
   146         // inform java side
   146         // inform java side
   147         PostLongEvent(CMMAPlayerEvent::EStarted, iStartedEventTime);
   147         PostLongEvent(CMMAPlayerEvent::EStarted, iStartedEventTime);
   148     }
   148     }
       
   149     
   149     ChangeState(EStarted);
   150     ChangeState(EStarted);
   150     PostActionCompleted(KErrNone);   // java start return
   151     PostActionCompleted(KErrNone);   // java start return
   151 }
   152 }
   152 
   153 
   153 void CMMAMMFPlayerBase::StopL(TBool aPostEvent)
   154 void CMMAMMFPlayerBase::StopL(TBool aPostEvent)
   157         TInt64 time;
   158         TInt64 time;
   158         GetMediaTime(&time);
   159         GetMediaTime(&time);
   159         iStartedEventTime = time;
   160         iStartedEventTime = time;
   160 
   161 
   161         TInt err = KErrNone;
   162         TInt err = KErrNone;
   162         // AAC controller does not support multiple
   163         DEBUG("CMMAMMFPlayerBase::StopL: Position not zero, pausing");
   163         // calls to pause but leave with KErrNotReady.
   164         err = iController.Pause();
   164         // That error is dismissed as player should
   165         
   165         // be paused already in that case.
       
   166         if (time == 0)
       
   167         {
       
   168             DEBUG("CMMAMMFPlayerBase::StopL: Position is zero, stopping");
       
   169             // Normally pause would be called, but if
       
   170             // current time is zero, Stop is called instead.
       
   171             // This is done because video playback breaks
       
   172             // if pause is called between events
       
   173             // KMMFEventCategoryVideoLoadingStarted and
       
   174             // KMMFEventCategoryVideoLoadingCompleted
       
   175             // (no wurther events are delivered altough
       
   176             // playback continues fine).
       
   177             // However calling Stop is tolerated in that
       
   178             // situation.
       
   179             err = iController.Stop();
       
   180             if (err == KErrNone)
       
   181             {
       
   182                 err = iController.Prime();
       
   183             }
       
   184         }
       
   185         else
       
   186         {
       
   187             DEBUG("CMMAMMFPlayerBase::StopL: Position not zero, pausing");
       
   188             err = iController.Pause();
       
   189         }
       
   190 
       
   191         if ((err != KErrNone) && (err != KErrNotReady))
   166         if ((err != KErrNone) && (err != KErrNotReady))
   192         {
   167         {
   193             DEBUG_INT("CMMAMMFPlayerBase::StopL: pause/stop failed %d, leaving", err);
   168             DEBUG_INT("CMMAMMFPlayerBase::StopL: pause/stop failed %d, leaving", err);
   194             User::Leave(err);
   169             User::Leave(err);
   195         }
   170         }