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

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

Merge "Revert "Multiple worker threads for SoundPool"" into oc-dr1-dev

parents be196018 beea9f76
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;
};