gpu_display: log elapsed time for updating host viewport size.

`update_virtual_display_projection()` calls into gfxstream, which may
take a long time to finish if we have a hard time acquiring a certain
lock in gfxstream (b/244201551). We will log the elapsed time and create
a B2T2 rule to catch hanging events.

Bug: 244201551
Test: Ran GPG and checked the log
Change-Id: I4055abc77bcbeeea465e6a79353d0e57fbb63acc
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4802517
Reviewed-by: Vikram Auradkar <auradkar@google.com>
This commit is contained in:
Pujun Lun 2022-09-08 10:55:53 -07:00 committed by crosvm LUCI
parent a1e0d46704
commit be5eb18d11

View file

@ -3,6 +3,7 @@
// found in the LICENSE file.
use std::rc::Rc;
use std::time::Duration;
use anyhow::Context;
use anyhow::Result;
@ -26,6 +27,13 @@ use super::ObjectId;
use crate::EventDevice;
use crate::EventDeviceKind;
// Once a window message is added to the message queue, if it is not retrieved within 5 seconds,
// Windows will mark the application as "Not Responding", so we'd better finish processing any
// message within this timeout and retrieve the next one.
// https://docs.microsoft.com/en-us/windows/win32/win7appqual/preventing-hangs-in-windows-applications
#[allow(dead_code)]
pub(crate) const HANDLE_WINDOW_MESSAGE_TIMEOUT: Duration = Duration::from_secs(5);
/// Thread message for killing the window during a `WndProcThread` drop. This indicates an error
/// within crosvm that internally causes the WndProc thread to be dropped, rather than when the
/// user/service initiates the window to be killed.