X-Git-Url: https://git.reactos.org/?p=reactos.git;a=blobdiff_plain;f=reactos%2Fsubsystems%2Fntvdm%2Fhardware%2Fspeaker.c;h=46eb09e067294c9cbe77c9b27bf900e953b4e2a4;hp=542e57d8b9359c429814791cff412f8e82c285ff;hb=7bafd10348a8315a9a1cbb3dfd095a40e19cd2ea;hpb=c1441679a5947cfbbadf4ca912c23311d1386ec6 diff --git a/reactos/subsystems/ntvdm/hardware/speaker.c b/reactos/subsystems/ntvdm/hardware/speaker.c index 542e57d8b93..46eb09e0672 100644 --- a/reactos/subsystems/ntvdm/hardware/speaker.c +++ b/reactos/subsystems/ntvdm/hardware/speaker.c @@ -29,6 +29,9 @@ static HANDLE hBeep = NULL; /* PRIVATE FUNCTIONS **********************************************************/ +static DWORD OldReloadValue = 0; +static PIT_MODE OldMode = 0; + /* PUBLIC FUNCTIONS ***********************************************************/ VOID SpeakerChange(VOID) @@ -47,9 +50,18 @@ VOID SpeakerChange(VOID) DWORD PitChannel2ReloadValue = PitChannel2->ReloadValue; if (PitChannel2ReloadValue == 0) PitChannel2ReloadValue = 65536; + DPRINT("(1) PitChannel2(Bcd = %s, Mode = %d ; ReloadValue = %d)\n", PitChannel2->Bcd ? "true" : "false", PitChannel2->Mode, PitChannel2ReloadValue); + + if (OldMode == PitChannel2->Mode && OldReloadValue == PitChannel2ReloadValue) + return; + + OldMode = PitChannel2->Mode; + OldReloadValue = PitChannel2ReloadValue; + + DPRINT("(2) PitChannel2(Bcd = %s, Mode = %d ; ReloadValue = %d)\n", PitChannel2->Bcd ? "true" : "false", PitChannel2->Mode, PitChannel2ReloadValue); + /* Set beep data */ - BeepSetParameters.Frequency = (PIT_BASE_FREQUENCY / PitChannel2ReloadValue) - /* * (PitChannel2->Mode == PIT_MODE_SQUARE_WAVE ? 2 : 1) */; + BeepSetParameters.Frequency = (PIT_BASE_FREQUENCY / PitChannel2ReloadValue); BeepSetParameters.Duration = INFINITE; /* Send the beep */ @@ -78,6 +90,9 @@ VOID SpeakerChange(VOID) IO_STATUS_BLOCK IoStatusBlock; BEEP_SET_PARAMETERS BeepSetParameters; + OldMode = 0; + OldReloadValue = 0; + /* Set beep data */ BeepSetParameters.Frequency = 0x00; BeepSetParameters.Duration = 0x00;