From 3940df3135e57382a724c4e716d713bfbc1b0b63 Mon Sep 17 00:00:00 2001 From: JunsuChoi Date: Fri, 6 Mar 2026 17:05:30 +0900 Subject: [PATCH 1/2] Call system_setting_get_* before calling system_setting_set_change_cb Based on BT, two issues can be expected. First, a problem could occur in vconf when calling the setting getter while the system is not fully initialized. Alternatively, a deadlock could occur on the same conf when calling the setting getter after registering the changed callback. Since this issue did not occur after a reboot or subsequent routines, it is likely a timing issue due to the callback rather than an initialization issue. Therefore, the problem can be prevented by calling the setting getter before registering the changed callback. ``` crash dump (gdb) bt #0 0x0000ffff94a13524 in __GI___poll (fds=0xfffff49d3830, nfds=1, timeout=) at ../sysdeps/unix/sysv/linux/poll.c:41 #1 0x0000ffff938f44e8 in ?? () from /lib64/libbuxton2.so.1 #2 0x0000ffff938f6ac0 in buxton_get_value_sync () from /lib64/libbuxton2.so.1 #3 0x0000ffff93703af8 in ?? () from /lib64/libvconf.so.0 #4 0x0000ffff937052c4 in vconf_get_int () from /lib64/libvconf.so.0 #5 0x0000ffff8c1b9604 in ?? () from /lib64/libcapi-system-system-settings.so.0 #6 0x0000ffff8c1b390c in system_settings_get_value_int () from /lib64/libcapi-system-system-settings.so.0 #7 0x0000ffff8c2ec3d0 in ?? () from /usr/apps/org.tizen.homescreen/bin/../lib/libflutter_tizen_common.so #8 0x0000ffff8c2ec330 in ?? () from /usr/apps/org.tizen.homescreen/bin/../lib/libflutter_tizen_common.so #9 0x0000ffff8c2f538c in ?? () from /usr/apps/org.tizen.homescreen/bin/../lib/libflutter_tizen_common.so #10 0x0000ffff8c2f3d70 in FlutterDesktopViewCreateFromNewWindow () from /usr/apps/org.tizen.homescreen/bin/../lib/libflutter_tizen_common.so #11 0x0000ffff94fd8ff4 in ?? () from /usr/apps/org.tizen.homescreen/bin/runner #12 0x0000ffff94fd8df0 in ?? () from /usr/apps/org.tizen.homescreen/bin/runner #13 0x0000ffff918b3df8 in ?? () from /usr/lib64/libcapi-appfw-application.so.0 #14 0x0000ffff919efc6c in tizen_cpp::AppCoreBase::Init(int, char**) () from /lib64/libapp-core-cpp.so.1 #15 0x0000ffff919efd24 in tizen_cpp::AppCoreBase::Run(int, char**) () from /lib64/libapp-core-cpp.so.1 #16 0x0000ffff91a34bdc in tizen_cpp::AppCoreUiBase::DoRun(int, char**) () from /lib64/libapp-core-ui-cpp.so.1 #17 0x0000ffff91a34f4c in tizen_cpp::AppCoreUiBase::Impl::Run(int, char**) () from /lib64/libapp-core-ui-cpp.so.1 #18 0x0000ffff918b3fa8 in ui_app_main () from /usr/lib64/libcapi-appfw-application.so.0 #19 0x0000ffff94fd93a0 in ?? () from /usr/apps/org.tizen.homescreen/bin/runner #20 0x0000ffff94fd8a8c in main () from /usr/apps/org.tizen.homescreen/bin/runner #21 0x0000aaaae7065bac in launchpad::loader::LaunchpadLoader::OnTerminate(int, char**) () #22 0x0000ffff94e2a030 in launchpad_loader_main () from /lib64/liblaunchpad.so.0 #23 0x0000aaaae7063b58 in launchpad::loader::LaunchpadLoader::Run() () #24 0x0000aaaae7063500 in main () ``` --- .../tizen/channels/settings_channel.cc | 37 ++++++++++++------- .../tizen/channels/settings_channel.h | 6 ++- 2 files changed, 28 insertions(+), 15 deletions(-) diff --git a/flutter/shell/platform/tizen/channels/settings_channel.cc b/flutter/shell/platform/tizen/channels/settings_channel.cc index 2f5a3bc4..06490e22 100644 --- a/flutter/shell/platform/tizen/channels/settings_channel.cc +++ b/flutter/shell/platform/tizen/channels/settings_channel.cc @@ -25,10 +25,15 @@ SettingsChannel::SettingsChannel(BinaryMessenger* messenger) messenger, kChannelName, &JsonMessageCodec::GetInstance())) { + SetUpLocaleTimeFormat(); + SetUpTextScaleFactor(); + SendSettingsEvent(); + system_settings_set_changed_cb( SYSTEM_SETTINGS_KEY_LOCALE_TIMEFORMAT_24HOUR, [](system_settings_key_e key, void* user_data) -> void { auto* self = static_cast(user_data); + self->SetUpLocaleTimeFormat(); self->SendSettingsEvent(); }, this); @@ -36,10 +41,10 @@ SettingsChannel::SettingsChannel(BinaryMessenger* messenger) SYSTEM_SETTINGS_KEY_FONT_SIZE, [](system_settings_key_e key, void* user_data) -> void { auto* self = static_cast(user_data); + self->SetUpTextScaleFactor(); self->SendSettingsEvent(); }, this); - SendSettingsEvent(); } SettingsChannel::~SettingsChannel() { @@ -51,23 +56,24 @@ SettingsChannel::~SettingsChannel() { void SettingsChannel::SendSettingsEvent() { rapidjson::Document event(rapidjson::kObjectType); rapidjson::MemoryPoolAllocator<>& allocator = event.GetAllocator(); - event.AddMember(kTextScaleFactorKey, GetTextScaleFactor(), allocator); - event.AddMember(kAlwaysUse24HourFormatKey, Prefer24HourTime(), allocator); + + event.AddMember(kTextScaleFactorKey, text_scale_factor_, allocator); + event.AddMember(kAlwaysUse24HourFormatKey, locale_time_format_, allocator); event.AddMember(kPlatformBrightnessKey, "light", allocator); channel_->Send(event); } -bool SettingsChannel::Prefer24HourTime() { +bool SettingsChannel::SetUpLocaleTimeFormat() { bool value = false; if (system_settings_get_value_bool( SYSTEM_SETTINGS_KEY_LOCALE_TIMEFORMAT_24HOUR, &value) == SYSTEM_SETTINGS_ERROR_NONE) { - return value; + locale_time_format_ = value; } - return false; + return locale_time_format_; } -float SettingsChannel::GetTextScaleFactor() { +float SettingsChannel::SetUpTextScaleFactor() { const float small = 0.8; const float normal = 1.0; const float large = 1.5; @@ -79,18 +85,23 @@ float SettingsChannel::GetTextScaleFactor() { SYSTEM_SETTINGS_ERROR_NONE) { switch (value) { case SYSTEM_SETTINGS_FONT_SIZE_SMALL: - return small; + text_scale_factor_ = small; + break; case SYSTEM_SETTINGS_FONT_SIZE_LARGE: - return large; + text_scale_factor_ = large; + break; case SYSTEM_SETTINGS_FONT_SIZE_HUGE: - return huge; + text_scale_factor_ = huge; + break; case SYSTEM_SETTINGS_FONT_SIZE_GIANT: - return giant; + text_scale_factor_ = giant; + break; default: - return normal; + text_scale_factor_ = normal; + break; } } - return normal; + return text_scale_factor_; } } // namespace flutter diff --git a/flutter/shell/platform/tizen/channels/settings_channel.h b/flutter/shell/platform/tizen/channels/settings_channel.h index 0bcf4840..c7f27dc0 100644 --- a/flutter/shell/platform/tizen/channels/settings_channel.h +++ b/flutter/shell/platform/tizen/channels/settings_channel.h @@ -20,10 +20,12 @@ class SettingsChannel { private: void SendSettingsEvent(); - bool Prefer24HourTime(); - float GetTextScaleFactor(); + bool SetUpLocaleTimeFormat(); + float SetUpTextScaleFactor(); std::unique_ptr> channel_; + bool locale_time_format_ = false; + float text_scale_factor_ = 1.0; }; } // namespace flutter From bd5ceafb0b5a86152f04eec9f94cd3420f6a6f04 Mon Sep 17 00:00:00 2001 From: JunsuChoi Date: Fri, 6 Mar 2026 18:45:12 +0900 Subject: [PATCH 2/2] ++ --- flutter/shell/platform/tizen/channels/settings_channel.cc | 6 ++---- flutter/shell/platform/tizen/channels/settings_channel.h | 4 ++-- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/flutter/shell/platform/tizen/channels/settings_channel.cc b/flutter/shell/platform/tizen/channels/settings_channel.cc index 06490e22..30a910a5 100644 --- a/flutter/shell/platform/tizen/channels/settings_channel.cc +++ b/flutter/shell/platform/tizen/channels/settings_channel.cc @@ -63,17 +63,16 @@ void SettingsChannel::SendSettingsEvent() { channel_->Send(event); } -bool SettingsChannel::SetUpLocaleTimeFormat() { +void SettingsChannel::SetUpLocaleTimeFormat() { bool value = false; if (system_settings_get_value_bool( SYSTEM_SETTINGS_KEY_LOCALE_TIMEFORMAT_24HOUR, &value) == SYSTEM_SETTINGS_ERROR_NONE) { locale_time_format_ = value; } - return locale_time_format_; } -float SettingsChannel::SetUpTextScaleFactor() { +void SettingsChannel::SetUpTextScaleFactor() { const float small = 0.8; const float normal = 1.0; const float large = 1.5; @@ -101,7 +100,6 @@ float SettingsChannel::SetUpTextScaleFactor() { break; } } - return text_scale_factor_; } } // namespace flutter diff --git a/flutter/shell/platform/tizen/channels/settings_channel.h b/flutter/shell/platform/tizen/channels/settings_channel.h index c7f27dc0..dc049c0f 100644 --- a/flutter/shell/platform/tizen/channels/settings_channel.h +++ b/flutter/shell/platform/tizen/channels/settings_channel.h @@ -20,8 +20,8 @@ class SettingsChannel { private: void SendSettingsEvent(); - bool SetUpLocaleTimeFormat(); - float SetUpTextScaleFactor(); + void SetUpLocaleTimeFormat(); + void SetUpTextScaleFactor(); std::unique_ptr> channel_; bool locale_time_format_ = false;