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:
9fd25e9
)
request the power status of the TV directly after registering a new client
author
Lars Op den Kamp
<lars@opdenkamp.eu>
Thu, 11 Oct 2012 11:21:09 +0000
(13:21 +0200)
committer
Lars Op den Kamp
<lars@opdenkamp.eu>
Thu, 11 Oct 2012 11:31:36 +0000
(13:31 +0200)
src/lib/CECProcessor.cpp
patch
|
blob
|
blame
|
history
diff --git
a/src/lib/CECProcessor.cpp
b/src/lib/CECProcessor.cpp
index 824744cc061d9e52bfd11c69099508d050b81575..97f57a47ac67a2758850e6bdfbab5fcb08eb04ca 100644
(file)
--- a/
src/lib/CECProcessor.cpp
+++ b/
src/lib/CECProcessor.cpp
@@
-730,13
+730,22
@@
bool CCECProcessor::RegisterClient(CCECClient *client)
// ensure that controlled mode is enabled
m_communication->SetControlledMode(true);
// ensure that controlled mode is enabled
m_communication->SetControlledMode(true);
+ // source logical address for requests
+ cec_logical_address sourceAddress(CECDEVICE_UNREGISTERED);
+ if (!m_communication->SupportsSourceLogicalAddress(CECDEVICE_UNREGISTERED))
+ {
+ if (m_communication->SupportsSourceLogicalAddress(CECDEVICE_FREEUSE))
+ sourceAddress = CECDEVICE_FREEUSE;
+ else
+ {
+ m_libcec->AddLog(CEC_LOG_ERROR, "failed to register a new CEC client: both unregistered and free use are not supported by the device");
+ return false;
+ }
+ }
+
// ensure that we know the vendor id of the TV
CCECBusDevice *tv = GetTV();
// ensure that we know the vendor id of the TV
CCECBusDevice *tv = GetTV();
- cec_vendor_id tvVendor = CEC_VENDOR_UNKNOWN;
- if (m_communication->SupportsSourceLogicalAddress(CECDEVICE_UNREGISTERED))
- tvVendor = tv->GetVendorId(CECDEVICE_UNREGISTERED);
- else if (m_communication->SupportsSourceLogicalAddress(CECDEVICE_FREEUSE))
- tvVendor = tv->GetVendorId(CECDEVICE_FREEUSE);
+ cec_vendor_id tvVendor(tv->GetVendorId(sourceAddress));
// wait until the handler is replaced, to avoid double registrations
if (tvVendor != CEC_VENDOR_UNKNOWN &&
// wait until the handler is replaced, to avoid double registrations
if (tvVendor != CEC_VENDOR_UNKNOWN &&
@@
-786,6
+795,8
@@
bool CCECProcessor::RegisterClient(CCECClient *client)
// mark the client as registered
client->SetRegistered(true);
// mark the client as registered
client->SetRegistered(true);
+ sourceAddress = client->GetPrimaryLogicalAdddress();
+
// initialise the client
bool bReturn = client->OnRegister();
// initialise the client
bool bReturn = client->OnRegister();
@@
-813,6
+824,9
@@
bool CCECProcessor::RegisterClient(CCECClient *client)
GetTV()->MarkHandlerReady();
}
GetTV()->MarkHandlerReady();
}
+ // request the power status of the TV
+ tv->RequestPowerStatus(sourceAddress, true);
+
return bReturn;
}
return bReturn;
}