mpx/playbackframework/playbackserver/src/mpxplaybackserver.cpp
changeset 27 cbb1bfb7ebfb
parent 25 d881023c13eb
child 34 e257e2b6459d
equal deleted inserted replaced
25:d881023c13eb 27:cbb1bfb7ebfb
   194             MPX_DEBUG1("CMPXPlaybackServer::RemoveClient found client");
   194             MPX_DEBUG1("CMPXPlaybackServer::RemoveClient found client");
   195             cl->RemoveClient(index);
   195             cl->RemoveClient(index);
   196             if (cl->ClientCount()==0)
   196             if (cl->ClientCount()==0)
   197                 {
   197                 {
   198                 MPX_DEBUG1("CMPXPlaybackServer::RemoveClient delete a player");
   198                 MPX_DEBUG1("CMPXPlaybackServer::RemoveClient delete a player");
       
   199                 CMPXPlaybackEngine* enginePtr = p; 
   199                 delete p;
   200                 delete p;
   200                 iPlayers.Remove(i);
   201 				//Due to callbacks in PlaybackServer we have to remove engine from the iPlayers array after deleting.
       
   202                 //enginePtr is a invalid pointer as p is already deleted
       
   203     		    //Find the index of deleted engine using its address
       
   204 				TInt engineIndex = iPlayers.Find(enginePtr);
       
   205                 if ( engineIndex != KErrNotFound )
       
   206                     {
       
   207                     iPlayers.Remove(engineIndex);
       
   208                     }
   201                 }
   209                 }
   202             break;
   210             break;
   203             }
   211             }
   204         }
   212         }
   205     iClients--;
   213     iClients--;