repositories
/
deb_libcec.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
cec: fixed - mark a device as active source before transmitting the active source...
[deb_libcec.git]
/
src
/
lib
/
CECProcessor.cpp
diff --git
a/src/lib/CECProcessor.cpp
b/src/lib/CECProcessor.cpp
index e1e03b868d1ee6925bf319fd26c6f2b29fb801a8..565d226493e08c96a316338180332befaa4aa5f4 100644
(file)
--- a/
src/lib/CECProcessor.cpp
+++ b/
src/lib/CECProcessor.cpp
@@
-176,12
+176,6
@@
bool CCECProcessor::TryLogicalAddress(cec_logical_address address)
{
if (m_busDevices[address]->TryLogicalAddress())
{
{
if (m_busDevices[address]->TryLogicalAddress())
{
- /* only set our OSD name and active source for the primary device */
- if (m_logicalAddresses.IsEmpty())
- {
- m_busDevices[address]->m_strDeviceName = m_strDeviceName;
- m_busDevices[address]->m_bActiveSource = true;
- }
m_logicalAddresses.Set(address);
return true;
}
m_logicalAddresses.Set(address);
return true;
}
@@
-262,6
+256,10
@@
void *CCECProcessor::Process(void)
}
else
{
}
else
{
+ /* only set our OSD name and active source for the primary device */
+ m_busDevices[m_logicalAddresses.primary]->m_strDeviceName = m_strDeviceName;
+ m_busDevices[m_logicalAddresses.primary]->m_bActiveSource = true;
+
SetAckMask(m_logicalAddresses.AckMask());
CLockObject lock(&m_mutex);
SetAckMask(m_logicalAddresses.AckMask());
CLockObject lock(&m_mutex);
@@
-331,8
+329,8
@@
bool CCECProcessor::SetActiveSource(cec_device_type type /* = CEC_DEVICE_TYPE_RE
}
}
}
}
- bReturn = m_busDevices[addr]->TransmitActiveSource() &&
-
SetStreamPath(m_busDevices[addr]->GetPhysicalAddress(false)
);
+ m_busDevices[addr]->SetActiveSource();
+
bReturn = m_busDevices[addr]->TransmitActiveSource(
);
if (bReturn && (m_busDevices[addr]->GetType() == CEC_DEVICE_TYPE_PLAYBACK_DEVICE ||
m_busDevices[addr]->GetType() == CEC_DEVICE_TYPE_RECORDING_DEVICE))
if (bReturn && (m_busDevices[addr]->GetType() == CEC_DEVICE_TYPE_PLAYBACK_DEVICE ||
m_busDevices[addr]->GetType() == CEC_DEVICE_TYPE_RECORDING_DEVICE))
@@
-343,6
+341,20
@@
bool CCECProcessor::SetActiveSource(cec_device_type type /* = CEC_DEVICE_TYPE_RE
return bReturn;
}
return bReturn;
}
+bool CCECProcessor::SetActiveSource(uint16_t iStreamPath)
+{
+ bool bReturn(false);
+
+ CCECBusDevice *device = GetDeviceByPhysicalAddress(iStreamPath);
+ if (device)
+ {
+ device->SetActiveSource();
+ bReturn = true;
+ }
+
+ return bReturn;
+}
+
void CCECProcessor::SetStandardLineTimeout(uint8_t iTimeout)
{
CLockObject lock(&m_mutex);
void CCECProcessor::SetStandardLineTimeout(uint8_t iTimeout)
{
CLockObject lock(&m_mutex);
@@
-460,20
+472,6
@@
bool CCECProcessor::PhysicalAddressInUse(uint16_t iPhysicalAddress)
return false;
}
return false;
}
-bool CCECProcessor::SetStreamPath(uint16_t iStreamPath)
-{
- bool bReturn(false);
-
- CCECBusDevice *device = GetDeviceByPhysicalAddress(iStreamPath);
- if (device)
- {
- device->SetActiveDevice();
- bReturn = true;
- }
-
- return bReturn;
-}
-
bool CCECProcessor::TransmitInactiveSource(void)
{
if (!IsRunning())
bool CCECProcessor::TransmitInactiveSource(void)
{
if (!IsRunning())
@@
-590,7
+588,7
@@
bool CCECProcessor::PollDevice(cec_logical_address iAddress)
uint8_t CCECProcessor::VolumeUp(void)
{
uint8_t status = 0;
uint8_t CCECProcessor::VolumeUp(void)
{
uint8_t status = 0;
- if (Is
Active
Device(CECDEVICE_AUDIOSYSTEM))
+ if (Is
Present
Device(CECDEVICE_AUDIOSYSTEM))
status = ((CCECAudioSystem *)m_busDevices[CECDEVICE_AUDIOSYSTEM])->VolumeUp();
return status;
status = ((CCECAudioSystem *)m_busDevices[CECDEVICE_AUDIOSYSTEM])->VolumeUp();
return status;
@@
-599,7
+597,7
@@
uint8_t CCECProcessor::VolumeUp(void)
uint8_t CCECProcessor::VolumeDown(void)
{
uint8_t status = 0;
uint8_t CCECProcessor::VolumeDown(void)
{
uint8_t status = 0;
- if (Is
Active
Device(CECDEVICE_AUDIOSYSTEM))
+ if (Is
Present
Device(CECDEVICE_AUDIOSYSTEM))
status = ((CCECAudioSystem *)m_busDevices[CECDEVICE_AUDIOSYSTEM])->VolumeDown();
return status;
status = ((CCECAudioSystem *)m_busDevices[CECDEVICE_AUDIOSYSTEM])->VolumeDown();
return status;
@@
-608,7
+606,7
@@
uint8_t CCECProcessor::VolumeDown(void)
uint8_t CCECProcessor::MuteAudio(void)
{
uint8_t status = 0;
uint8_t CCECProcessor::MuteAudio(void)
{
uint8_t status = 0;
- if (Is
Active
Device(CECDEVICE_AUDIOSYSTEM))
+ if (Is
Present
Device(CECDEVICE_AUDIOSYSTEM))
status = ((CCECAudioSystem *)m_busDevices[CECDEVICE_AUDIOSYSTEM])->MuteAudio();
return status;
status = ((CCECAudioSystem *)m_busDevices[CECDEVICE_AUDIOSYSTEM])->MuteAudio();
return status;
@@
-717,6
+715,13
@@
bool CCECProcessor::Transmit(const cec_command &data)
LogOutput(data);
CCECAdapterMessage *output = new CCECAdapterMessage(data);
LogOutput(data);
CCECAdapterMessage *output = new CCECAdapterMessage(data);
+
+ /* set the number of retries */
+ if (data.opcode == CEC_OPCODE_NONE)
+ output->maxTries = 1;
+ else if (data.initiator != CECDEVICE_BROADCAST)
+ output->maxTries = m_busDevices[data.initiator]->GetHandler()->GetTransmitRetries() + 1;
+
bReturn = Transmit(output);
/* set to "not present" on failed ack */
bReturn = Transmit(output);
/* set to "not present" on failed ack */
@@
-926,12
+931,12
@@
cec_logical_addresses CCECProcessor::GetActiveDevices(void)
return addresses;
}
return addresses;
}
-bool CCECProcessor::Is
Active
Device(cec_logical_address address)
+bool CCECProcessor::Is
Present
Device(cec_logical_address address)
{
return m_busDevices[address]->GetStatus() == CEC_DEVICE_STATUS_PRESENT;
}
{
return m_busDevices[address]->GetStatus() == CEC_DEVICE_STATUS_PRESENT;
}
-bool CCECProcessor::Is
Active
DeviceType(cec_device_type type)
+bool CCECProcessor::Is
Present
DeviceType(cec_device_type type)
{
for (unsigned int iPtr = 0; iPtr < 15; iPtr++)
{
{
for (unsigned int iPtr = 0; iPtr < 15; iPtr++)
{