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