audio: reset output device when disconnecting HDMI

When HDMI is disconnected, the audio HAL should stop writing to
the PCM driver to avoid a write error and a long timeout.
THe problem is that if no audio track is active, the policy manager
will send a 0 device upon HDMI disconnection which is normally ignored.

The fix consists in forcing the device to speaker when transitioning from
HDMI to 0 device.

Bug 7141149.

Change-Id: I3e5878a1d6ec0446f7044eff95e6641332c718bf
diff --git a/alsa_sound/ALSAStreamOps.cpp b/alsa_sound/ALSAStreamOps.cpp
index 0ce9494..1cd75cb 100644
--- a/alsa_sound/ALSAStreamOps.cpp
+++ b/alsa_sound/ALSAStreamOps.cpp
@@ -206,6 +206,10 @@
     if (param.getInt(key, device) == NO_ERROR) {
         // Ignore routing if device is 0.
         ALOGD("setParameters(): keyRouting with device %d", device);
+        // reset to speaker when disconnecting HDMI to avoid timeout due to write errors
+        if ((device == 0) && (mDevices == AudioSystem::DEVICE_OUT_AUX_DIGITAL)) {
+            device = AudioSystem::DEVICE_OUT_SPEAKER;
+        }
         mDevices = device;
         if(device) {
             mParent->doRouting(device);