diff --git a/reactos/drivers/wdm/audio/backpln/portcls/irpstream.cpp b/reactos/drivers/wdm/audio/backpln/portcls/irpstream.cpp index aaa707bb425..7d82ae7660d 100644 --- a/reactos/drivers/wdm/audio/backpln/portcls/irpstream.cpp +++ b/reactos/drivers/wdm/audio/backpln/portcls/irpstream.cpp @@ -466,6 +466,11 @@ CIrpQueue::CancelBuffers() 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; } diff --git a/reactos/drivers/wdm/audio/backpln/portcls/pin_wavecyclic.cpp b/reactos/drivers/wdm/audio/backpln/portcls/pin_wavecyclic.cpp index 14be43fd9e3..1162b94646b 100644 --- a/reactos/drivers/wdm/audio/backpln/portcls/pin_wavecyclic.cpp +++ b/reactos/drivers/wdm/audio/backpln/portcls/pin_wavecyclic.cpp @@ -693,8 +693,11 @@ CPortPinWaveCyclic::UpdateCommonBuffer( 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 @@ CPortPinWaveCyclic::UpdateCommonBufferOverlap( 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; + } } }