From 7e9ddf53447119f3c0ca7ecf3baede5ae98c8839 Mon Sep 17 00:00:00 2001 From: Jeongmo Yang Date: Wed, 6 Nov 2019 14:08:51 +0900 Subject: [PATCH] Add new flag to check server disconnection [Version] 0.5.44 [Profile] Common [Issue Type] Error handling Change-Id: I2fae80fc122fc933b37401c45db8c5e665d42c84 Signed-off-by: Jeongmo Yang --- include/sound_manager_private.h | 1 + packaging/capi-media-sound-manager.spec | 2 +- src/sound_manager.c | 10 +++++++--- src/sound_manager_private.c | 7 +++++++ 4 files changed, 16 insertions(+), 4 deletions(-) diff --git a/include/sound_manager_private.h b/include/sound_manager_private.h index 7792769..7f32c30 100644 --- a/include/sound_manager_private.h +++ b/include/sound_manager_private.h @@ -199,6 +199,7 @@ typedef struct _sound_pa_info_s { pa_threaded_mainloop *mainloop; pa_context *context; unsigned int index; + bool is_disconnected; } sound_pa_info_s; typedef struct _preferred_device_info_s { diff --git a/packaging/capi-media-sound-manager.spec b/packaging/capi-media-sound-manager.spec index 6f1eb69..ecdda42 100644 --- a/packaging/capi-media-sound-manager.spec +++ b/packaging/capi-media-sound-manager.spec @@ -1,6 +1,6 @@ Name: capi-media-sound-manager Summary: Sound Manager library -Version: 0.5.43 +Version: 0.5.44 Release: 0 Group: Multimedia/API License: Apache-2.0 diff --git a/src/sound_manager.c b/src/sound_manager.c index 0279a49..acadaa0 100644 --- a/src/sound_manager.c +++ b/src/sound_manager.c @@ -1249,9 +1249,13 @@ int sound_manager_destroy_stream_ducking(sound_stream_ducking_h stream_ducking) SM_INSTANCE_CHECK(ducking); - ret = _get_ducking_state(ducking->pa_info.index, &is_ducked); - if (ret != MM_ERROR_NONE) - return _convert_sound_manager_error_code(__func__, ret); + if (ducking->pa_info.is_disconnected == false) { + ret = _get_ducking_state(ducking->pa_info.index, &is_ducked); + if (ret != MM_ERROR_NONE) + return _convert_sound_manager_error_code(__func__, ret); + } else { + LOGW("disconnected handle. destroy it."); + } SM_ENTER_CRITICAL_SECTION_WITH_RETURN(&ducking_mutex, SOUND_MANAGER_ERROR_INTERNAL); diff --git a/src/sound_manager_private.c b/src/sound_manager_private.c index 30cce96..3d29f7a 100644 --- a/src/sound_manager_private.c +++ b/src/sound_manager_private.c @@ -818,7 +818,14 @@ void _pa_context_state_cb(pa_context *c, void *userdata) assert(c); state = pa_context_get_state(c); + LOGI("[%p] context state = [%d]", pa_info, state); + + if (state == PA_CONTEXT_FAILED) { + pa_info->is_disconnected = true; + LOGE("PA DISCONNECTED"); + } + switch (state) { case PA_CONTEXT_READY: case PA_CONTEXT_TERMINATED: -- 2.7.4