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

Commit fa6dfdcf authored by Andreas Huber's avatar Andreas Huber
Browse files

Don't post position updates too frequently

i.e. don't hog my message queue.

related-to-bug: 5284760
Change-Id: I8e2d36a11dbee1567b18ed13dc5257a65c6eeda7
parent 62bb0cdc
Loading
Loading
Loading
Loading
+13 −3
Original line number Diff line number Diff line
@@ -26,6 +26,9 @@

namespace android {

// static
const int64_t NuPlayer::Renderer::kMinPositionUpdateDelayUs = 100000ll;

NuPlayer::Renderer::Renderer(
        const sp<MediaPlayerBase::AudioSink> &sink,
        const sp<AMessage> &notify)
@@ -43,7 +46,8 @@ NuPlayer::Renderer::Renderer(
      mHasAudio(false),
      mHasVideo(false),
      mSyncQueues(false),
      mPaused(false) {
      mPaused(false),
      mLastPositionUpdateUs(-1ll) {
}

NuPlayer::Renderer::~Renderer() {
@@ -190,7 +194,7 @@ void NuPlayer::Renderer::postDrainAudioQueue() {
    mDrainAudioQueuePending = true;
    sp<AMessage> msg = new AMessage(kWhatDrainAudioQueue, id());
    msg->setInt32("generation", mAudioQueueGeneration);
    msg->post(10000);
    msg->post();
}

void NuPlayer::Renderer::signalAudioSinkChanged() {
@@ -198,7 +202,6 @@ void NuPlayer::Renderer::signalAudioSinkChanged() {
}

void NuPlayer::Renderer::onDrainAudioQueue() {

    for (;;) {
        if (mAudioQueue.empty()) {
            break;
@@ -562,6 +565,13 @@ void NuPlayer::Renderer::notifyPosition() {
    }

    int64_t nowUs = ALooper::GetNowUs();

    if (mLastPositionUpdateUs >= 0
            && nowUs < mLastPositionUpdateUs + kMinPositionUpdateDelayUs) {
        return;
    }
    mLastPositionUpdateUs = nowUs;

    int64_t positionUs = (nowUs - mAnchorTimeRealUs) + mAnchorTimeMediaUs;

    sp<AMessage> notify = mNotify->dup();
+4 −0
Original line number Diff line number Diff line
@@ -74,6 +74,8 @@ private:
        status_t mFinalResult;
    };

    static const int64_t kMinPositionUpdateDelayUs;

    sp<MediaPlayerBase::AudioSink> mAudioSink;
    sp<AMessage> mNotify;
    List<QueueEntry> mAudioQueue;
@@ -98,6 +100,8 @@ private:

    bool mPaused;

    int64_t mLastPositionUpdateUs;

    void onDrainAudioQueue();
    void postDrainAudioQueue();