From c49c485b94c3670438d329c15f4a785609a126f6 Mon Sep 17 00:00:00 2001 From: Lars Op den Kamp Date: Thu, 29 Sep 2011 22:31:13 +0200 Subject: [PATCH] cec: fix the command buffer --- src/lib/CECParser.cpp | 17 ++++++++++++++++- src/lib/util/buffer.h | 2 ++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/lib/CECParser.cpp b/src/lib/CECParser.cpp index 97fbcd3..547d626 100644 --- a/src/lib/CECParser.cpp +++ b/src/lib/CECParser.cpp @@ -761,6 +761,12 @@ void CCECParser::ParseCurrentFrame(void) BroadcastActiveSource(); } } + else + { + cec_frame params = m_currentframe; + params.erase(params.begin(), params.begin() + 2); + AddCommand((cec_logical_address) initiator, (cec_logical_address) destination, opCode, ¶ms); + } } else { @@ -867,7 +873,16 @@ void CCECParser::AddCommand(cec_logical_address source, cec_logical_address dest command.opcode = opcode; if (parameters) command.parameters = *parameters; - m_commandBuffer.Push(command); + if (m_commandBuffer.Push(command)) + { + CStdString strDebug; + strDebug.Format("stored command '%d' in the command buffer. buffer size = %d", opcode, m_commandBuffer.Size()); + AddLog(CEC_LOG_DEBUG, strDebug); + } + else + { + AddLog(CEC_LOG_WARNING, "command buffer is full"); + } } int CCECParser::GetMinVersion(void) diff --git a/src/lib/util/buffer.h b/src/lib/util/buffer.h index dc7af83..cafa655 100644 --- a/src/lib/util/buffer.h +++ b/src/lib/util/buffer.h @@ -44,6 +44,8 @@ template } virtual ~CecBuffer(void) {} + int Size(void) const { return m_buffer.size(); } + bool Push(_BType entry) { CLockObject lock(&m_mutex); -- 2.34.1