cec: add a void* parameter to the callback methods, that can be set when enabling...
[deb_libcec.git] / src / lib / LibCEC.cpp
index 55af1803b7c1d951a9937e2df2adc8d420214911..52dfa515776a7beada82a77e5c831b7f24209945 100644 (file)
@@ -46,7 +46,8 @@ CLibCEC::CLibCEC(const char *strDeviceName, cec_device_type_list types) :
     m_iStartTime(GetTimeMs()),
     m_iCurrentButton(CEC_USER_CONTROL_CODE_UNKNOWN),
     m_buttontime(0),
-    m_callbacks(NULL)
+    m_callbacks(NULL),
+    m_cbParam(NULL)
 {
   m_cec = new CCECProcessor(this, strDeviceName, types);
 }
@@ -55,7 +56,8 @@ CLibCEC::CLibCEC(const char *strDeviceName, cec_logical_address iLogicalAddress
     m_iStartTime(GetTimeMs()),
     m_iCurrentButton(CEC_USER_CONTROL_CODE_UNKNOWN),
     m_buttontime(0),
-    m_callbacks(NULL)
+    m_callbacks(NULL),
+    m_cbParam(NULL)
 {
   m_cec = new CCECProcessor(this, strDeviceName, iLogicalAddress, iPhysicalAddress);
 }
@@ -89,11 +91,14 @@ void CLibCEC::Close(void)
     m_cec->StopThread();
 }
 
-bool CLibCEC::EnableCallbacks(ICECCallbacks *callbacks)
+bool CLibCEC::EnableCallbacks(void *cbParam, ICECCallbacks *callbacks)
 {
   CLockObject lock(&m_mutex);
   if (m_cec)
+  {
+    m_cbParam   = cbParam;
     m_callbacks = callbacks;
+  }
   return false;
 }
 
@@ -347,7 +352,7 @@ void CLibCEC::AddLog(cec_log_level level, const string &strMessage)
     snprintf(message.message, sizeof(message.message), "%s", strMessage.c_str());
 
     if (m_callbacks)
-      m_callbacks->CBCecLogMessage(message);
+      m_callbacks->CBCecLogMessage(m_cbParam, message);
     else
       m_logBuffer.Push(message);
   }
@@ -357,7 +362,7 @@ void CLibCEC::AddKey(cec_keypress &key)
 {
   CLockObject lock(&m_mutex);
   if (m_callbacks)
-    m_callbacks->CBCecKeyPress(key);
+    m_callbacks->CBCecKeyPress(m_cbParam, key);
   else
     m_keyBuffer.Push(key);
   m_iCurrentButton = CEC_USER_CONTROL_CODE_UNKNOWN;
@@ -375,7 +380,7 @@ void CLibCEC::AddKey(void)
     key.keycode = m_iCurrentButton;
 
     if (m_callbacks)
-      m_callbacks->CBCecKeyPress(key);
+      m_callbacks->CBCecKeyPress(m_cbParam, key);
     else
       m_keyBuffer.Push(key);
     m_iCurrentButton = CEC_USER_CONTROL_CODE_UNKNOWN;
@@ -388,7 +393,7 @@ void CLibCEC::AddCommand(const cec_command &command)
   CLockObject lock(&m_mutex);
   if (m_callbacks)
   {
-    m_callbacks->CBCecCommand(command);
+    m_callbacks->CBCecCommand(m_cbParam, command);
   }
   else if (m_commandBuffer.Push(command))
   {