toshiba: fixed - toshiba handler wasn't initialised, and toshiba uses more than one...
[deb_libcec.git] / src / lib / devices / CECBusDevice.cpp
index 83c9b4cd6140323f4ec9ea6defd23e74b4bafbd2..a2cfbee65da002f306f7c74961871ca87065ba0b 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of the libCEC(R) library.
  *
- * libCEC(R) is Copyright (C) 2011-2012 Pulse-Eight Limited.  All rights reserved.
+ * libCEC(R) is Copyright (C) 2011-2013 Pulse-Eight Limited.  All rights reserved.
  * libCEC(R) is an original work, containing original code.
  *
  * libCEC(R) is a trademark of Pulse-Eight Limited.
@@ -40,6 +40,7 @@
 #include "lib/implementations/SLCommandHandler.h"
 #include "lib/implementations/VLCommandHandler.h"
 #include "lib/implementations/PHCommandHandler.h"
+#include "lib/implementations/RLCommandHandler.h"
 #include "lib/LibCEC.h"
 #include "lib/CECTypeUtils.h"
 #include "lib/platform/util/timeutils.h"
@@ -136,6 +137,10 @@ bool CCECBusDevice::ReplaceHandler(bool bActivateSource /* = true */)
         case CEC_VENDOR_PHILIPS:
           m_handler = new CPHCommandHandler(this, iTransmitTimeout, iTransmitWait, iTransmitRetries, iActiveSourcePending);
           break;
+        case CEC_VENDOR_TOSHIBA:
+        case CEC_VENDOR_TOSHIBA2:
+          m_handler = new CRLCommandHandler(this, iTransmitTimeout, iTransmitWait, iTransmitRetries, iActiveSourcePending);
+          break;
         default:
           m_handler = new CCECCommandHandler(this, iTransmitTimeout, iTransmitWait, iTransmitRetries, iActiveSourcePending);
           break;
@@ -781,7 +786,7 @@ cec_bus_device_status CCECBusDevice::GetStatus(bool bForcePoll /* = false */, bo
   if (bNeedsPoll)
   {
     bool bPollAcked(false);
-    if (bNeedsPoll && NeedsPoll())
+    if (bNeedsPoll)
       bPollAcked = m_processor->PollDevice(m_iLogicalAddress);
 
     status = bPollAcked ? CEC_DEVICE_STATUS_PRESENT : CEC_DEVICE_STATUS_NOT_PRESENT;
@@ -1143,17 +1148,6 @@ void CCECBusDevice::SetActiveRoute(uint16_t iRoute)
     else
       newRoute->MarkAsActiveSource();
   }
-  else
-  {
-    // get the current active source and it's physical address
-    CCECBusDevice *device = m_processor->GetDevices()->GetActiveSource();
-    uint16_t iPhysicalAddress(device ? device->GetCurrentPhysicalAddress() : CEC_INVALID_PHYSICAL_ADDRESS);
-
-    // check whether the route below the device changed
-    if (CLibCEC::IsValidPhysicalAddress(iPhysicalAddress) &&
-        !CCECTypeUtils::PhysicalAddressIsIncluded(iPhysicalAddress, iRoute))
-      device->MarkAsInactiveSource();
-  }
 }
 
 void CCECBusDevice::SetStreamPath(uint16_t iNewAddress, uint16_t iOldAddress /* = CEC_INVALID_PHYSICAL_ADDRESS */)