cec: ensure that the ackmask is always set to 0 when closing the connection and that...
[deb_libcec.git] / src / lib / CECProcessor.cpp
index 98be0c49229593c515ba451718763d5c20b95c96..f9d21346f2dbceaec74dfa2862df5808fbb6cd97 100644 (file)
@@ -136,6 +136,8 @@ CCECProcessor::~CCECProcessor(void)
 
 void CCECProcessor::Close(void)
 {
+  StopThread(false);
+  SetInitialised(false);
   StopThread();
 
   CLockObject lock(m_mutex);
@@ -867,8 +869,11 @@ bool CCECProcessor::Transmit(const cec_command &data)
     CLockObject lock(m_mutex);
     LogOutput(data);
     m_iLastTransmission = GetTimeMs();
-    if (!m_communication)
+    if (!m_communication || !IsInitialised())
+    {
+      CLibCEC::AddLog(CEC_LOG_ERROR, "cannot transmit command: connection closed");
       return false;
+    }
     uint8_t iMaxTries = m_busDevices[data.initiator]->GetHandler()->GetTransmitRetries() + 1;
     retVal = m_communication->Write(data, iMaxTries, m_iLineTimeout, m_iRetryLineTimeout);
   }