X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Flib%2Fadapter%2FUSBCECAdapterCommunication.cpp;h=32158de76513e32c7cce41c9b58a6488566318d5;hb=41c655b6ba019bd5c342be9fcfa8c34fad0178ef;hp=01bf303b45f9a65b16601dd9be9f03aa3b46775c;hpb=ef5836621411aa39169f9c8c2fc8a7f3038dbb15;p=deb_libcec.git diff --git a/src/lib/adapter/USBCECAdapterCommunication.cpp b/src/lib/adapter/USBCECAdapterCommunication.cpp index 01bf303..32158de 100644 --- a/src/lib/adapter/USBCECAdapterCommunication.cpp +++ b/src/lib/adapter/USBCECAdapterCommunication.cpp @@ -172,6 +172,7 @@ bool CUSBCECAdapterCommunication::Open(IAdapterCommunicationCallback *cb, uint32 void CUSBCECAdapterCommunication::Close(void) { + SetAckMask(0); CLockObject lock(m_mutex); m_rcvCondition.Broadcast(); StopThread(); @@ -216,6 +217,8 @@ void *CUSBCECAdapterCommunication::Process(void) cec_adapter_message_state CUSBCECAdapterCommunication::Write(const cec_command &data, uint8_t iMaxTries, uint8_t iLineTimeout /* = 3 */, uint8_t iRetryLineTimeout /* = 3 */) { cec_adapter_message_state retVal(ADAPTER_MESSAGE_STATE_UNKNOWN); + if (!IsRunning()) + return retVal; CCECAdapterMessage *output = new CCECAdapterMessage(data); @@ -261,6 +264,9 @@ bool CUSBCECAdapterCommunication::Write(CCECAdapterMessage *data) bool CUSBCECAdapterCommunication::Read(cec_command &command, uint32_t iTimeout) { + if (!IsRunning()) + return false; + CCECAdapterMessage msg; if (Read(msg, iTimeout)) { @@ -291,7 +297,7 @@ bool CUSBCECAdapterCommunication::Read(CCECAdapterMessage &msg, uint32_t iTimeou if (buf) { msg.packet = buf->packet; - msg.state = msg.state = ADAPTER_MESSAGE_STATE_INCOMING; + msg.state = ADAPTER_MESSAGE_STATE_INCOMING; delete buf; return true; } @@ -402,13 +408,13 @@ bool CUSBCECAdapterCommunication::ParseMessage(const CCECAdapterMessage &msg) uint16_t CUSBCECAdapterCommunication::GetFirmwareVersion(void) { - CLockObject lock(m_mutex); uint16_t iReturn(m_iFirmwareVersion); if (!IsRunning()) return iReturn; if (iReturn == CEC_FW_VERSION_UNKNOWN) { + CLockObject lock(m_mutex); CLibCEC::AddLog(CEC_LOG_DEBUG, "requesting the firmware version"); CCECAdapterMessage *output = new CCECAdapterMessage;