AudioPolicyService: add check when creating the spatializer

Add a null pointer check on mAudioPolicyManager before calling
canBeVirtualized() in onFirstRef() to avoid continuous audioserver
crashes when a failure to init the audio HAL occurs.

Bug: 201230333
Test: make and boot
Change-Id: Idcf21e3ac2e6e3fdbdcb4f68217abdc15f9166e5
diff --git a/services/audiopolicy/service/AudioPolicyService.cpp b/services/audiopolicy/service/AudioPolicyService.cpp
index de71a00..102b376 100644
--- a/services/audiopolicy/service/AudioPolicyService.cpp
+++ b/services/audiopolicy/service/AudioPolicyService.cpp
@@ -142,11 +142,14 @@
     sensorPrivacyPolicy->registerSelf();
 
     // Create spatializer if supported
-    const audio_attributes_t attr = attributes_initializer(AUDIO_USAGE_MEDIA);
-    AudioDeviceTypeAddrVector devices;
-    bool hasSpatializer = mAudioPolicyManager->canBeSpatialized(&attr, nullptr, devices);
-    if (hasSpatializer) {
-        mSpatializer = Spatializer::create(this);
+    if (mAudioPolicyManager != nullptr) {
+        Mutex::Autolock _l(mLock);
+        const audio_attributes_t attr = attributes_initializer(AUDIO_USAGE_MEDIA);
+        AudioDeviceTypeAddrVector devices;
+        bool hasSpatializer = mAudioPolicyManager->canBeSpatialized(&attr, nullptr, devices);
+        if (hasSpatializer) {
+            mSpatializer = Spatializer::create(this);
+        }
     }
     AudioSystem::audioPolicyReady();
 }
@@ -381,6 +384,7 @@
     Mutex::Autolock _l(mLock);
 
     if (mSpatializer != nullptr) {
+        // Note: mSpatializer != nullptr =>  mAudioPolicyManager != nullptr
         if (mSpatializer->getLevel() != media::SpatializationLevel::NONE) {
             audio_io_handle_t currentOutput = mSpatializer->getOutput();
             audio_io_handle_t newOutput;