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

Commit beea9f76 authored by Marco Nelissen's avatar Marco Nelissen
Browse files

Revert "Multiple worker threads for SoundPool"

This reverts commit 7201d9cb.

This reduces CPU usage during Camera startup.

Bug: 38031165
Bug: 62447848
Change-Id: I857aefec9dd7566bfdd3b84873eb5d495449815c
parent 3a18b28a
Loading
Loading
Loading
Loading
+10 −19
Original line number Diff line number Diff line
@@ -20,8 +20,6 @@

#include "SoundPoolThread.h"

static const int kMaxWorkers = 3;

namespace android {

void SoundPoolThread::write(SoundPoolMsg msg) {
@@ -33,21 +31,14 @@ void SoundPoolThread::write(SoundPoolMsg msg) {
    // if thread is quitting, don't add to queue
    if (mRunning) {
        mMsgQueue.push(msg);
        if (mNumWorkers < kMaxWorkers) {
            if (createThreadEtc(beginThread, this, "SoundPoolThread")) {
                mNumWorkers++;
                ALOGV("created worker thread");
            }
        }
        mCondition.signal();
    }
}

const SoundPoolMsg SoundPoolThread::read() {
    Mutex::Autolock lock(&mLock);
    if (mMsgQueue.size() == 0) {
        mNumWorkers--;
        mCondition.signal();
        return SoundPoolMsg(SoundPoolMsg::KILL, 0);
    while (mMsgQueue.size() == 0) {
        mCondition.wait(mLock);
    }
    SoundPoolMsg msg = mMsgQueue[0];
    mMsgQueue.removeAt(0);
@@ -60,20 +51,20 @@ void SoundPoolThread::quit() {
    if (mRunning) {
        mRunning = false;
        mMsgQueue.clear();
        mCondition.broadcast(); // wake up any blocked writers
        while (mNumWorkers > 0) {
        mMsgQueue.push(SoundPoolMsg(SoundPoolMsg::KILL, 0));
        mCondition.signal();
        mCondition.wait(mLock);
    }
    }
    ALOGV("return from quit");
}

SoundPoolThread::SoundPoolThread(SoundPool* soundPool) :
    mSoundPool(soundPool),
    mNumWorkers(0),
    mRunning(true)
    mSoundPool(soundPool)
{
    mMsgQueue.setCapacity(maxMessages);
    if (createThreadEtc(beginThread, this, "SoundPoolThread")) {
        mRunning = true;
    }
}

SoundPoolThread::~SoundPoolThread()
+0 −1
Original line number Diff line number Diff line
@@ -58,7 +58,6 @@ private:
    Condition               mCondition;
    Vector<SoundPoolMsg>    mMsgQueue;
    SoundPool*              mSoundPool;
    int32_t                 mNumWorkers;
    bool                    mRunning;
};