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

Commit fb650b0d authored by jiabin's avatar jiabin
Browse files

Add thread safety annotation in libaaudio.

Bug: 314835808
Test: make
Change-Id: I5536b8031b0a5573d80b7fb7a4e85713047a2f3a
parent 9c06ce85
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -203,12 +203,12 @@ public:

private:
    android::Mutex                          mServiceLock;
    std::shared_ptr<AAudioServiceInterface> mAdapter;
    std::shared_ptr<AAudioServiceInterface> mAdapter PT_GUARDED_BY(mServiceLock);
    android::sp<AAudioClient>               mAAudioClient;

    std::shared_ptr<AAudioServiceInterface> getAAudioService();
    std::shared_ptr<AAudioServiceInterface> getAAudioService() EXCLUDES(mServiceLock);

    void dropAAudioService();
    void dropAAudioService() EXCLUDES(mServiceLock);

};

+0 −2
Original line number Diff line number Diff line
@@ -117,8 +117,6 @@ private:
    bool                    mFreeRunning{false};
    android::fifo_counter_t mDataReadCounter{0}; // only used if free-running
    android::fifo_counter_t mDataWriteCounter{0}; // only used if free-running

    std::mutex mDataQueueLock;
};

} // namespace aaudio
+8 −8
Original line number Diff line number Diff line
@@ -172,7 +172,7 @@ public:
        return createThread_l(periodNanoseconds, threadProc, threadArg);
    }

    aaudio_result_t joinThread(void **returnArg);
    aaudio_result_t joinThread(void **returnArg) EXCLUDES(mStreamLock);

    virtual aaudio_result_t registerThread() {
        return AAUDIO_OK;
@@ -424,7 +424,7 @@ public:
    }

    // This is used by the AudioManager to duck and mute the stream when changing audio focus.
    void setDuckAndMuteVolume(float duckAndMuteVolume);
    void setDuckAndMuteVolume(float duckAndMuteVolume) EXCLUDES(mStreamLock);

    float getDuckAndMuteVolume() const {
        return mDuckAndMuteVolume;
@@ -459,11 +459,11 @@ public:
        mPlayerBase->unregisterWithAudioManager();
    }

    aaudio_result_t systemStart();
    aaudio_result_t systemStart() EXCLUDES(mStreamLock);

    aaudio_result_t systemPause();
    aaudio_result_t systemPause() EXCLUDES(mStreamLock);

    aaudio_result_t safeFlush();
    aaudio_result_t safeFlush() EXCLUDES(mStreamLock);

    /**
     * This is called when an app calls AAudioStream_requestStop();
@@ -474,14 +474,14 @@ public:
    /**
     * This is called internally when an app callback returns AAUDIO_CALLBACK_RESULT_STOP.
     */
    aaudio_result_t systemStopInternal();
    aaudio_result_t systemStopInternal() EXCLUDES(mStreamLock);

    /**
     * Safely RELEASE a stream after taking mStreamLock and checking
     * to make sure we are not being called from a callback.
     * @return AAUDIO_OK or a negative error
     */
    aaudio_result_t safeRelease();
    aaudio_result_t safeRelease() EXCLUDES(mStreamLock);

    /**
     * Safely RELEASE and CLOSE a stream after taking mStreamLock and checking
@@ -490,7 +490,7 @@ public:
     */
    aaudio_result_t safeReleaseClose();

    aaudio_result_t safeReleaseCloseInternal();
    aaudio_result_t safeReleaseCloseInternal() EXCLUDES(mStreamLock);

protected: