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

Commit 3b6c92f8 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "NuPlayerRenderer: fix racing condition for offload mode." into nyc-mr1-dev

parents 78fe845d 4c74fde2
Loading
Loading
Loading
Loading
+22 −1
Original line number Diff line number Diff line
@@ -141,6 +141,17 @@ NuPlayer::Renderer::~Renderer() {
        mAudioSink->flush();
        mAudioSink->close();
    }

    // Try to avoid racing condition in case callback is still on.
    Mutex::Autolock autoLock(mLock);
    mUseAudioCallback = false;
    flushQueue(&mAudioQueue);
    flushQueue(&mVideoQueue);
    mWakeLock.clear();
    mMediaClock.clear();
    mVideoScheduler.clear();
    mNotify.clear();
    mAudioSink.clear();
}

void NuPlayer::Renderer::queueBuffer(
@@ -744,7 +755,7 @@ size_t NuPlayer::Renderer::AudioSinkCallback(
        case MediaPlayerBase::AudioSink::CB_EVENT_STREAM_END:
        {
            ALOGV("AudioSink::CB_EVENT_STREAM_END");
            me->notifyEOS(true /* audio */, ERROR_END_OF_STREAM);
            me->notifyEOSCallback();
            break;
        }

@@ -759,6 +770,16 @@ size_t NuPlayer::Renderer::AudioSinkCallback(
    return 0;
}

void NuPlayer::Renderer::notifyEOSCallback() {
    Mutex::Autolock autoLock(mLock);

    if (!mUseAudioCallback) {
        return;
    }

    notifyEOS(true /* audio */, ERROR_END_OF_STREAM);
}

size_t NuPlayer::Renderer::fillAudioBuffer(void *buffer, size_t size) {
    Mutex::Autolock autoLock(mLock);

+1 −0
Original line number Diff line number Diff line
@@ -212,6 +212,7 @@ private:
    status_t getCurrentPositionFromAnchor(
            int64_t *mediaUs, int64_t nowUs, bool allowPastQueuedVideo = false);

    void notifyEOSCallback();
    size_t fillAudioBuffer(void *buffer, size_t size);

    bool onDrainAudioQueue();