Query for BLAST flag outside of constructor

WindowManagerGlobal should query for flag only when the service has
successfully been retrieved.  Moving query into block where
sWindowManagerService is initalized

Bug: 149243163
Test: build, boot, adb shell device_config put
window_manager_native_boot wm_use_blast_adapter true/false

Change-Id: I864d60158236059fda9844844b07299bb97ee6d1
diff --git a/core/java/android/view/SurfaceView.java b/core/java/android/view/SurfaceView.java
index 637a088..d5ed36b 100644
--- a/core/java/android/view/SurfaceView.java
+++ b/core/java/android/view/SurfaceView.java
@@ -385,7 +385,7 @@
                  * This gets called on a RenderThread worker thread, so members accessed here must
                  * be protected by a lock.
                  */
-                final boolean useBLAST = WindowManagerGlobal.getInstance().useBLAST();
+                final boolean useBLAST = WindowManagerGlobal.useBLAST();
                 viewRoot.registerRtFrameCallback(frame -> {
                     try {
                         final SurfaceControl.Transaction t = useBLAST ?
@@ -1119,7 +1119,7 @@
 
     private void applySurfaceTransforms(SurfaceControl surface, SurfaceControl.Transaction t,
             Rect position, long frameNumber) {
-        if (frameNumber > 0 && !WindowManagerGlobal.getInstance().useBLAST()) {
+        if (frameNumber > 0 && !WindowManagerGlobal.useBLAST()) {
             final ViewRootImpl viewRoot = getViewRootImpl();
 
             t.deferTransactionUntil(surface, viewRoot.getRenderSurfaceControl(),
@@ -1137,7 +1137,7 @@
     }
 
     private void setParentSpaceRectangle(Rect position, long frameNumber) {
-        final boolean useBLAST = WindowManagerGlobal.getInstance().useBLAST();
+        final boolean useBLAST = WindowManagerGlobal.useBLAST();
         final ViewRootImpl viewRoot = getViewRootImpl();
         final SurfaceControl.Transaction t = useBLAST ? viewRoot.getBLASTSyncTransaction() :
             mRtTransaction;
@@ -1198,7 +1198,7 @@
 
         @Override
         public void positionLost(long frameNumber) {
-            boolean useBLAST = WindowManagerGlobal.getInstance().useBLAST();
+            boolean useBLAST = WindowManagerGlobal.useBLAST();
             if (DEBUG) {
                 Log.d(TAG, String.format("%d windowPositionLost, frameNr = %d",
                         System.identityHashCode(this), frameNumber));
@@ -1537,7 +1537,7 @@
     @Override
     public void invalidate(boolean invalidateCache) {
         super.invalidate(invalidateCache);
-        if (!WindowManagerGlobal.getInstance().useBLAST()) {
+        if (!WindowManagerGlobal.useBLAST()) {
             return;
         }
         final ViewRootImpl viewRoot = getViewRootImpl();
diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java
index ebfe66f..48f7d19 100644
--- a/core/java/android/view/ViewRootImpl.java
+++ b/core/java/android/view/ViewRootImpl.java
@@ -736,7 +736,7 @@
 
         loadSystemProperties();
         mImeFocusController = new ImeFocusController(this);
-        mUseBLASTAdapter = WindowManagerGlobal.getInstance().useBLAST();
+        mUseBLASTAdapter = WindowManagerGlobal.useBLAST();
     }
 
     public static void addFirstDrawHandler(Runnable callback) {
diff --git a/core/java/android/view/WindowManagerGlobal.java b/core/java/android/view/WindowManagerGlobal.java
index c22b892..01a1c77 100644
--- a/core/java/android/view/WindowManagerGlobal.java
+++ b/core/java/android/view/WindowManagerGlobal.java
@@ -56,7 +56,7 @@
 public final class WindowManagerGlobal {
     private static final String TAG = "WindowManager";
 
-    private final boolean mUseBLASTAdapter;
+    private static boolean sUseBLASTAdapter = false;
 
     /**
      * The user is navigating with keys (not the touch screen), so
@@ -159,11 +159,6 @@
     private Runnable mSystemPropertyUpdater;
 
     private WindowManagerGlobal() {
-        try {
-            mUseBLASTAdapter = getWindowManagerService().useBLAST();
-        } catch (RemoteException e) {
-            throw e.rethrowFromSystemServer();
-        }
     }
 
     @UnsupportedAppUsage
@@ -191,6 +186,7 @@
                     if (sWindowManagerService != null) {
                         ValueAnimator.setDurationScale(
                                 sWindowManagerService.getCurrentAnimatorScale());
+                        sUseBLASTAdapter = sWindowManagerService.useBLAST();
                     }
                 } catch (RemoteException e) {
                     throw e.rethrowFromSystemServer();
@@ -235,8 +231,8 @@
     /**
      * Whether or not to use BLAST for ViewRootImpl
      */
-    public boolean useBLAST() {
-        return mUseBLASTAdapter;
+    public static boolean useBLAST() {
+        return sUseBLASTAdapter;
     }
 
     @UnsupportedAppUsage