repositories
/
deb_libcec.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
7268960
)
cec: fixed - set power state to powered off when a device handled by libcec is made...
author
Lars Op den Kamp
<lars@opdenkamp.eu>
Fri, 9 Dec 2011 12:28:37 +0000
(13:28 +0100)
committer
Lars Op den Kamp
<lars@opdenkamp.eu>
Fri, 9 Dec 2011 12:28:37 +0000
(13:28 +0100)
src/lib/CECProcessor.cpp
patch
|
blob
|
blame
|
history
src/lib/devices/CECBusDevice.cpp
patch
|
blob
|
blame
|
history
src/lib/devices/CECBusDevice.h
patch
|
blob
|
blame
|
history
src/lib/implementations/CECCommandHandler.cpp
patch
|
blob
|
blame
|
history
diff --git
a/src/lib/CECProcessor.cpp
b/src/lib/CECProcessor.cpp
index 565d226493e08c96a316338180332befaa4aa5f4..60a6d1921944c1bbb6be47cfb610867003b91e32 100644
(file)
--- a/
src/lib/CECProcessor.cpp
+++ b/
src/lib/CECProcessor.cpp
@@
-530,7
+530,7
@@
bool CCECProcessor::SetPhysicalAddress(uint16_t iPhysicalAddress)
for (uint8_t iPtr = 0; iPtr < 15; iPtr++)
if (m_logicalAddresses[iPtr])
{
for (uint8_t iPtr = 0; iPtr < 15; iPtr++)
if (m_logicalAddresses[iPtr])
{
- m_busDevices[iPtr]->SetInactive
Devi
ce();
+ m_busDevices[iPtr]->SetInactive
Sour
ce();
m_busDevices[iPtr]->SetPhysicalAddress(iPhysicalAddress);
m_busDevices[iPtr]->TransmitPhysicalAddress();
}
m_busDevices[iPtr]->SetPhysicalAddress(iPhysicalAddress);
m_busDevices[iPtr]->TransmitPhysicalAddress();
}
diff --git
a/src/lib/devices/CECBusDevice.cpp
b/src/lib/devices/CECBusDevice.cpp
index f03f0cba0bbf590fd6d2baa325a5b6d56a595df2..41643a3519263a238d025fe92c6b2adc68750dde 100644
(file)
--- a/
src/lib/devices/CECBusDevice.cpp
+++ b/
src/lib/devices/CECBusDevice.cpp
@@
-434,10
+434,15
@@
void CCECBusDevice::SetMenuState(const cec_menu_state state)
}
}
}
}
-void CCECBusDevice::SetInactive
Devi
ce(void)
+void CCECBusDevice::SetInactive
Sour
ce(void)
{
{
- CLockObject lock(&m_writeMutex);
- m_bActiveSource = false;
+ {
+ CLockObject lock(&m_writeMutex);
+ m_bActiveSource = false;
+ }
+
+ if (MyLogicalAddressContains(m_iLogicalAddress))
+ SetPowerStatus(CEC_POWER_STATUS_STANDBY);
}
void CCECBusDevice::SetActiveSource(void)
}
void CCECBusDevice::SetActiveSource(void)
@@
-446,7
+451,7
@@
void CCECBusDevice::SetActiveSource(void)
for (int iPtr = 0; iPtr < 16; iPtr++)
if (iPtr != m_iLogicalAddress)
for (int iPtr = 0; iPtr < 16; iPtr++)
if (iPtr != m_iLogicalAddress)
- m_processor->m_busDevices[iPtr]->SetInactive
Devi
ce();
+ m_processor->m_busDevices[iPtr]->SetInactive
Sour
ce();
m_bActiveSource = true;
m_powerStatus = CEC_POWER_STATUS_ON;
m_bActiveSource = true;
m_powerStatus = CEC_POWER_STATUS_ON;
diff --git
a/src/lib/devices/CECBusDevice.h
b/src/lib/devices/CECBusDevice.h
index f1786f948d7725008aa1135501846f1974d2948b..b8a9aa94f74a59bc524415c433808a7503d5c45e 100644
(file)
--- a/
src/lib/devices/CECBusDevice.h
+++ b/
src/lib/devices/CECBusDevice.h
@@
-75,7
+75,7
@@
namespace CEC
virtual bool IsActiveSource(void) const { return m_bActiveSource; }
virtual bool IsActiveSource(void) const { return m_bActiveSource; }
- virtual void SetInactive
Devi
ce(void);
+ virtual void SetInactive
Sour
ce(void);
virtual void SetActiveSource(void);
virtual bool TryLogicalAddress(void);
virtual void SetActiveSource(void);
virtual bool TryLogicalAddress(void);
diff --git
a/src/lib/implementations/CECCommandHandler.cpp
b/src/lib/implementations/CECCommandHandler.cpp
index 11d550c32adf7bdd6874eab1bef9d3e544e9789a..80bc280a3bb9b8af47e7be43582baa8ef9f22111 100644
(file)
--- a/
src/lib/implementations/CECCommandHandler.cpp
+++ b/
src/lib/implementations/CECCommandHandler.cpp
@@
-564,7
+564,18
@@
bool CCECCommandHandler::HandleUserControlPressed(const cec_command &command)
{
CCECBusDevice *device = GetDevice(command.destination);
if (device)
{
CCECBusDevice *device = GetDevice(command.destination);
if (device)
+ {
device->SetPowerStatus(CEC_POWER_STATUS_ON);
device->SetPowerStatus(CEC_POWER_STATUS_ON);
+ if (device->MyLogicalAddressContains(device->GetLogicalAddress()))
+ {
+ device->SetActiveSource();
+ device->TransmitActiveSource();
+
+ if (device->GetType() == CEC_DEVICE_TYPE_PLAYBACK_DEVICE ||
+ device->GetType() == CEC_DEVICE_TYPE_RECORDING_DEVICE)
+ ((CCECPlaybackDevice *)device)->TransmitDeckStatus(command.initiator);
+ }
+ }
}
m_processor->SetCurrentButton((cec_user_control_code) command.parameters[0]);
}
m_processor->SetCurrentButton((cec_user_control_code) command.parameters[0]);