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

Commit 642a8eac authored by Andreas Huber's avatar Andreas Huber Committed by Android (Google) Code Review
Browse files

Merge "If we basically finished the preparation phase and are only buffering...

Merge "If we basically finished the preparation phase and are only buffering enough data to start playback, cancel this early on reset()."
parents a3c740f6 6a05c9e9
Loading
Loading
Loading
Loading
+10 −2
Original line number Diff line number Diff line
@@ -412,6 +412,12 @@ void AwesomePlayer::reset_l() {
            LOGI("interrupting the connection process");
            mConnectingDataSource->disconnect();
        }

        if (mFlags & PREPARING_CONNECTED) {
            // We are basically done preparing, we're just buffering
            // enough data to start playback, we can safely interrupt that.
            finishAsyncPrepare_l();
        }
    }

    while (mFlags & PREPARING) {
@@ -1625,7 +1631,7 @@ void AwesomePlayer::abortPrepare(status_t err) {
    }

    mPrepareResult = err;
    mFlags &= ~(PREPARING|PREPARE_CANCELLED);
    mFlags &= ~(PREPARING|PREPARE_CANCELLED|PREPARING_CONNECTED);
    mAsyncPrepareEvent = NULL;
    mPreparedCondition.broadcast();
}
@@ -1673,6 +1679,8 @@ void AwesomePlayer::onPrepareAsyncEvent() {
        }
    }

    mFlags |= PREPARING_CONNECTED;

    if (mCachedSource != NULL || mRTSPController != NULL) {
        postBufferingEvent_l();
    } else {
@@ -1692,7 +1700,7 @@ void AwesomePlayer::finishAsyncPrepare_l() {
    }

    mPrepareResult = OK;
    mFlags &= ~(PREPARING|PREPARE_CANCELLED);
    mFlags &= ~(PREPARING|PREPARE_CANCELLED|PREPARING_CONNECTED);
    mFlags |= PREPARED;
    mAsyncPrepareEvent = NULL;
    mPreparedCondition.broadcast();
+5 −0
Original line number Diff line number Diff line
@@ -111,6 +111,11 @@ private:
        AUDIO_AT_EOS        = 256,
        VIDEO_AT_EOS        = 512,
        AUTO_LOOPING        = 1024,

        // We are basically done preparing but are currently buffering
        // sufficient data to begin playback and finish the preparation phase
        // for good.
        PREPARING_CONNECTED = 2048,
    };

    mutable Mutex mLock;