From 46291616486979986cba3ab83e894728ef53063f Mon Sep 17 00:00:00 2001 From: Eric Laurent Date: Thu, 18 Jul 2013 14:38:44 -0700 Subject: [PATCH] AudioSystem: new audioflinger restart detection Add a specific method to AudioSystem for AudioService to poll for AudioFlinger service restart instead of relying on current callback mechanism which is flaky. Bug: 9693068. Change-Id: Ie88bc9d25033503bc5cd2fa9d8c754d0f8045b8f --- include/media/AudioSystem.h | 3 +++ media/libmedia/AudioSystem.cpp | 8 ++++++++ 2 files changed, 11 insertions(+) diff --git a/include/media/AudioSystem.h b/include/media/AudioSystem.h index 006af08e3f..225ef76406 100644 --- a/include/media/AudioSystem.h +++ b/include/media/AudioSystem.h @@ -252,6 +252,9 @@ public: // bit rate, duration, video and streaming or offload property is enabled static bool isOffloadSupported(const audio_offload_info_t& info); + // check presence of audio flinger service. + // returns NO_ERROR if binding to service succeeds, DEAD_OBJECT otherwise + static status_t checkAudioFlinger(); // ---------------------------------------------------------------------------- private: diff --git a/media/libmedia/AudioSystem.cpp b/media/libmedia/AudioSystem.cpp index a571fe469e..8033c2c94b 100644 --- a/media/libmedia/AudioSystem.cpp +++ b/media/libmedia/AudioSystem.cpp @@ -76,6 +76,14 @@ const sp& AudioSystem::get_audio_flinger() return gAudioFlinger; } +/* static */ status_t AudioSystem::checkAudioFlinger() +{ + if (defaultServiceManager()->checkService(String16("media.audio_flinger")) != 0) { + return NO_ERROR; + } + return DEAD_OBJECT; +} + status_t AudioSystem::muteMicrophone(bool state) { const sp& af = AudioSystem::get_audio_flinger(); if (af == 0) return PERMISSION_DENIED; -- 2.11.0