cec: call Close() when the connection could not be (fully) opened in CUSBCECAdapterCo...
[deb_libcec.git] / src / lib / adapter / USBCECAdapterCommunication.cpp
index e092274457e05bec260b6bd5b27fe9d4150cf763..99086ce94f54dbbc4e88cc692437e2e210fca0dd 100644 (file)
@@ -77,11 +77,6 @@ CUSBCECAdapterCommunication::CUSBCECAdapterCommunication(CCECProcessor *processo
   m_port = new CSerialPort(strPort, iBaudRate);
 }
 
-CUSBCECAdapterCommunication::~CUSBCECAdapterCommunication(void)
-{
-  Close();
-}
-
 bool CUSBCECAdapterCommunication::CheckAdapter(uint32_t iTimeoutMs /* = 10000 */)
 {
   bool bReturn(false);
@@ -205,6 +200,7 @@ bool CUSBCECAdapterCommunication::Open(IAdapterCommunicationCallback *cb, uint32
   if (!bSkipChecks && !CheckAdapter())
   {
     CLibCEC::AddLog(CEC_LOG_ERROR, "the adapter failed to pass basic checks");
+    Close();
     return false;
   }
   else
@@ -216,6 +212,7 @@ bool CUSBCECAdapterCommunication::Open(IAdapterCommunicationCallback *cb, uint32
     }
     else
     {
+      Close();
       CLibCEC::AddLog(CEC_LOG_ERROR, "could not create a communication thread");
     }
   }
@@ -225,7 +222,7 @@ bool CUSBCECAdapterCommunication::Open(IAdapterCommunicationCallback *cb, uint32
 
 void CUSBCECAdapterCommunication::Close(void)
 {
-  StopThread();
+  StopThread(0);
 }
 
 void *CUSBCECAdapterCommunication::Process(void)