Author: hbelusca
Date: Fri Mar 27 00:44:44 2015
New Revision: 66909

URL: http://svn.reactos.org/svn/reactos?rev=66909&view=rev
Log:
[NTVDM]: In case some app sends repeatedly beeps of Frequency == 0 (to stop 
beeping) but with Duration == INFINITY, do the duration fixup before actually 
checking whether our previous beep was the same, so that we don't saturate the 
beep driver with beep stop IRQ requests (Windows seems to handle that properly 
but ReactOS seems to do not, and the real problem seems to lie in NTOS kernel 
and not in the beep driver, because the same problem happens even when using 
windows' beep.sys in ROS). Patch by Aleksander, tested by both of us.

Modified:
    trunk/reactos/subsystems/mvdm/ntvdm/hardware/sound/speaker.c

Modified: trunk/reactos/subsystems/mvdm/ntvdm/hardware/sound/speaker.c
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/mvdm/ntvdm/hardware/sound/speaker.c?rev=66909&r1=66908&r2=66909&view=diff
==============================================================================
--- trunk/reactos/subsystems/mvdm/ntvdm/hardware/sound/speaker.c        
[iso-8859-1] (original)
+++ trunk/reactos/subsystems/mvdm/ntvdm/hardware/sound/speaker.c        
[iso-8859-1] Fri Mar 27 00:44:44 2015
@@ -51,14 +51,14 @@
     IO_STATUS_BLOCK IoStatusBlock;
     BEEP_SET_PARAMETERS BeepSetParameters;
 
+    /* A null frequency means we stop beeping */
+    if (Frequency == 0) Duration = 0;
+
     /*
      * Do nothing if we are replaying exactly the same sound
      * (this avoids hiccups due to redoing the same beeps).
      */
     if (Frequency == LastFrequency && Duration == LastDuration) return;
-
-    /* A null frequency means we stop beeping */
-    if (Frequency == 0) Duration = 0;
 
     /*
      * For small durations we automatically reset the beep so


Reply via email to