diff --git a/Source/Core/Core/HW/WiimoteEmu/Speaker.cpp b/Source/Core/Core/HW/WiimoteEmu/Speaker.cpp index 533f1f7085..725fa25adb 100644 --- a/Source/Core/Core/HW/WiimoteEmu/Speaker.cpp +++ b/Source/Core/Core/HW/WiimoteEmu/Speaker.cpp @@ -69,7 +69,7 @@ void Wiimote::SpeakerData(wm_speaker_data* sd) return; // TODO consider using static max size instead of new - s16 *samples = new s16[sd->length * 2]; + std::unique_ptr samples(new s16[sd->length * 2]); unsigned int sample_rate_dividend; u8 volume_divisor; @@ -99,6 +99,11 @@ void Wiimote::SpeakerData(wm_speaker_data* sd) sample_rate_dividend = 6000000; volume_divisor = 0x40; } + else + { + ERROR_LOG(WII_IPC_WIIMOTE, "Unknown speaker format %x\n", m_reg_speaker.format); + return; + } // Speaker Pan unsigned int vol = (unsigned int)(m_options->settings[4]->GetValue() * 100); @@ -115,7 +120,7 @@ void Wiimote::SpeakerData(wm_speaker_data* sd) right_volume = 255; g_sound_stream->GetMixer()->SetWiimoteSpeakerVolume(left_volume, right_volume); - g_sound_stream->GetMixer()->PushWiimoteSpeakerSamples(samples, sd->length, sample_rate); + g_sound_stream->GetMixer()->PushWiimoteSpeakerSamples(samples.get(), sd->length, sample_rate); #ifdef WIIMOTE_SPEAKER_DUMP @@ -129,7 +134,7 @@ void Wiimote::SpeakerData(wm_speaker_data* sd) OpenFStream(ofile, "rmtdump.bin", ofile.binary | ofile.out); wav.Start("rmtdump.wav", 6000/*Common::swap16(m_reg_speaker.sample_rate)*/); } - wav.AddMonoSamples(samples, sd->length*2); + wav.AddMonoSamples(samples.get(), sd->length*2); if (ofile.good()) { for (int i = 0; i < sd->length; i++) @@ -139,8 +144,6 @@ void Wiimote::SpeakerData(wm_speaker_data* sd) } num++; #endif - - delete[] samples; } }