summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel Mira <samuel.mira@qt.io>2021-09-14 16:14:28 +0300
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2021-09-17 10:00:23 +0000
commit1c33f92f40edc3ab2a81b59cba87d1d08484d25b (patch)
tree0f929af68d3e848d14192919061f098decb73776
parenta25fe5bf2eab924125963e3b2b004ac553e3c86f (diff)
downloadqtmultimedia-1c33f92f40edc3ab2a81b59cba87d1d08484d25b.tar.gz
Fix Playback issue on Android
The android media player did not change when a new source was set because in QtAndroidMediaPlayer setDataSource, if the state was not Idle, would fail silently without changing the source. Now if the state is not Idle it will reset the mediaplayer. Fixes: QTBUG-96456 Change-Id: I7b06524ac4a341140e08e44cde2d75211f1c7a9e Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io> (cherry picked from commit 96a708759938a2f55dea3b6f02cd394334654818) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-rw-r--r--src/android/jar/src/org/qtproject/qt/android/multimedia/QtAndroidMediaPlayer.java52
1 files changed, 26 insertions, 26 deletions
diff --git a/src/android/jar/src/org/qtproject/qt/android/multimedia/QtAndroidMediaPlayer.java b/src/android/jar/src/org/qtproject/qt/android/multimedia/QtAndroidMediaPlayer.java
index fb1ba3088..f332c2db7 100644
--- a/src/android/jar/src/org/qtproject/qt/android/multimedia/QtAndroidMediaPlayer.java
+++ b/src/android/jar/src/org/qtproject/qt/android/multimedia/QtAndroidMediaPlayer.java
@@ -263,13 +263,23 @@ public class QtAndroidMediaPlayer
private void init()
{
- if (mMediaPlayer == null) {
- mMediaPlayer = new MediaPlayer();
- setState(State.Idle);
- // Make sure the new media player has the volume that was set on the QMediaPlayer
- setVolumeHelper(mMuted ? 0 : mVolume);
- setAudioAttributes(mMediaPlayer, mAudioAttributes);
- }
+ if (mMediaPlayer != null)
+ return;
+
+ mMediaPlayer = new MediaPlayer();
+ setState(State.Idle);
+ // Make sure the new media player has the volume that was set on the QMediaPlayer
+ setVolumeHelper(mMuted ? 0 : mVolume);
+ setAudioAttributes(mMediaPlayer, mAudioAttributes);
+
+ mMediaPlayer.setOnBufferingUpdateListener(new MediaPlayerBufferingListener());
+ mMediaPlayer.setOnCompletionListener(new MediaPlayerCompletionListener());
+ mMediaPlayer.setOnInfoListener(new MediaPlayerInfoListener());
+ mMediaPlayer.setOnSeekCompleteListener(new MediaPlayerSeekCompleteListener());
+ mMediaPlayer.setOnVideoSizeChangedListener(new MediaPlayerVideoSizeChangedListener());
+ mMediaPlayer.setOnErrorListener(new MediaPlayerErrorListener());
+ mMediaPlayer.setOnPreparedListener(new MediaPlayerPreparedListener());
+ mMediaPlayer.setOnTimedTextListener(new MediaPlayerTimedTextListener());
}
public void start()
@@ -387,20 +397,17 @@ public class QtAndroidMediaPlayer
public void setDataSource(final String path)
{
- if ((mState & State.Uninitialized) != 0)
+ if (mState == State.Uninitialized)
init();
- if ((mState & State.Idle) == 0)
- return;
+ if (mState != State.Idle)
+ reset();
- mMediaPlayer.setOnBufferingUpdateListener(new MediaPlayerBufferingListener());
- mMediaPlayer.setOnCompletionListener(new MediaPlayerCompletionListener());
- mMediaPlayer.setOnInfoListener(new MediaPlayerInfoListener());
- mMediaPlayer.setOnSeekCompleteListener(new MediaPlayerSeekCompleteListener());
- mMediaPlayer.setOnVideoSizeChangedListener(new MediaPlayerVideoSizeChangedListener());
- mMediaPlayer.setOnErrorListener(new MediaPlayerErrorListener());
- mMediaPlayer.setOnPreparedListener(new MediaPlayerPreparedListener());
- mMediaPlayer.setOnTimedTextListener(new MediaPlayerTimedTextListener());
+ // mediaplayer can only setDataSource if it is on State.Idle
+ if (mState != State.Idle) {
+ Log.w(TAG, "Trying to set data source of a media player that is not idle!");
+ return;
+ }
if (mSurfaceHolder != null)
mMediaPlayer.setDisplay(mSurfaceHolder);
@@ -675,14 +682,7 @@ public class QtAndroidMediaPlayer
public void reset()
{
- if ((mState & (State.Idle
- | State.Initialized
- | State.Prepared
- | State.Started
- | State.Paused
- | State.Stopped
- | State.PlaybackCompleted
- | State.Error)) == 0) {
+ if (mState == State.Uninitialized) {
return;
}