m_iUseCounter(0),
m_expectedResponse(CEC_OPCODE_NONE),
m_bOPTSendDeckStatusUpdateOnActiveSource(false),
- m_vendorId(CEC_VENDOR_UNKNOWN)
+ m_vendorId(CEC_VENDOR_UNKNOWN),
+ m_bRcvSignal(false)
{
}
CLockObject lock(m_receiveMutex);
if (m_expectedResponse == CEC_OPCODE_NONE ||
m_expectedResponse == command.opcode)
+ {
+ m_bRcvSignal = true;
m_condition.Signal();
+ }
}
MarkReady();
{
CLibCEC::AddLog(CEC_LOG_DEBUG, "command transmitted");
if (bExpectResponse)
- bReturn = m_condition.Wait(m_receiveMutex, m_iTransmitWait);
+ bReturn = m_condition.Wait(m_receiveMutex, m_bRcvSignal, m_iTransmitWait);
+ if (bReturn)
+ m_bRcvSignal = false;
}
}
--m_iUseCounter;