diff options
Diffstat (limited to 'src/emu/speaker.cpp')
-rw-r--r-- | src/emu/speaker.cpp | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/src/emu/speaker.cpp b/src/emu/speaker.cpp index 3cbb14355a4..b487b5d8aea 100644 --- a/src/emu/speaker.cpp +++ b/src/emu/speaker.cpp @@ -74,9 +74,9 @@ void speaker_device::mix(stream_buffer::sample_t *leftmix, stream_buffer::sample if (machine().options().speaker_report() != 0) { u32 samples_per_bucket = m_mixer_stream->sample_rate() / BUCKETS_PER_SECOND; - for (int sample = 0; sample < expected_samples; sample++) + while (!view.done()) { - m_current_max = std::max(m_current_max, fabsf(view.get(sample))); + m_current_max = std::max(m_current_max, fabsf(view.get())); if (++m_samples_this_bucket >= samples_per_bucket) { m_max_sample.push_back(m_current_max); @@ -84,6 +84,7 @@ void speaker_device::mix(stream_buffer::sample_t *leftmix, stream_buffer::sample m_samples_this_bucket = 0; } } + view.reset(); } // mix if sound is enabled @@ -93,7 +94,7 @@ void speaker_device::mix(stream_buffer::sample_t *leftmix, stream_buffer::sample if (m_x == 0) for (int sample = 0; sample < expected_samples; sample++) { - stream_buffer::sample_t cursample = view.get(sample); + stream_buffer::sample_t cursample = view.get(); leftmix[sample] += cursample; rightmix[sample] += cursample; } @@ -101,12 +102,12 @@ void speaker_device::mix(stream_buffer::sample_t *leftmix, stream_buffer::sample // if the speaker is to the left, send only to the left else if (m_x < 0) for (int sample = 0; sample < expected_samples; sample++) - leftmix[sample] += view.get(sample); + leftmix[sample] += view.get(); // if the speaker is to the right, send only to the right else for (int sample = 0; sample < expected_samples; sample++) - rightmix[sample] += view.get(sample); + rightmix[sample] += view.get(); } } |