diff options
Diffstat (limited to 'media/libmediaplayerservice')
-rw-r--r-- | media/libmediaplayerservice/MediaPlayerService.cpp | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/media/libmediaplayerservice/MediaPlayerService.cpp b/media/libmediaplayerservice/MediaPlayerService.cpp index 58e47235..63463639 100644 --- a/media/libmediaplayerservice/MediaPlayerService.cpp +++ b/media/libmediaplayerservice/MediaPlayerService.cpp @@ -1042,9 +1042,14 @@ void MediaPlayerService::Client::notify( void* cookie, int msg, int ext1, int ext2, const Parcel *obj) { Client* client = static_cast<Client*>(cookie); + if (client == NULL) { + return; + } + sp<IMediaPlayerClient> c; { Mutex::Autolock l(client->mLock); + c = client->mClient; if (msg == MEDIA_PLAYBACK_COMPLETE && client->mNextClient != NULL) { if (client->mAudioOutput != NULL) client->mAudioOutput->switchToNextOutput(); @@ -1065,8 +1070,11 @@ void MediaPlayerService::Client::notify( // also access mMetadataUpdated and clears it. client->addNewMetadataUpdate(metadata_type); } - ALOGV("[%d] notify (%p, %d, %d, %d)", client->mConnId, cookie, msg, ext1, ext2); - client->mClient->notify(msg, ext1, ext2, obj); + + if (c != NULL) { + ALOGV("[%d] notify (%p, %d, %d, %d)", client->mConnId, cookie, msg, ext1, ext2); + c->notify(msg, ext1, ext2, obj); + } } |