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

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

Merge "Return DISCONNECTED state when calling from API."

parents 57b1b184 89a64721
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -432,7 +432,7 @@ AAUDIO_API int32_t AAudioStream_getSamplesPerFrame(AAudioStream* stream)
AAUDIO_API aaudio_stream_state_t AAudioStream_getState(AAudioStream* stream)
{
    AudioStream *audioStream = convertAAudioStreamToAudioStream(stream);
    return audioStream->getState();
    return audioStream->getStateExternal();
}

AAUDIO_API aaudio_format_t AAudioStream_getFormat(AAudioStream* stream)
+11 −2
Original line number Diff line number Diff line
@@ -411,6 +411,8 @@ void AudioStream::setDisconnected() {
        return; // no change, the stream is already disconnected
    }
    mDisconnected.store(true);
    // Wake up a wakeForStateChange thread if it exists.
    syscall(SYS_futex, &mState, FUTEX_WAKE_PRIVATE, INT_MAX, NULL, NULL, 0);
    // Track transition to DISCONNECTED state.
    android::mediametrics::LogItem(mMetricsId)
            .set(AMEDIAMETRICS_PROP_EVENT, AMEDIAMETRICS_PROP_EVENT_VALUE_DISCONNECT)
@@ -428,7 +430,7 @@ aaudio_result_t AudioStream::waitForStateChange(aaudio_stream_state_t currentSta
    }

    int64_t durationNanos = 20 * AAUDIO_NANOS_PER_MILLISECOND; // arbitrary
    aaudio_stream_state_t state = getState();
    aaudio_stream_state_t state = getStateExternal();
    while (state == currentState && timeoutNanoseconds > 0) {
        if (durationNanos > timeoutNanoseconds) {
            durationNanos = timeoutNanoseconds;
@@ -447,7 +449,7 @@ aaudio_result_t AudioStream::waitForStateChange(aaudio_stream_state_t currentSta
            return result;
        }

        state = getState();
        state = getStateExternal();
    }
    if (nextState != nullptr) {
        *nextState = state;
@@ -638,6 +640,13 @@ void AudioStream::setDuckAndMuteVolume(float duckAndMuteVolume) {
    doSetVolume(); // apply this change
}

aaudio_stream_state_t AudioStream::getStateExternal() const {
    if (isDisconnected()) {
        return AAUDIO_STREAM_STATE_DISCONNECTED;
    }
    return getState();
}

void AudioStream::MyPlayerBase::registerWithAudioManager(const android::sp<AudioStream>& parent) {
    std::lock_guard<std::mutex> lock(mParentLock);
    mParent = parent;
+2 −0
Original line number Diff line number Diff line
@@ -194,6 +194,8 @@ public:
        return mState.load();
    }

    aaudio_stream_state_t getStateExternal() const;

    virtual int32_t getBufferSize() const {
        return AAUDIO_ERROR_UNIMPLEMENTED;
    }