Loading media/libmediaplayerservice/MediaPlayerService.cpp +21 −4 Original line number Original line Diff line number Diff line Loading @@ -1318,16 +1318,33 @@ void MediaPlayerService::Client::notify( } } sp<IMediaPlayerClient> c; sp<IMediaPlayerClient> c; sp<Client> nextClient; status_t errStartNext = NO_ERROR; { { Mutex::Autolock l(client->mLock); Mutex::Autolock l(client->mLock); c = client->mClient; c = client->mClient; if (msg == MEDIA_PLAYBACK_COMPLETE && client->mNextClient != NULL) { if (msg == MEDIA_PLAYBACK_COMPLETE && client->mNextClient != NULL) { nextClient = client->mNextClient; if (client->mAudioOutput != NULL) if (client->mAudioOutput != NULL) client->mAudioOutput->switchToNextOutput(); client->mAudioOutput->switchToNextOutput(); client->mNextClient->start(); if (client->mNextClient->mClient != NULL) { errStartNext = nextClient->start(); client->mNextClient->mClient->notify( } MEDIA_INFO, MEDIA_INFO_STARTED_AS_NEXT, 0, obj); } if (nextClient != NULL) { sp<IMediaPlayerClient> nc; { Mutex::Autolock l(nextClient->mLock); nc = nextClient->mClient; } if (nc != NULL) { if (errStartNext == NO_ERROR) { nc->notify(MEDIA_INFO, MEDIA_INFO_STARTED_AS_NEXT, 0, obj); } else { nc->notify(MEDIA_ERROR, MEDIA_ERROR_UNKNOWN , 0, obj); ALOGE("gapless:start playback for next track failed, err(%d)", errStartNext); } } } } } } Loading Loading
media/libmediaplayerservice/MediaPlayerService.cpp +21 −4 Original line number Original line Diff line number Diff line Loading @@ -1318,16 +1318,33 @@ void MediaPlayerService::Client::notify( } } sp<IMediaPlayerClient> c; sp<IMediaPlayerClient> c; sp<Client> nextClient; status_t errStartNext = NO_ERROR; { { Mutex::Autolock l(client->mLock); Mutex::Autolock l(client->mLock); c = client->mClient; c = client->mClient; if (msg == MEDIA_PLAYBACK_COMPLETE && client->mNextClient != NULL) { if (msg == MEDIA_PLAYBACK_COMPLETE && client->mNextClient != NULL) { nextClient = client->mNextClient; if (client->mAudioOutput != NULL) if (client->mAudioOutput != NULL) client->mAudioOutput->switchToNextOutput(); client->mAudioOutput->switchToNextOutput(); client->mNextClient->start(); if (client->mNextClient->mClient != NULL) { errStartNext = nextClient->start(); client->mNextClient->mClient->notify( } MEDIA_INFO, MEDIA_INFO_STARTED_AS_NEXT, 0, obj); } if (nextClient != NULL) { sp<IMediaPlayerClient> nc; { Mutex::Autolock l(nextClient->mLock); nc = nextClient->mClient; } if (nc != NULL) { if (errStartNext == NO_ERROR) { nc->notify(MEDIA_INFO, MEDIA_INFO_STARTED_AS_NEXT, 0, obj); } else { nc->notify(MEDIA_ERROR, MEDIA_ERROR_UNKNOWN , 0, obj); ALOGE("gapless:start playback for next track failed, err(%d)", errStartNext); } } } } } } Loading