diff options
author | Daniel Norman <danielnorman@google.com> | 2021-07-20 15:49:50 -0700 |
---|---|---|
committer | Jason Macnak <natsu@google.com> | 2021-10-08 11:32:36 -0700 |
commit | e72ea2cee9d4c0f1cd13cec51407aa87147f0082 (patch) | |
tree | 9ea9b0d7c80046fcc8043570d219b0b3a9b4b3d6 | |
parent | c4f38ecfd0221aa027d945d3cc88fb56a289910a (diff) | |
download | cuttlefish-e72ea2cee9d4c0f1cd13cec51407aa87147f0082.tar.gz |
Update WebRTC to hide/show displays on power mode changes.
Test: Use with foldable multi-display cuttlefish
Bug: 201451003
Change-Id: I6d9da925a750f6e7b90063d51ea8e0c5c77ff437
Merged-In: I6d9da925a750f6e7b90063d51ea8e0c5c77ff437
6 files changed, 36 insertions, 1 deletions
diff --git a/host/commands/kernel_log_monitor/kernel_log_server.cc b/host/commands/kernel_log_monitor/kernel_log_server.cc index 66fafab27..03fc90dad 100644 --- a/host/commands/kernel_log_monitor/kernel_log_server.cc +++ b/host/commands/kernel_log_monitor/kernel_log_server.cc @@ -41,10 +41,13 @@ static const std::map<std::string, monitor::Event> kStageToEventMap = { {cuttlefish::kMobileNetworkConnectedMessage, monitor::Event::MobileNetworkConnected}, {cuttlefish::kWifiConnectedMessage, monitor::Event::WifiNetworkConnected}, - {cuttlefish::kEthernetConnectedMessage, monitor::Event::EthernetNetworkConnected}, + {cuttlefish::kEthernetConnectedMessage, + monitor::Event::EthernetNetworkConnected}, // TODO(b/131864854): Replace this with a string less likely to change {"init: starting service 'adbd'...", monitor::Event::AdbdStarted}, {cuttlefish::kScreenChangedMessage, monitor::Event::ScreenChanged}, + {cuttlefish::kDisplayPowerModeChangedMessage, + monitor::Event::DisplayPowerModeChanged}, }; void ProcessSubscriptions( diff --git a/host/commands/kernel_log_monitor/kernel_log_server.h b/host/commands/kernel_log_monitor/kernel_log_server.h index 659a3724a..dab675d20 100644 --- a/host/commands/kernel_log_monitor/kernel_log_server.h +++ b/host/commands/kernel_log_monitor/kernel_log_server.h @@ -37,6 +37,7 @@ enum Event : int32_t { AdbdStarted = 5, ScreenChanged = 6, EthernetNetworkConnected = 7, + DisplayPowerModeChanged = 9, }; enum class SubscriptionAction { diff --git a/host/frontend/webrtc/kernel_log_events_handler.cpp b/host/frontend/webrtc/kernel_log_events_handler.cpp index ca14e6f05..e31e4daa1 100644 --- a/host/frontend/webrtc/kernel_log_events_handler.cpp +++ b/host/frontend/webrtc/kernel_log_events_handler.cpp @@ -86,6 +86,12 @@ void KernelLogEventsHandler::ReadLoop() { message["metadata"] = read_result->metadata; DeliverEvent(message); } + if (read_result->event == monitor::Event::DisplayPowerModeChanged) { + Json::Value message; + message["event"] = kDisplayPowerModeChangedMessage; + message["metadata"] = read_result->metadata; + DeliverEvent(message); + } } } } diff --git a/host/frontend/webrtc_operator/assets/js/app.js b/host/frontend/webrtc_operator/assets/js/app.js index df111562a..cbc37c620 100644 --- a/host/frontend/webrtc_operator/assets/js/app.js +++ b/host/frontend/webrtc_operator/assets/js/app.js @@ -133,6 +133,27 @@ function ConnectToDevice(device_id) { takePhoto(); } } + if (message_data.event == 'VIRTUAL_DEVICE_DISPLAY_POWER_MODE_CHANGED') { + updateDisplayVisibility(metadata.display, metadata.mode); + } + } + + function updateDisplayVisibility(displayId, powerMode) { + const display = document.getElementById('display_' + displayId); + if (display == null) { + console.error('Unknown display id: ' + displayId); + return; + } + switch (powerMode) { + case 'On': + display.style.visibility = 'visible'; + break; + case 'Off': + display.style.visibility = 'hidden'; + break; + default: + console.error('Display ' + displayId + ' has unknown display power mode: ' + powerMode); + } } function getTransformRotation(element) { diff --git a/host/libs/config/cuttlefish_config.h b/host/libs/config/cuttlefish_config.h index 199ba33e3..2028874ef 100644 --- a/host/libs/config/cuttlefish_config.h +++ b/host/libs/config/cuttlefish_config.h @@ -52,6 +52,8 @@ constexpr char kWifiConnectedMessage[] = constexpr char kEthernetConnectedMessage[] = "VIRTUAL_DEVICE_NETWORK_ETHERNET_CONNECTED"; constexpr char kScreenChangedMessage[] = "VIRTUAL_DEVICE_SCREEN_CHANGED"; +constexpr char kDisplayPowerModeChangedMessage[] = + "VIRTUAL_DEVICE_DISPLAY_POWER_MODE_CHANGED"; constexpr char kInternalDirName[] = "internal"; constexpr char kSharedDirName[] = "shared"; constexpr char kCrosvmVarEmptyDir[] = "/var/empty"; diff --git a/shared/sepolicy/vendor/hal_graphics_composer_default.te b/shared/sepolicy/vendor/hal_graphics_composer_default.te index 807ec7366..2dcee246b 100644 --- a/shared/sepolicy/vendor/hal_graphics_composer_default.te +++ b/shared/sepolicy/vendor/hal_graphics_composer_default.te @@ -3,6 +3,8 @@ vndbinder_use(hal_graphics_composer_default) allow hal_graphics_composer_default self:netlink_kobject_uevent_socket { bind create read }; +allow hal_graphics_composer_default kmsg_device:chr_file w_file_perms; + # Supress warnings for drm_hwcomposer trying to read some vendor.hwc.* # properties as Cuttlefish never configures these properties. dontaudit hal_graphics_composer_default default_prop:file read;
\ No newline at end of file |