| Index: media/base/android/media_player_bridge.cc
|
| diff --git a/media/base/android/media_player_bridge.cc b/media/base/android/media_player_bridge.cc
|
| index a9bf7e42900a7528ce284ee442aa8771b468d65a..ed8854f1b688774a4f00eecca7f4790d88a368b7 100644
|
| --- a/media/base/android/media_player_bridge.cc
|
| +++ b/media/base/android/media_player_bridge.cc
|
| @@ -355,6 +355,8 @@ void MediaPlayerBridge::Release() {
|
| if (j_media_player_bridge_.is_null())
|
| return;
|
|
|
| + SetAudible(false);
|
| +
|
| time_update_timer_.Stop();
|
| if (prepared_) {
|
| pending_seek_ = GetCurrentTime();
|
| @@ -371,15 +373,22 @@ void MediaPlayerBridge::Release() {
|
| }
|
|
|
| void MediaPlayerBridge::SetVolume(double volume) {
|
| - if (j_media_player_bridge_.is_null()) {
|
| - volume_ = volume;
|
| + volume_ = volume;
|
| +
|
| + if (j_media_player_bridge_.is_null())
|
| return;
|
| - }
|
|
|
| JNIEnv* env = base::android::AttachCurrentThread();
|
| CHECK(env);
|
| +
|
| + // Update the audible state if we are playing.
|
| + jboolean is_playing = Java_MediaPlayerBridge_isPlaying(
|
| + env, j_media_player_bridge_.obj());
|
| + if (is_playing)
|
| + SetAudible(volume_ > 0);
|
| +
|
| Java_MediaPlayerBridge_setVolume(
|
| - env, j_media_player_bridge_.obj(), volume);
|
| + env, j_media_player_bridge_.obj(), volume_);
|
| }
|
|
|
| void MediaPlayerBridge::OnVideoSizeChanged(int width, int height) {
|
| @@ -389,11 +398,13 @@ void MediaPlayerBridge::OnVideoSizeChanged(int width, int height) {
|
| }
|
|
|
| void MediaPlayerBridge::OnPlaybackComplete() {
|
| + SetAudible(false);
|
| time_update_timer_.Stop();
|
| MediaPlayerAndroid::OnPlaybackComplete();
|
| }
|
|
|
| void MediaPlayerBridge::OnMediaInterrupted() {
|
| + SetAudible(false);
|
| time_update_timer_.Stop();
|
| MediaPlayerAndroid::OnMediaInterrupted();
|
| }
|
| @@ -453,9 +464,13 @@ void MediaPlayerBridge::StartInternal() {
|
| base::TimeDelta::FromMilliseconds(kTimeUpdateInterval),
|
| this, &MediaPlayerBridge::OnTimeUpdateTimerFired);
|
| }
|
| +
|
| + SetAudible(volume_ > 0);
|
| }
|
|
|
| void MediaPlayerBridge::PauseInternal() {
|
| + SetAudible(false);
|
| +
|
| JNIEnv* env = base::android::AttachCurrentThread();
|
| Java_MediaPlayerBridge_pause(env, j_media_player_bridge_.obj());
|
| time_update_timer_.Stop();
|
|
|