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

Commit 66cbfef0 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Free data queue before closing data file descriptor." into main

parents 3c018693 f86a004c
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -53,7 +53,7 @@ public:
    int32_t addFileDescriptor(const android::base::unique_fd& fd, int32_t sizeInBytes);

    /**
     * Close current data file descriptor. The duplicated file descriptor will be close.
     * Close current data file descriptor. The duplicated file descriptor will be closed.
     */
    void closeDataFileDescriptor();

+1 −1
Original line number Diff line number Diff line
@@ -107,7 +107,7 @@ public:
     */
    void eraseDataMemory();

    void freeDataQueue();
    void freeDataQueue() { mDataQueue.reset(); }

    void dump() const;

+6 −0
Original line number Diff line number Diff line
@@ -399,6 +399,12 @@ aaudio_result_t AudioStreamInternal::exitStandby_l() {
    uint8_t buffer[getDeviceBufferCapacity() * getBytesPerFrame()];
    android::fifo_frames_t fullFramesAvailable = mAudioEndpoint->read(buffer,
            getDeviceBufferCapacity());
    // Before releasing the data queue, update the frames read and written.
    getFramesRead();
    getFramesWritten();
    // Call freeDataQueue() here because the following call to
    // closeDataFileDescriptor() will invalidate the pointers used by the data queue.
    mAudioEndpoint->freeDataQueue();
    mEndPointParcelable.closeDataFileDescriptor();
    aaudio_result_t result = mServiceInterface.exitStandby(
            mServiceStreamHandleInfo, endpointParcelable);
+2 −1
Original line number Diff line number Diff line
@@ -273,7 +273,8 @@ int64_t AudioStreamInternalCapture::getFramesWritten() {

int64_t AudioStreamInternalCapture::getFramesRead() {
    if (mAudioEndpoint) {
        mLastFramesRead = mAudioEndpoint->getDataReadCounter() + mFramesOffsetFromService;
        mLastFramesRead = std::max(mLastFramesRead,
                                   mAudioEndpoint->getDataReadCounter() + mFramesOffsetFromService);
    }
    return mLastFramesRead;
}
+3 −2
Original line number Diff line number Diff line
@@ -329,8 +329,9 @@ int64_t AudioStreamInternalPlay::getFramesRead() {

int64_t AudioStreamInternalPlay::getFramesWritten() {
    if (mAudioEndpoint) {
        mLastFramesWritten = mAudioEndpoint->getDataWriteCounter()
                             + mFramesOffsetFromService;
        mLastFramesWritten = std::max(
                mLastFramesWritten,
                mAudioEndpoint->getDataWriteCounter() + mFramesOffsetFromService);
    }
    return mLastFramesWritten;
}