mpx/playbackframework/playbackserver/src/mpxplaybackserver.cpp
branchRCL_3
changeset 23 4740b34b83ce
parent 15 d240f0a77280
child 34 e257e2b6459d
equal deleted inserted replaced
19:51035f0751c2 23:4740b34b83ce
   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--;