[ros-diffs] [janderwald] 45487: [PORTCLS] - Reset number of mappings and available data when a reset request arrives - Handle case where a get position request appears before an audio buffer arrives which results in divide by zero exception

janderwald at svn.reactos.org janderwald at svn.reactos.org
Sun Feb 7 16:35:00 CET 2010


Author: janderwald
Date: Sun Feb  7 16:35:00 2010
New Revision: 45487

URL: http://svn.reactos.org/svn/reactos?rev=45487&view=rev
Log:
[PORTCLS]
- Reset number of mappings and available data when a reset request arrives
- Handle case where a get position request appears before an audio buffer arrives which results in divide by zero exception

Modified:
    trunk/reactos/drivers/wdm/audio/backpln/portcls/irpstream.cpp
    trunk/reactos/drivers/wdm/audio/backpln/portcls/pin_wavecyclic.cpp

Modified: trunk/reactos/drivers/wdm/audio/backpln/portcls/irpstream.cpp
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/wdm/audio/backpln/portcls/irpstream.cpp?rev=45487&r1=45486&r2=45487&view=diff
==============================================================================
--- trunk/reactos/drivers/wdm/audio/backpln/portcls/irpstream.cpp [iso-8859-1] (original)
+++ trunk/reactos/drivers/wdm/audio/backpln/portcls/irpstream.cpp [iso-8859-1] Sun Feb  7 16:35:00 2010
@@ -466,6 +466,11 @@
     KsCancelIo(&m_IrpList, &m_IrpListLock);
     // reset stream start flag
     m_StartStream = FALSE;
+    // reset number of mappings
+    m_NumMappings = 0;
+    // reset number of data available
+    m_NumDataAvailable = 0;
+
     // done
     return TRUE;
 }

Modified: trunk/reactos/drivers/wdm/audio/backpln/portcls/pin_wavecyclic.cpp
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/wdm/audio/backpln/portcls/pin_wavecyclic.cpp?rev=45487&r1=45486&r2=45487&view=diff
==============================================================================
--- trunk/reactos/drivers/wdm/audio/backpln/portcls/pin_wavecyclic.cpp [iso-8859-1] (original)
+++ trunk/reactos/drivers/wdm/audio/backpln/portcls/pin_wavecyclic.cpp [iso-8859-1] Sun Feb  7 16:35:00 2010
@@ -693,8 +693,11 @@
 
         if (m_ConnectDetails->Interface.Id == KSINTERFACE_STANDARD_LOOPED_STREAMING)
         {
-            // normalize position
-            m_Position.PlayOffset = m_Position.PlayOffset % m_Position.WriteOffset;
+            if (m_Position.WriteOffset)
+            {
+                // normalize position
+                m_Position.PlayOffset = m_Position.PlayOffset % m_Position.WriteOffset;
+            }
         }
     }
 }
@@ -742,8 +745,11 @@
 
         if (m_ConnectDetails->Interface.Id == KSINTERFACE_STANDARD_LOOPED_STREAMING)
         {
-            // normalize position
-            m_Position.PlayOffset = m_Position.PlayOffset % m_Position.WriteOffset;
+            if (m_Position.WriteOffset)
+            {
+                // normalize position
+                m_Position.PlayOffset = m_Position.PlayOffset % m_Position.WriteOffset;
+            }
         }
 
     }




More information about the Ros-diffs mailing list