From 453e1631c492ff561b3602e03cd3d246131db361 Mon Sep 17 00:00:00 2001 From: Prabir Pradhan <prabirmsp@google.com> Date: Mon, 26 Feb 2024 21:27:31 +0000 Subject: [PATCH] Read pointer choreographer flag at boot In native code, we are sometimes reading the enable_pointer_choreographer flag value at boot, and sometimes later during runtime. Since DeviceConfig flag values can change at runtime, the flag values loaded later can sometimes change, resulting in an unexpected state where some code relies on the boot-time value and others on the "current" value. While we should have been using read-only flags in the first place, we cannot convert existing flags to be read-only. So to increase consistency within native code, change all reads of the enable_pointer_choreographer flag to happen at boot. Bug: 324534774 Test: Presubmit Change-Id: Id31496d987e2647fc1176dbdbba67bd6e4443aa1 --- libs/input/PointerController.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/libs/input/PointerController.cpp b/libs/input/PointerController.cpp index f84107e8792c..f9dc5fac7e21 100644 --- a/libs/input/PointerController.cpp +++ b/libs/input/PointerController.cpp @@ -41,6 +41,8 @@ namespace android { namespace { +static const bool ENABLE_POINTER_CHOREOGRAPHER = input_flags::enable_pointer_choreographer(); + const ui::Transform kIdentityTransform; } // namespace @@ -224,7 +226,7 @@ void PointerController::setPresentation(Presentation presentation) { mLocked.presentation = presentation; - if (input_flags::enable_pointer_choreographer()) { + if (ENABLE_POINTER_CHOREOGRAPHER) { // When pointer choreographer is enabled, the presentation mode is only set once when the // PointerController is constructed, before the display viewport is provided. // TODO(b/293587049): Clean up the PointerController interface after pointer choreographer -- GitLab