Merge "audio policy: fix regression in incall notification management" into mnc-dev
diff --git a/services/audioflinger/Threads.cpp b/services/audioflinger/Threads.cpp
index c8f9be0..d3ea9d8 100644
--- a/services/audioflinger/Threads.cpp
+++ b/services/audioflinger/Threads.cpp
@@ -375,6 +375,7 @@
         AUDIO_DEVICE_OUT_FM,                "FM",
         AUDIO_DEVICE_OUT_AUX_LINE,          "AUX_LINE",
         AUDIO_DEVICE_OUT_SPEAKER_SAFE,      "SPEAKER_SAFE",
+        AUDIO_DEVICE_OUT_IP,                "IP",
         AUDIO_DEVICE_NONE,                  "NONE",         // must be last
     }, mappingsIn[] = {
         AUDIO_DEVICE_IN_COMMUNICATION,      "COMMUNICATION",
@@ -397,6 +398,7 @@
         AUDIO_DEVICE_IN_SPDIF,              "SPDIF",
         AUDIO_DEVICE_IN_BLUETOOTH_A2DP,     "BLUETOOTH_A2DP",
         AUDIO_DEVICE_IN_LOOPBACK,           "LOOPBACK",
+        AUDIO_DEVICE_IN_IP,                 "IP",
         AUDIO_DEVICE_NONE,                  "NONE",         // must be last
     };
     String8 result;
diff --git a/services/audiopolicy/common/managerdefinitions/include/ConfigParsingUtils.h b/services/audiopolicy/common/managerdefinitions/include/ConfigParsingUtils.h
index a39006e..78d2cdf 100644
--- a/services/audiopolicy/common/managerdefinitions/include/ConfigParsingUtils.h
+++ b/services/audiopolicy/common/managerdefinitions/include/ConfigParsingUtils.h
@@ -73,6 +73,7 @@
     STRING_TO_ENUM(AUDIO_DEVICE_OUT_SPDIF),
     STRING_TO_ENUM(AUDIO_DEVICE_OUT_FM),
     STRING_TO_ENUM(AUDIO_DEVICE_OUT_AUX_LINE),
+    STRING_TO_ENUM(AUDIO_DEVICE_OUT_IP),
     STRING_TO_ENUM(AUDIO_DEVICE_IN_AMBIENT),
     STRING_TO_ENUM(AUDIO_DEVICE_IN_BUILTIN_MIC),
     STRING_TO_ENUM(AUDIO_DEVICE_IN_BLUETOOTH_SCO_HEADSET),
@@ -94,6 +95,7 @@
     STRING_TO_ENUM(AUDIO_DEVICE_IN_SPDIF),
     STRING_TO_ENUM(AUDIO_DEVICE_IN_BLUETOOTH_A2DP),
     STRING_TO_ENUM(AUDIO_DEVICE_IN_LOOPBACK),
+    STRING_TO_ENUM(AUDIO_DEVICE_IN_IP),
 };
 
 const StringToEnum sDeviceNameToEnumTable[] = {
@@ -124,6 +126,7 @@
     NAME_TO_ENUM("S/PDIF Out", AUDIO_DEVICE_OUT_SPDIF),
     NAME_TO_ENUM("FM transceiver Out", AUDIO_DEVICE_OUT_FM),
     NAME_TO_ENUM("Aux Line Out", AUDIO_DEVICE_OUT_AUX_LINE),
+    NAME_TO_ENUM("IP Out", AUDIO_DEVICE_OUT_IP),
     NAME_TO_ENUM("Ambient Mic", AUDIO_DEVICE_IN_AMBIENT),
     NAME_TO_ENUM("Built-In Mic", AUDIO_DEVICE_IN_BUILTIN_MIC),
     NAME_TO_ENUM("BT SCO Headset Mic", AUDIO_DEVICE_IN_BLUETOOTH_SCO_HEADSET),
@@ -145,6 +148,7 @@
     NAME_TO_ENUM("S/PDIF In", AUDIO_DEVICE_IN_SPDIF),
     NAME_TO_ENUM("BT A2DP In", AUDIO_DEVICE_IN_BLUETOOTH_A2DP),
     NAME_TO_ENUM("Loopback In", AUDIO_DEVICE_IN_LOOPBACK),
+    NAME_TO_ENUM("IP In", AUDIO_DEVICE_IN_IP),
 };
 
 const StringToEnum sOutputFlagNameToEnumTable[] = {
@@ -156,11 +160,15 @@
     STRING_TO_ENUM(AUDIO_OUTPUT_FLAG_NON_BLOCKING),
     STRING_TO_ENUM(AUDIO_OUTPUT_FLAG_HW_AV_SYNC),
     STRING_TO_ENUM(AUDIO_OUTPUT_FLAG_TTS),
+    STRING_TO_ENUM(AUDIO_OUTPUT_FLAG_RAW),
+    STRING_TO_ENUM(AUDIO_OUTPUT_FLAG_SYNC),
 };
 
 const StringToEnum sInputFlagNameToEnumTable[] = {
     STRING_TO_ENUM(AUDIO_INPUT_FLAG_FAST),
     STRING_TO_ENUM(AUDIO_INPUT_FLAG_HW_HOTWORD),
+    STRING_TO_ENUM(AUDIO_INPUT_FLAG_RAW),
+    STRING_TO_ENUM(AUDIO_INPUT_FLAG_SYNC),
 };
 
 const StringToEnum sFormatNameToEnumTable[] = {
diff --git a/services/audiopolicy/service/AudioPolicyService.cpp b/services/audiopolicy/service/AudioPolicyService.cpp
index fbe4f18..eefff3d 100644
--- a/services/audiopolicy/service/AudioPolicyService.cpp
+++ b/services/audiopolicy/service/AudioPolicyService.cpp
@@ -930,6 +930,7 @@
                 patch2 = ((CreateAudioPatchData *)command2->mParam.get())->mPatch;
             } else {
                 handle2 = ((ReleaseAudioPatchData *)command2->mParam.get())->mHandle;
+                memset(&patch2, 0, sizeof(patch2));
             }
             if (handle != handle2) break;
             /* Filter CREATE_AUDIO_PATCH commands only when they are issued for