diff options
author | Dave Burke <daveburke@google.com> | 2011-09-06 13:06:20 -0700 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2011-09-06 13:06:20 -0700 |
commit | 2e3319a62be898e1f0405025d24962fc6a1a3f07 (patch) | |
tree | 160e7bf7076d06d64f9f00ada5ff1d2ce24234e3 /media | |
parent | adc857e80a1045897ebad85e691dc04451d364e3 (diff) | |
parent | 0662067b06658a4a56a8416c676f6cce8ccddb53 (diff) | |
download | frameworks_av-2e3319a62be898e1f0405025d24962fc6a1a3f07.zip frameworks_av-2e3319a62be898e1f0405025d24962fc6a1a3f07.tar.gz frameworks_av-2e3319a62be898e1f0405025d24962fc6a1a3f07.tar.bz2 |
Merge "Handle setDataSource failures properly. #5261671"
Diffstat (limited to 'media')
-rw-r--r-- | media/libmedia/mediaplayer.cpp | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/media/libmedia/mediaplayer.cpp b/media/libmedia/mediaplayer.cpp index 0fc6a8a..37a82e9 100644 --- a/media/libmedia/mediaplayer.cpp +++ b/media/libmedia/mediaplayer.cpp @@ -148,10 +148,10 @@ status_t MediaPlayer::setDataSource( const sp<IMediaPlayerService>& service(getMediaPlayerService()); if (service != 0) { sp<IMediaPlayer> player(service->create(getpid(), this, mAudioSessionId)); - err = attachNewPlayer(player); - if (err == NO_ERROR) { - err = mPlayer->setDataSource(url, headers); + if (NO_ERROR != player->setDataSource(url, headers)) { + player.clear(); } + err = attachNewPlayer(player); } } return err; @@ -164,10 +164,10 @@ status_t MediaPlayer::setDataSource(int fd, int64_t offset, int64_t length) const sp<IMediaPlayerService>& service(getMediaPlayerService()); if (service != 0) { sp<IMediaPlayer> player(service->create(getpid(), this, mAudioSessionId)); - err = attachNewPlayer(player); - if (err == NO_ERROR) { - err = mPlayer->setDataSource(fd, offset, length); + if (NO_ERROR != player->setDataSource(fd, offset, length)) { + player.clear(); } + err = attachNewPlayer(player); } return err; } @@ -179,10 +179,10 @@ status_t MediaPlayer::setDataSource(const sp<IStreamSource> &source) const sp<IMediaPlayerService>& service(getMediaPlayerService()); if (service != 0) { sp<IMediaPlayer> player(service->create(getpid(), this, mAudioSessionId)); - err = attachNewPlayer(player); - if (err == NO_ERROR) { - err = mPlayer->setDataSource(source); + if (NO_ERROR != player->setDataSource(source)) { + player.clear(); } + err = attachNewPlayer(player); } return err; } |