| 477 | } |
| 478 | |
| 479 | bool CCECBusDevice::TransmitSetMenuLanguage(const cec_logical_address destination, bool bIsReply) |
| 480 | { |
| 481 | bool bReturn(false); |
| 482 | char lang[4]; |
| 483 | { |
| 484 | CLockObject lock(m_mutex); |
| 485 | memcpy(lang, m_menuLanguage.c_str(), 4); |
| 486 | } |
| 487 | |
| 488 | MarkBusy(); |
| 489 | if (lang[0] == '?' && lang[1] == '?' && lang[2] == '?') |
| 490 | { |
| 491 | LIB_CEC->AddLog(CEC_LOG_DEBUG, "<< %s (%X) -> %s (%X): menu language feature abort", GetLogicalAddressName(), m_iLogicalAddress, ToString(destination), destination); |
| 492 | m_processor->TransmitAbort(m_iLogicalAddress, destination, CEC_OPCODE_GIVE_DEVICE_VENDOR_ID); |
| 493 | bReturn = true; |
| 494 | } |
| 495 | else |
| 496 | { |
| 497 | LIB_CEC->AddLog(CEC_LOG_DEBUG, "<< %s (%X) -> broadcast (F): menu language '%s'", GetLogicalAddressName(), m_iLogicalAddress, lang); |
| 498 | bReturn = m_handler->TransmitSetMenuLanguage(m_iLogicalAddress, lang, bIsReply); |
| 499 | } |
| 500 | MarkReady(); |
| 501 | return bReturn; |
| 502 | } |
| 503 | |
| 504 | bool CCECBusDevice::TransmitOSDString(const cec_logical_address destination, cec_display_control duration, const char *strMessage, bool bIsReply) |
| 505 | { |
nothing calls this directly
no test coverage detected