moved code that handles the previous keypress
authorLars Op den Kamp <lars@opdenkamp.eu>
Fri, 21 Sep 2012 10:45:33 +0000 (12:45 +0200)
committerLars Op den Kamp <lars@opdenkamp.eu>
Fri, 21 Sep 2012 11:00:25 +0000 (13:00 +0200)
src/lib/CECClient.cpp
src/lib/implementations/CECCommandHandler.cpp

index c9525af15ace48fd132a3c78771d65873fdf79ee..0bbc081191652ba7b65a80bb88bd2070d5358e40 100644 (file)
@@ -972,9 +972,14 @@ void CCECClient::AddKey(void)
 
 void CCECClient::AddKey(const cec_keypress &key)
 {
+  // send back the previous key if there is one
+  AddKey();
+
   {
     CLockObject lock(m_mutex);
-    m_iCurrentButton = key.duration > 0 ? CEC_USER_CONTROL_CODE_UNKNOWN : key.keycode;
+    m_iCurrentButton = key.duration > 0 || key.keycode > CEC_USER_CONTROL_CODE_MAX ?
+        CEC_USER_CONTROL_CODE_UNKNOWN :
+        key.keycode;
     m_buttontime = key.duration > 0 ? 0 : GetTimeMs();
   }
 
index f20f6af9c063d2b4dd66e4909aa49ceade9e3bf6..d23340fed66aa32e21b551d40f9914397ee712cf 100644 (file)
@@ -673,9 +673,6 @@ int CCECCommandHandler::HandleUserControlPressed(const cec_command &command)
 
   CCECClient *client = device->GetClient();
   if (client)
-    client->AddKey();
-
-  if (command.parameters[0] <= CEC_USER_CONTROL_CODE_MAX)
     client->SetCurrentButton((cec_user_control_code) command.parameters[0]);
 
   if (command.parameters[0] == CEC_USER_CONTROL_CODE_POWER ||