From cf6b337675adf1428358e5bb1b95911e0320cc3b Mon Sep 17 00:00:00 2001 From: "jk.pu" Date: Tue, 27 Dec 2016 14:57:25 +0900 Subject: [PATCH] [systeminfo] fix error of tizen.systeminfo.getPropertyValue("LOCALE"...) wrt already set system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_LOCALE_LANGUAGE,..) this api is singleton , only one cb can be registered in each process. change API to vconf_notify_key_changed() instead of system_settings_set_changed_cb verification : check behavior and web tct. systeminfo 100% passed. Change-Id: I7ec858317ac8d58b3b11190f58187cf96c342bf6 Signed-off-by: jk.pu --- src/systeminfo/systeminfo_manager.cc | 41 ++++++++++++---------------- 1 file changed, 17 insertions(+), 24 deletions(-) diff --git a/src/systeminfo/systeminfo_manager.cc b/src/systeminfo/systeminfo_manager.cc index e20c3322..a0bdc62e 100644 --- a/src/systeminfo/systeminfo_manager.cc +++ b/src/systeminfo/systeminfo_manager.cc @@ -24,6 +24,7 @@ #include #include #include +#include #include "common/converter.h" #include "common/logger.h" @@ -166,7 +167,7 @@ static void OnDeviceOrientationChangedCb(sensor_t sensor, unsigned int event_typ manager->CallListenerCallback(kPropertyIdDeviceOrientation); } -static void OnLocaleChangedCb(system_settings_key_e key, void* event_ptr) { +static void OnLocaleChangedCb(keynode_t* node, void* event_ptr) { LoggerD("Enter"); SysteminfoManager* manager = static_cast(event_ptr); manager->CallListenerCallback(kPropertyIdLocale); @@ -1041,35 +1042,27 @@ PlatformResult SysteminfoManager::UnregisterDeviceOrientationListener() { PlatformResult SysteminfoManager::RegisterLocaleListener() { LoggerD("Entered"); - int ret = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_LOCALE_COUNTRY, - OnLocaleChangedCb, static_cast(this)); - if (SYSTEM_SETTINGS_ERROR_NONE != ret) { - return LogAndCreateResult( - ErrorCode::UNKNOWN_ERR, "Country change callback registration failed", - ("system_settings_set_changed_cb error: %d (%s)", ret, get_error_message(ret))); - } - - ret = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_LOCALE_LANGUAGE, - OnLocaleChangedCb, static_cast(this)); - if (SYSTEM_SETTINGS_ERROR_NONE != ret) { - return LogAndCreateResult( - ErrorCode::UNKNOWN_ERR, "Language change callback registration failed", - ("system_settings_set_changed_cb error: %d (%s)", ret, get_error_message(ret))); - } + PlatformResult ret = PlatformResult(ErrorCode::NO_ERROR); + CHECK_LISTENER_ERROR( + SysteminfoUtils::RegisterVconfCallback(VCONFKEY_REGIONFORMAT, + OnLocaleChangedCb, this)) + CHECK_LISTENER_ERROR( + SysteminfoUtils::RegisterVconfCallback(VCONFKEY_LANGSET, + OnLocaleChangedCb, this)) LoggerD("Added callback for LOCALE"); return PlatformResult(ErrorCode::NO_ERROR); } PlatformResult SysteminfoManager::UnregisterLocaleListener() { LoggerD("Entered"); - if (SYSTEM_SETTINGS_ERROR_NONE != - system_settings_unset_changed_cb(SYSTEM_SETTINGS_KEY_LOCALE_LANGUAGE) ) { - LoggerE("Unregistration of language change callback failed"); - } - if (SYSTEM_SETTINGS_ERROR_NONE != - system_settings_unset_changed_cb(SYSTEM_SETTINGS_KEY_LOCALE_COUNTRY) ) { - LoggerE("Unregistration of country change callback failed"); - } + PlatformResult ret = PlatformResult(ErrorCode::NO_ERROR); + CHECK_LISTENER_ERROR( + SysteminfoUtils::UnregisterVconfCallback(VCONFKEY_REGIONFORMAT, + OnLocaleChangedCb)) + CHECK_LISTENER_ERROR( + SysteminfoUtils::UnregisterVconfCallback(VCONFKEY_LANGSET, + OnLocaleChangedCb)) + LoggerD("Removed callback for LOCALE"); return PlatformResult(ErrorCode::NO_ERROR); } -- 2.34.1