Merge "Add sleep in EffectThread to avoid busy wait" am: ac46ddb969
Original change: https://android-review.googlesource.com/c/platform/hardware/interfaces/+/2478089 Change-Id: Ia72d2a551b6875f7f41128432405015857f2fc5a Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
commit
94c87272b2
2 changed files with 7 additions and 4 deletions
|
@ -34,13 +34,14 @@ EffectThread::~EffectThread() {
|
|||
};
|
||||
|
||||
RetCode EffectThread::createThread(std::shared_ptr<EffectContext> context, const std::string& name,
|
||||
const int priority) {
|
||||
int priority, int sleepUs /* kSleepTimeUs */) {
|
||||
if (mThread.joinable()) {
|
||||
LOG(WARNING) << __func__ << " thread already created, no-op";
|
||||
return RetCode::SUCCESS;
|
||||
}
|
||||
mName = name;
|
||||
mPriority = priority;
|
||||
mSleepTimeUs = sleepUs;
|
||||
{
|
||||
std::lock_guard lg(mThreadMutex);
|
||||
mThreadContext = std::move(context);
|
||||
|
@ -134,7 +135,7 @@ void EffectThread::process_l() {
|
|||
LOG(DEBUG) << __func__ << " done processing, effect consumed " << status.fmqConsumed
|
||||
<< " produced " << status.fmqProduced;
|
||||
} else {
|
||||
// TODO: maybe add some sleep here to avoid busy waiting
|
||||
usleep(mSleepTimeUs);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -35,7 +35,7 @@ class EffectThread {
|
|||
|
||||
// called by effect implementation.
|
||||
RetCode createThread(std::shared_ptr<EffectContext> context, const std::string& name,
|
||||
const int priority = ANDROID_PRIORITY_URGENT_AUDIO);
|
||||
int priority = ANDROID_PRIORITY_URGENT_AUDIO, int sleepUs = kSleepTimeUs);
|
||||
RetCode destroyThread();
|
||||
RetCode startThread();
|
||||
RetCode stopThread();
|
||||
|
@ -72,7 +72,8 @@ class EffectThread {
|
|||
virtual void process_l() REQUIRES(mThreadMutex);
|
||||
|
||||
private:
|
||||
const int kMaxTaskNameLen = 15;
|
||||
static constexpr int kMaxTaskNameLen = 15;
|
||||
static constexpr int kSleepTimeUs = 2000; // in micro-second
|
||||
std::mutex mThreadMutex;
|
||||
std::condition_variable mCv;
|
||||
bool mExit GUARDED_BY(mThreadMutex) = false;
|
||||
|
@ -80,6 +81,7 @@ class EffectThread {
|
|||
std::shared_ptr<EffectContext> mThreadContext GUARDED_BY(mThreadMutex);
|
||||
std::thread mThread;
|
||||
int mPriority;
|
||||
int mSleepTimeUs = kSleepTimeUs; // sleep time in micro-second
|
||||
std::string mName;
|
||||
|
||||
RetCode handleStartStop(bool stop);
|
||||
|
|
Loading…
Reference in a new issue