cec: fix the command buffer
authorLars Op den Kamp <lars@opdenkamp.eu>
Thu, 29 Sep 2011 20:31:13 +0000 (22:31 +0200)
committerLars Op den Kamp <lars@opdenkamp.eu>
Thu, 29 Sep 2011 20:31:13 +0000 (22:31 +0200)
src/lib/CECParser.cpp
src/lib/util/buffer.h

index 97fbcd370b3542831ee2a67d41bade1068be92d0..547d6268116576529553a8c34d5c2df2e637453e 100644 (file)
@@ -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, &params);
+    }
   }
   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)
index dc7af8366c062f102fb03a80c4ba85cf84e78745..cafa65574414b5864718038b175d697566572cf9 100644 (file)
@@ -44,6 +44,8 @@ template<typename _BType>
     }
     virtual ~CecBuffer(void) {}
 
+    int Size(void) const { return m_buffer.size(); }
+
     bool Push(_BType entry)
     {
       CLockObject lock(&m_mutex);