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(); |