Fix race condition in thread creation

There is a race condition in thread creation in initializer list of a
class. If the thread is created in initializer list of a class, it must
be the last member variable of the class, as the thread is trying to
access some of the member variables in the thread which might not be
initialized yet.

There are two ways to fix this. One is to move the thread creation to
the constructor which all member variables of the class will be
initialized by that time or need to ensure the mThread variable is the
last variable of the class and the last one in the initializer list.

Bug: 235136279
Test: build
Change-Id: Iafb48377e29580cdfb30bedbd9e49c4b1ff6a148
Merged-In: Iafb48377e29580cdfb30bedbd9e49c4b1ff6a148
diff --git a/services/audiopolicy/service/SpatializerPoseController.cpp b/services/audiopolicy/service/SpatializerPoseController.cpp
index 304d44a..23bcd77 100644
--- a/services/audiopolicy/service/SpatializerPoseController.cpp
+++ b/services/audiopolicy/service/SpatializerPoseController.cpp
@@ -100,7 +100,10 @@
               .screenStillnessRotationalThreshold = kScreenStillnessRotationThreshold,
       })),
       mPoseProvider(SensorPoseProvider::create("headtracker", this)),
-      mThread([this, maxUpdatePeriod] {
+      mThread([this, maxUpdatePeriod] { // It's important that mThread is initialized after
+                                        // everything else because it runs a member
+                                        // function that may use any member
+                                        // of this class.
           while (true) {
               Pose3f headToStage;
               std::optional<HeadTrackingMode> modeIfChanged;