From 9c75bf203974fab1bf71dad4128027b7f7b07b65 Mon Sep 17 00:00:00 2001 From: Jakub Skowron Date: Wed, 14 Dec 2016 10:28:27 +0100 Subject: [PATCH] [Sound] Remove usage of deprecated native API functions There were pairs of deprecated callback set/unset functions (allowing only one callback). Now using add/remove. [Verification] Web TCT auto and manual sound tests 100% PASS Change-Id: Ieea0ed977831d5aa9695388b39c5b4848ec500d1 Signed-off-by: Jakub Skowron --- src/sound/sound_manager.cc | 72 +++++++++++++++++++++----------------- src/sound/sound_manager.h | 5 ++- 2 files changed, 44 insertions(+), 33 deletions(-) diff --git a/src/sound/sound_manager.cc b/src/sound/sound_manager.cc index d6e62025..9917c0e1 100644 --- a/src/sound/sound_manager.cc +++ b/src/sound/sound_manager.cc @@ -16,6 +16,9 @@ #include "sound/sound_manager.h" +#include +#include + #include #include #include @@ -122,7 +125,7 @@ std::string SoundManager::SoundIOTypeToString(sound_device_io_direction_e type) SoundManager::SoundManager(SoundInstance& instance) : is_volume_change_listener_(false), soundModeChangeListening(false), - sound_device_change_listener_(false), + is_sound_device_change_listener_(false), instance_(instance), soundModeListener(nullptr) { FillMaxVolumeMap(); @@ -133,19 +136,19 @@ SoundManager::~SoundManager() { UnsetSoundModeChangeListener(); - if (sound_device_change_listener_) { - if (SOUND_MANAGER_ERROR_NONE != sound_manager_unset_device_connected_cb()) { - LoggerE("Cannot unregister connection listener!"); + if (is_sound_device_change_listener_) { + if (SOUND_MANAGER_ERROR_NONE != sound_manager_remove_device_connection_changed_cb(sound_device_connection_listener_id_)) { + LoggerE("Cannot unregister connection listener id == %d", sound_device_connection_listener_id_); } - if (SOUND_MANAGER_ERROR_NONE != sound_manager_unset_device_information_changed_cb()) { - LoggerE("Cannot unregister information listener!"); + if (SOUND_MANAGER_ERROR_NONE != sound_manager_remove_device_state_changed_cb(sound_device_state_listener_id_)) { + LoggerE("Cannot unregister state listener id == %d", sound_device_state_listener_id_); } } if (is_volume_change_listener_) { - if (SOUND_MANAGER_ERROR_NONE != sound_manager_unset_volume_changed_cb()) { - LoggerE("Cannot unregister volume listener!"); + if (SOUND_MANAGER_ERROR_NONE != sound_manager_remove_volume_changed_cb(volume_change_listener_id_)) { + LoggerE("Cannot unregister volume listener id == %d", volume_change_listener_id_); } } } @@ -399,12 +402,14 @@ PlatformResult SoundManager::UnsetSoundModeChangeListener() { PlatformResult SoundManager::SetVolumeChangeListener() { LoggerD("Enter"); if (!is_volume_change_listener_) { - int ret = sound_manager_set_volume_changed_cb( + int ret = sound_manager_add_volume_changed_cb( [](sound_type_e type, unsigned int value, void* ud) { return static_cast(ud) ->VolumeChangeCallback(type, value); }, - static_cast(this)); + static_cast(this), + &volume_change_listener_id_ + ); if (ret != SOUND_MANAGER_ERROR_NONE) { return LogAndCreateResult( @@ -425,7 +430,7 @@ PlatformResult SoundManager::UnsetVolumeChangeListener() { return PlatformResult(ErrorCode::NO_ERROR); } - int ret = sound_manager_unset_volume_changed_cb(); + int ret = sound_manager_remove_volume_changed_cb(volume_change_listener_id_); if (ret != SOUND_MANAGER_ERROR_NONE) { return LogAndCreateResult( ErrorCode::UNKNOWN_ERR, "Failed to unset volume changed callback", @@ -617,20 +622,19 @@ void SoundManager::DeviceChangeCB(sound_device_h device, bool is_connected, bool } } -void DeviceConnectionChangeCB(sound_device_h device, bool is_connected, void *user_data) { +void DeviceConnectionChangedCB(sound_device_h device, bool is_connected, void *user_data) { LoggerD("Entered"); + SoundManager* h = static_cast(user_data); h->DeviceChangeCB(device, is_connected, false); } -void DeviceActivationChangeCB(sound_device_h device, sound_device_changed_info_e changed_info, +void DeviceStateChangedCB(sound_device_h device, sound_device_state_e unused, void *user_data) { LoggerD("Entered"); - if (SOUND_DEVICE_CHANGED_INFO_STATE == changed_info) { - SoundManager* h = static_cast(user_data); - h->DeviceChangeCB(device, false, true); - } + SoundManager* h = static_cast(user_data); + h->DeviceChangeCB(device, false, true); } PlatformResult SoundManager::AddDeviceStateChangeListener() { @@ -639,24 +643,28 @@ PlatformResult SoundManager::AddDeviceStateChangeListener() { int ret = SOUND_MANAGER_ERROR_NONE; sound_device_mask_e mask = SOUND_DEVICE_ALL_MASK; - if (!sound_device_change_listener_) { - ret = sound_manager_set_device_connected_cb(mask, DeviceConnectionChangeCB, this); + if (!is_sound_device_change_listener_) { + ret = sound_manager_add_device_connection_changed_cb(mask, DeviceConnectionChangedCB, + this, &sound_device_connection_listener_id_); if (SOUND_MANAGER_ERROR_NONE != ret) { return LogAndCreateResult( ErrorCode::UNKNOWN_ERR, "Setting connection listener failed", - ("sound_manager_set_device_connected_cb error: %d (%s)", + ("sound_manager_add_device_connection_changed_cb error: %d (%s)", ret, get_error_message(ret))); } - ret = sound_manager_set_device_information_changed_cb(mask, DeviceActivationChangeCB, this); + ret = sound_manager_add_device_state_changed_cb(mask, DeviceStateChangedCB, + this, &sound_device_state_listener_id_); if (SOUND_MANAGER_ERROR_NONE != ret) { + // silently cleanup connection changed callback registered in previous step + sound_manager_remove_device_connection_changed_cb(sound_device_connection_listener_id_); return LogAndCreateResult( - ErrorCode::UNKNOWN_ERR, "Setting information listener failed", - ("sound_manager_set_device_information_changed_cb error: %d (%s)", + ErrorCode::UNKNOWN_ERR, "Setting state listener failed", + ("sound_manager_add_device_state_changed_cb error: %d (%s)", ret, get_error_message(ret))); } - sound_device_change_listener_ = true; + is_sound_device_change_listener_ = true; } return PlatformResult(ErrorCode::NO_ERROR); @@ -665,22 +673,22 @@ PlatformResult SoundManager::AddDeviceStateChangeListener() { PlatformResult SoundManager::RemoveDeviceStateChangeListener() { LoggerD("Entered"); - if (sound_device_change_listener_) { - int ret = sound_manager_unset_device_connected_cb(); + if (is_sound_device_change_listener_) { + int ret = sound_manager_remove_device_connection_changed_cb(sound_device_connection_listener_id_); if (SOUND_MANAGER_ERROR_NONE != ret) { return LogAndCreateResult( - ErrorCode::UNKNOWN_ERR, "Unsetting information listener failed", - ("sound_manager_unset_device_connected_cb error: %d (%s)", ret, get_error_message(ret))); + ErrorCode::UNKNOWN_ERR, "Removing connection listener failed", + ("sound_manager_remove_device_connection_changed_cb error: %d (%s)", ret, get_error_message(ret))); } - ret = sound_manager_unset_device_information_changed_cb(); + ret = sound_manager_remove_device_state_changed_cb(sound_device_state_listener_id_); if (SOUND_MANAGER_ERROR_NONE != ret) { return LogAndCreateResult( - ErrorCode::UNKNOWN_ERR, "Unsetting information listener failed", - ("sound_manager_unset_device_information_changed_cb error: %d (%s)", ret, get_error_message(ret))); + ErrorCode::UNKNOWN_ERR, "Removing state listener failed", + ("sound_manager_remove_device_state_changed_cb error: %d (%s)", ret, get_error_message(ret))); } - sound_device_change_listener_ = false; + is_sound_device_change_listener_ = false; } return PlatformResult(ErrorCode::NO_ERROR); diff --git a/src/sound/sound_manager.h b/src/sound/sound_manager.h index b0319a38..bb019bc4 100644 --- a/src/sound/sound_manager.h +++ b/src/sound/sound_manager.h @@ -57,6 +57,7 @@ class SoundManager { std::map max_volume_map_; bool is_volume_change_listener_; + int volume_change_listener_id_; static const std::map platform_enum_map_; @@ -81,7 +82,9 @@ class SoundManager { static double ConvertToSystemVolume(int max_volume, int volume); static void soundModeChangedCb(keynode_t* node, void* user_data); bool soundModeChangeListening; - bool sound_device_change_listener_; + bool is_sound_device_change_listener_; + int sound_device_connection_listener_id_; + int sound_device_state_listener_id_; SoundInstance& instance_; SoundManagerSoundModeChangedListener* soundModeListener; }; -- 2.34.1