Loading media/libheadtracking/SensorPoseProvider.cpp +4 −3 Original line number Diff line number Diff line Loading @@ -174,7 +174,6 @@ class SensorPoseProviderImpl : public SensorPoseProvider { sp<Looper> mLooper; Listener* const mListener; SensorManager* const mSensorManager; std::thread mThread; std::mutex mMutex; std::map<int32_t, SensorEnableGuard> mEnabledSensors; std::map<int32_t, SensorExtra> mEnabledSensorsExtra GUARDED_BY(mMutex); Loading @@ -187,11 +186,13 @@ class SensorPoseProviderImpl : public SensorPoseProvider { // the worker thread and that thread would notify, via the promise below whenever initialization // is finished, and whether it was successful. std::promise<bool> mInitPromise; std::thread mThread; SensorPoseProviderImpl(const char* packageName, Listener* listener) : mListener(listener), mSensorManager(&SensorManager::getInstanceForPackage(String16(packageName))), mThread([this] { threadFunc(); }) {} mSensorManager(&SensorManager::getInstanceForPackage(String16(packageName))) { mThread = std::thread([this] { threadFunc(); }); } void initFinished(bool success) { mInitPromise.set_value(success); } Loading services/audiopolicy/service/SpatializerPoseController.cpp +4 −1 Original line number Diff line number Diff line Loading @@ -100,7 +100,10 @@ SpatializerPoseController::SpatializerPoseController(Listener* listener, .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; Loading services/audiopolicy/service/SpatializerPoseController.h +4 −1 Original line number Diff line number Diff line Loading @@ -123,12 +123,15 @@ class SpatializerPoseController : private media::SensorPoseProvider::Listener { int32_t mHeadSensor = media::SensorPoseProvider::INVALID_HANDLE; int32_t mScreenSensor = media::SensorPoseProvider::INVALID_HANDLE; std::optional<media::HeadTrackingMode> mActualMode; std::thread mThread; std::condition_variable mCondVar; bool mShouldCalculate = true; bool mShouldExit = false; bool mCalculated = false; // It's important that mThread is the last variable in this class // since we starts mThread in initializer list std::thread mThread; void onPose(int64_t timestamp, int32_t sensor, const media::Pose3f& pose, const std::optional<media::Twist3f>& twist, bool isNewReference) override; Loading Loading
media/libheadtracking/SensorPoseProvider.cpp +4 −3 Original line number Diff line number Diff line Loading @@ -174,7 +174,6 @@ class SensorPoseProviderImpl : public SensorPoseProvider { sp<Looper> mLooper; Listener* const mListener; SensorManager* const mSensorManager; std::thread mThread; std::mutex mMutex; std::map<int32_t, SensorEnableGuard> mEnabledSensors; std::map<int32_t, SensorExtra> mEnabledSensorsExtra GUARDED_BY(mMutex); Loading @@ -187,11 +186,13 @@ class SensorPoseProviderImpl : public SensorPoseProvider { // the worker thread and that thread would notify, via the promise below whenever initialization // is finished, and whether it was successful. std::promise<bool> mInitPromise; std::thread mThread; SensorPoseProviderImpl(const char* packageName, Listener* listener) : mListener(listener), mSensorManager(&SensorManager::getInstanceForPackage(String16(packageName))), mThread([this] { threadFunc(); }) {} mSensorManager(&SensorManager::getInstanceForPackage(String16(packageName))) { mThread = std::thread([this] { threadFunc(); }); } void initFinished(bool success) { mInitPromise.set_value(success); } Loading
services/audiopolicy/service/SpatializerPoseController.cpp +4 −1 Original line number Diff line number Diff line Loading @@ -100,7 +100,10 @@ SpatializerPoseController::SpatializerPoseController(Listener* listener, .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; Loading
services/audiopolicy/service/SpatializerPoseController.h +4 −1 Original line number Diff line number Diff line Loading @@ -123,12 +123,15 @@ class SpatializerPoseController : private media::SensorPoseProvider::Listener { int32_t mHeadSensor = media::SensorPoseProvider::INVALID_HANDLE; int32_t mScreenSensor = media::SensorPoseProvider::INVALID_HANDLE; std::optional<media::HeadTrackingMode> mActualMode; std::thread mThread; std::condition_variable mCondVar; bool mShouldCalculate = true; bool mShouldExit = false; bool mCalculated = false; // It's important that mThread is the last variable in this class // since we starts mThread in initializer list std::thread mThread; void onPose(int64_t timestamp, int32_t sensor, const media::Pose3f& pose, const std::optional<media::Twist3f>& twist, bool isNewReference) override; Loading