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

Commit 2ac1690b authored by Marco Nelissen's avatar Marco Nelissen Committed by android-build-merger
Browse files

Merge "Revert "Multiple worker threads for SoundPool"" into oc-dr1-dev am: 59a66b86

am: b0bb3732

Change-Id: I859b99e3dc68396abccc0f399004860042d6cb07
parents 73bf5eb0 b0bb3732
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;
};