X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Flib%2Fadapter%2FUSBCECAdapterCommunication.cpp;h=99086ce94f54dbbc4e88cc692437e2e210fca0dd;hb=8feaee8d445bd5837a5e042ddb7fadbfd0e965c5;hp=49bd9ea5fa40521affe14746eedccff79d7d9fed;hpb=eb96547367a4df24be53fa73514c8e9052918cc1;p=deb_libcec.git diff --git a/src/lib/adapter/USBCECAdapterCommunication.cpp b/src/lib/adapter/USBCECAdapterCommunication.cpp index 49bd9ea..99086ce 100644 --- a/src/lib/adapter/USBCECAdapterCommunication.cpp +++ b/src/lib/adapter/USBCECAdapterCommunication.cpp @@ -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) @@ -487,15 +484,16 @@ uint16_t CUSBCECAdapterCommunication::GetFirmwareVersion(void) bool CUSBCECAdapterCommunication::SetLineTimeout(uint8_t iTimeout) { - m_iLineTimeout = iTimeout; - bool bReturn(m_iLineTimeout != iTimeout); + bool bReturn(true); - if (!bReturn) + if (m_iLineTimeout != iTimeout) { CLibCEC::AddLog(CEC_LOG_DEBUG, "setting the line timeout to %d", iTimeout); CCECAdapterMessage params; params.PushEscaped(iTimeout); bReturn = SendCommand(MSGCODE_TRANSMIT_IDLETIME, params); + if (bReturn) + m_iLineTimeout = iTimeout; } return bReturn;