Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 687a589a authored by Krystian Turczyn's avatar Krystian Turczyn Committed by Takahiro Aizawa
Browse files

Do not seek when switching to background playback

Seeking during setting surface causes audible sound repetition. The seek
is not necessary if switching to background playback. Therefore the
sound issue can be avoided in such a case.

Bug: 35831966
Test: background playback

Change-Id: I0eecd7206bedb3b56b837bafe1a63f9a3f8c3703
parent b95db756
Loading
Loading
Loading
Loading
+9 −8
Original line number Diff line number Diff line
@@ -666,12 +666,13 @@ void NuPlayer::onMessageReceived(const sp<AMessage> &msg) {
            }

            mDeferredActions.push_back(
                    new FlushDecoderAction(FLUSH_CMD_FLUSH /* audio */,
                    new FlushDecoderAction(
                            (obj != NULL ? FLUSH_CMD_FLUSH : FLUSH_CMD_NONE) /* audio */,
                                           FLUSH_CMD_SHUTDOWN /* video */));

            mDeferredActions.push_back(new SetSurfaceAction(surface));

            if (obj != NULL || mAudioDecoder != NULL) {
            if (obj != NULL) {
                if (mStarted) {
                    // Issue a seek to refresh the video screen only if started otherwise
                    // the extractor may not yet be started and will assert.
@@ -688,13 +689,13 @@ void NuPlayer::onMessageReceived(const sp<AMessage> &msg) {
                // again if possible.
                mDeferredActions.push_back(
                        new SimpleAction(&NuPlayer::performScanSources));
            }

                // After a flush without shutdown, decoder is paused.
                // Don't resume it until source seek is done, otherwise it could
                // start pulling stale data too soon.
                mDeferredActions.push_back(
                        new ResumeDecoderAction(false /* needNotify */));
            }

            processDeferredActions();
            break;