From 5aa5b9c56d8299dc555129198830669aa7f9a10e Mon Sep 17 00:00:00 2001 From: Ji-hoon Lee Date: Wed, 4 Nov 2020 20:36:00 +0900 Subject: [PATCH] Prevent unnecessary screen update for string substitution Change-Id: Ife67b8269dc5defad7b35e35067bd3fe507fd9f4 --- scl/sclresourcecache.cpp | 6 +++++- scl/sclresourcecache.h | 2 +- scl/sclui.cpp | 2 +- scl/scluiimpl.cpp | 9 +++++---- 4 files changed, 12 insertions(+), 7 deletions(-) diff --git a/scl/sclresourcecache.cpp b/scl/sclresourcecache.cpp index 91ebe95..4904ba5 100644 --- a/scl/sclresourcecache.cpp +++ b/scl/sclresourcecache.cpp @@ -1803,12 +1803,16 @@ sclboolean CSCLResourceCache::get_button_geometry(const sclchar* custom_id, SclR return FALSE; } -void +sclboolean CSCLResourceCache::set_string_substitution(const sclchar *original, const sclchar *substitute) { if (original && substitute) { + if (mStringSubstitutor[std::string(original)].compare(substitute) == 0) { + return false; + } mStringSubstitutor[std::string(original)] = std::string(substitute); } + return true; } void diff --git a/scl/sclresourcecache.h b/scl/sclresourcecache.h index 94cf125..e11bd89 100644 --- a/scl/sclresourcecache.h +++ b/scl/sclresourcecache.h @@ -81,7 +81,7 @@ public: void enable_button(const sclchar* custom_id, sclboolean enabled); sclboolean get_button_geometry(const sclchar* custom_id, SclRectangle *rectangle); - void set_string_substitution(const sclchar *original, const sclchar *substitute); + sclboolean set_string_substitution(const sclchar *original, const sclchar *substitute); void unset_string_substitution(const sclchar *original); const sclchar* find_substituted_string(const sclchar *original); diff --git a/scl/sclui.cpp b/scl/sclui.cpp index a122648..19d054f 100644 --- a/scl/sclui.cpp +++ b/scl/sclui.cpp @@ -707,4 +707,4 @@ CSCLUI::get_button_geometry(const sclchar* custom_id, SclRectangle *rectangle) return m_impl->get_button_geometry(custom_id, rectangle); } return FALSE; -} \ No newline at end of file +} diff --git a/scl/scluiimpl.cpp b/scl/scluiimpl.cpp index aacd467..78772ff 100644 --- a/scl/scluiimpl.cpp +++ b/scl/scluiimpl.cpp @@ -1143,11 +1143,12 @@ CSCLUIImpl::set_custom_magnifier_label(scltouchdevice touch_id, sclint index, co void CSCLUIImpl::set_string_substitution(const sclchar *original, const sclchar *substitute) { + CSCLWindows *windows = CSCLWindows::get_instance(); + CSCLResourceCache *cache = CSCLResourceCache::get_instance(); + if (!cache || !windows) return; + if (m_initialized) { - CSCLWindows *windows = CSCLWindows::get_instance(); - CSCLResourceCache *cache = CSCLResourceCache::get_instance(); - if (cache && windows) { - cache->set_string_substitution(original, substitute); + if (cache->set_string_substitution(original, substitute)) { SclWindowContext *window_context = windows->get_window_context(windows->get_base_window()); if (window_context) { if (!(window_context->hidden)) { -- 2.7.4