Skip to content

Commit

Permalink
OboeTester: Fix race condition with setWorkload in Dynamic Workload A…
Browse files Browse the repository at this point in the history
…ctivity (#2140)
  • Loading branch information
robertwu1 authored Jan 17, 2025
1 parent b6ec9fd commit 71d6185
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 4 deletions.
7 changes: 4 additions & 3 deletions apps/OboeTester/app/src/main/cpp/OboeStreamCallbackProxy.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -25,13 +25,14 @@ oboe::DataCallbackResult OboeStreamCallbackProxy::onAudioReady(
int numFrames) {
oboe::DataCallbackResult callbackResult = oboe::DataCallbackResult::Stop;
int64_t startTimeNanos = getNanoseconds();
int32_t numWorkloadVoices = mNumWorkloadVoices;

// Record which CPU this is running on.
orCurrentCpuMask(sched_getcpu());

// Tell ADPF in advance what our workload will be.
if (mWorkloadReportingEnabled) {
audioStream->reportWorkload(mNumWorkloadVoices);
audioStream->reportWorkload(numWorkloadVoices);
}

// Change affinity if app requested a change.
Expand All @@ -54,8 +55,8 @@ oboe::DataCallbackResult OboeStreamCallbackProxy::onAudioReady(
callbackResult = mCallback->onAudioReady(audioStream, audioData, numFrames);
}

mSynthWorkload.onCallback(mNumWorkloadVoices);
if (mNumWorkloadVoices > 0) {
mSynthWorkload.onCallback(numWorkloadVoices);
if (numWorkloadVoices > 0) {
// Render into the buffer or discard the synth voices.
float *buffer = (audioStream->getChannelCount() == 2 && mHearWorkload)
? static_cast<float *>(audioData) : nullptr;
Expand Down
2 changes: 1 addition & 1 deletion apps/OboeTester/app/src/main/cpp/OboeStreamCallbackProxy.h
Original file line number Diff line number Diff line change
Expand Up @@ -251,7 +251,7 @@ class OboeStreamCallbackProxy : public OboeTesterStreamCallback {
std::atomic<float> mMaxCpuLoad{0.0f};
int64_t mPreviousCallbackTimeNs = 0;
DoubleStatistics mStatistics;
int32_t mNumWorkloadVoices = 0;
std::atomic<int32_t> mNumWorkloadVoices{0};
SynthWorkload mSynthWorkload;
bool mHearWorkload = false;
bool mWorkloadReportingEnabled = false;
Expand Down

0 comments on commit 71d6185

Please sign in to comment.