- 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
svn path=/trunk/; revision=45487
KsCancelIo(&m_IrpList, &m_IrpListLock);
// reset stream start flag
m_StartStream = FALSE;
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;
+
if (m_ConnectDetails->Interface.Id == KSINTERFACE_STANDARD_LOOPED_STREAMING)
{
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;
+ }
if (m_ConnectDetails->Interface.Id == KSINTERFACE_STANDARD_LOOPED_STREAMING)
{
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;
+ }