X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Flib%2FLibCEC.cpp;h=abc800c19cc528af2ff0029f43b6787a9f9a5625;hb=48a229b119ab50aab51bfaefe8b5930204ea2dcf;hp=3437e451ee132f1a62e8da013825957d61fadd85;hpb=3424a2f327e569e92c7282c6e643536984a65c64;p=deb_libcec.git diff --git a/src/lib/LibCEC.cpp b/src/lib/LibCEC.cpp index 3437e45..abc800c 100644 --- a/src/lib/LibCEC.cpp +++ b/src/lib/LibCEC.cpp @@ -41,7 +41,7 @@ using namespace std; using namespace CEC; -CLibCEC::CLibCEC(const char *strDeviceName, cec_logical_address iLogicalAddress /* = CECDEVICE_PLAYBACKDEVICE1 */, uint8_t iPhysicalAddress /* = CEC_DEFAULT_PHYSICAL_ADDRESS */) : +CLibCEC::CLibCEC(const char *strDeviceName, cec_logical_address iLogicalAddress /* = CECDEVICE_PLAYBACKDEVICE1 */, uint16_t iPhysicalAddress /* = CEC_DEFAULT_PHYSICAL_ADDRESS */) : m_iCurrentButton(CEC_USER_CONTROL_CODE_UNKNOWN), m_buttontime(0) { @@ -51,6 +51,7 @@ CLibCEC::CLibCEC(const char *strDeviceName, cec_logical_address iLogicalAddress CLibCEC::~CLibCEC(void) { + Close(); delete m_cec; m_cec = NULL; @@ -61,7 +62,10 @@ CLibCEC::~CLibCEC(void) bool CLibCEC::Open(const char *strPort, uint64_t iTimeoutMs /* = 10000 */) { if (!m_comm) + { + AddLog(CEC_LOG_ERROR, "no comm port"); return false; + } if (m_comm->IsOpen()) { @@ -87,17 +91,9 @@ bool CLibCEC::Open(const char *strPort, uint64_t iTimeoutMs /* = 10000 */) void CLibCEC::Close(void) { if (m_cec) - { m_cec->StopThread(); - delete m_cec; - m_cec = NULL; - } if (m_comm) - { m_comm->Close(); - delete m_comm; - m_comm = NULL; - } } int CLibCEC::FindAdapters(std::vector &deviceList, const char *strDevicePath /* = NULL */) @@ -233,7 +229,7 @@ void CLibCEC::SetCurrentButton(cec_user_control_code iButtonCode) m_buttontime = GetTimeMs(); } -DECLSPEC void * CECCreate(const char *strDeviceName, CEC::cec_logical_address iLogicalAddress /*= CEC::CECDEVICE_PLAYBACKDEVICE1 */, uint8_t iPhysicalAddress /* = CEC_DEFAULT_PHYSICAL_ADDRESS */) +DECLSPEC void * CECCreate(const char *strDeviceName, CEC::cec_logical_address iLogicalAddress /*= CEC::CECDEVICE_PLAYBACKDEVICE1 */, uint16_t iPhysicalAddress /* = CEC_DEFAULT_PHYSICAL_ADDRESS */) { return static_cast< void* > (new CLibCEC(strDeviceName, iLogicalAddress, iPhysicalAddress)); }