X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Flib%2FAdapterCommunication.cpp;h=d3eecf45ea7f1045ef466ba38e1291f71f0186ca;hb=4e3ee000422e096868ac7a764ca63e36f768a62d;hp=3b0ca015454a1250a40da236358bf2f3e0206161;hpb=0e31a62c1ff3854f1c4dad3fb0917683c9528e5b;p=deb_libcec.git diff --git a/src/lib/AdapterCommunication.cpp b/src/lib/AdapterCommunication.cpp index 3b0ca01..d3eecf4 100644 --- a/src/lib/AdapterCommunication.cpp +++ b/src/lib/AdapterCommunication.cpp @@ -147,7 +147,8 @@ bool CAdapterCommunication::Open(const char *strPort, uint16_t iBaudRate /* = 38 if (CreateThread()) { - m_controller->AddLog(CEC_LOG_DEBUG, "communication thread created"); + m_startCondition.Wait(&m_mutex); + m_controller->AddLog(CEC_LOG_DEBUG, "communication thread started"); return true; } else @@ -161,14 +162,17 @@ bool CAdapterCommunication::Open(const char *strPort, uint16_t iBaudRate /* = 38 void CAdapterCommunication::Close(void) { CLockObject lock(&m_mutex); - StopThread(); - + m_startCondition.Broadcast(); m_rcvCondition.Broadcast(); + StopThread(); } void *CAdapterCommunication::Process(void) { - m_controller->AddLog(CEC_LOG_DEBUG, "communication thread started"); + { + CLockObject lock(&m_mutex); + m_startCondition.Signal(); + } while (!IsStopped()) { @@ -372,5 +376,5 @@ bool CAdapterCommunication::PingAdapter(void) bool CAdapterCommunication::IsOpen(void) const { - return !IsStopped() && m_port->IsOpen(); + return !IsStopped() && m_port->IsOpen() && IsRunning(); }