Modify TimeZoneChangedEvent implementation
authorHwankyu Jhun <h.jhun@samsung.com>
Wed, 24 Jan 2024 08:02:25 +0000 (17:02 +0900)
committerHwankyu Jhun <h.jhun@samsung.com>
Wed, 24 Jan 2024 10:05:21 +0000 (19:05 +0900)
The vconf event of time zone changed is registered when the AppCoreBase::Init()
is called. The tzset() should be called when the time zone is changed.

Change-Id: Icc6a5fda4e92c11dbecda089179c5a590588e235
Signed-off-by: Hwankyu Jhun <h.jhun@samsung.com>
tizen-cpp/app-core-cpp/app_core_base.cc

index 72b353977c439391ff86ca0dd5a2a60354516e82..a45fc63a8d33558c7194e74c14b81993503bc9c2 100644 (file)
@@ -34,6 +34,7 @@
 #include <sys/time.h>
 #include <sys/types.h>
 #include <system_info.h>
+#include <time.h>
 #include <ttrace.h>
 #include <unistd.h>
 #include <vconf.h>
@@ -607,6 +608,8 @@ void AppCoreBase::Impl::SetDefaultEvents() {
   }
 
   vconf_notify_key_changed(VCONFKEY_SYSMAN_LOW_MEMORY, LowMemoryCb, parent_);
+  vconf_notify_key_changed(VCONFKEY_SETAPPL_TIMEZONE_ID, OnTimeZoneChangedCb,
+      parent_);
 }
 
 void AppCoreBase::Impl::UnsetDefaultEvents() {
@@ -616,6 +619,7 @@ void AppCoreBase::Impl::UnsetDefaultEvents() {
     vconf_ignore_key_changed(VCONFKEY_REGIONFORMAT_TIME1224, RegionChangeCb);
 
   vconf_ignore_key_changed(VCONFKEY_SYSMAN_LOW_MEMORY, LowMemoryCb);
+  vconf_ignore_key_changed(VCONFKEY_SETAPPL_TIMEZONE_ID, OnTimeZoneChangedCb);
 }
 
 int AppCoreBase::OnReceive(aul_type type, tizen_base::Bundle b) {
@@ -789,6 +793,7 @@ void AppCoreBase::Impl::OnLowBatteryCb(keynode_t* key, void* data) {
 }
 
 void AppCoreBase::Impl::OnTimeZoneChangedCb(keynode_t* key, void* data) {
+  tzset();
   char* time_zone_id = vconf_keynode_get_str(key);
   if (time_zone_id == nullptr) {
     return;
@@ -844,10 +849,6 @@ int AppCoreBase::OnSetEvent(IEvent::Type event) {
     break;
   case IEvent::Type::SUSPENDED_STATE_CHANGE:
     break;
-  case IEvent::Type::TIME_ZONE_CHANGED:
-    vconf_notify_key_changed(VCONFKEY_SETAPPL_TIMEZONE_ID,
-        impl_->OnTimeZoneChangedCb, this);
-    break;
   default:
     break;
   }