From: Shinwoo Kim Date: Thu, 9 Dec 2021 06:46:16 +0000 (+0900) Subject: [Tizen] [ATSPI] reduce initialization attempts X-Git-Tag: accepted/tizen/6.5/unified/20211213.212425~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=48fb5ad1637fdbeafbce32263a17d7b6da14ffd7;hp=660e7a71c1c17a43fd5acd2ffe99476152b11a99;p=platform%2Fcore%2Fuifw%2Fdali-adaptor.git [Tizen] [ATSPI] reduce initialization attempts The at-spi-bus-launcher cannot reponse immediately on booting time. So there were lots of error logs can overwrite other logs. This patch is reducing attempt to initialize bridge and read properties. Change-Id: I546cc71c7e05b7d494a02b4ce73e16f96a8ef707 --- diff --git a/dali/internal/accessibility/bridge/bridge-impl.cpp b/dali/internal/accessibility/bridge/bridge-impl.cpp index b5c275e..bbb050b 100644 --- a/dali/internal/accessibility/bridge/bridge-impl.cpp +++ b/dali/internal/accessibility/bridge/bridge-impl.cpp @@ -43,6 +43,13 @@ using namespace Dali::Accessibility; +namespace // unnamed namespace +{ + +const int RETRY_INTERVAL = 1000; + +} // unnamed namespace + /** * @brief The BridgeImpl class is to implement some Bridge functions. */ @@ -68,6 +75,9 @@ class BridgeImpl : public virtual BridgeBase, Dali::Actor mHighlightedActor; std::function mHighlightClearAction; Dali::CallbackBase* mIdleCallback = NULL; + Dali::Timer mInitializeTimer; + Dali::Timer mReadIsEnabledTimer; + Dali::Timer mReadScreenReaderEnabledTimer; public: BridgeImpl() @@ -221,6 +231,24 @@ public: mApplication.mWindows.clear(); } + void StopTimer() + { + if(mInitializeTimer) + { + mInitializeTimer.Stop(); + } + + if(mReadIsEnabledTimer) + { + mReadIsEnabledTimer.Stop(); + } + + if(mReadScreenReaderEnabledTimer) + { + mReadScreenReaderEnabledTimer.Stop(); + } + } + /** * @copydoc Dali::Accessibility::Bridge::Terminate() */ @@ -232,6 +260,7 @@ public: mData->mHighlightActor = {}; } ForceDown(); + StopTimer(); if((NULL != mIdleCallback) && Dali::Adaptor::IsAvailable()) { Dali::Adaptor::Get().RemoveIdle(mIdleCallback); @@ -408,6 +437,12 @@ public: } } + bool ReadIsEnabledTimerCallback() + { + ReadIsEnabledProperty(); + return false; + } + void ReadIsEnabledProperty() { mAccessibilityStatusClient.property("IsEnabled").asyncGet([this](DBus::ValueOrError msg) { @@ -416,7 +451,12 @@ public: DALI_LOG_ERROR("Get IsEnabled property error: %s\n", msg.getError().message.c_str()); if(msg.getError().errorType == DBus::ErrorType::INVALID_REPLY) { - ReadIsEnabledProperty(); + if(!mReadIsEnabledTimer) + { + mReadIsEnabledTimer = Dali::Timer::New(RETRY_INTERVAL); + mReadIsEnabledTimer.TickSignal().Connect(this, &BridgeImpl::ReadIsEnabledTimerCallback); + } + mReadIsEnabledTimer.Start(); } return; } @@ -443,6 +483,12 @@ public: }); } + bool ReadScreenReaderEnabledTimerCallback() + { + ReadScreenReaderEnabledProperty(); + return false; + } + void ReadScreenReaderEnabledProperty() { mAccessibilityStatusClient.property("ScreenReaderEnabled").asyncGet([this](DBus::ValueOrError msg) { @@ -451,7 +497,12 @@ public: DALI_LOG_ERROR("Get ScreenReaderEnabled property error: %s\n", msg.getError().message.c_str()); if(msg.getError().errorType == DBus::ErrorType::INVALID_REPLY) { - ReadScreenReaderEnabledProperty(); + if(!mReadScreenReaderEnabledTimer) + { + mReadScreenReaderEnabledTimer = Dali::Timer::New(RETRY_INTERVAL); + mReadScreenReaderEnabledTimer.TickSignal().Connect(this, &BridgeImpl::ReadScreenReaderEnabledTimerCallback); + } + mReadScreenReaderEnabledTimer.Start(); } return; } @@ -500,6 +551,16 @@ public: return true; } + bool InitializeTimerCallback() + { + if ( InitializeAccessibilityStatusClient() ) + { + ReadAndListenProperties(); + return false; + } + return true; + } + bool OnIdleSignal() { if ( InitializeAccessibilityStatusClient() ) @@ -509,7 +570,15 @@ public: return false; } - return true; + if(!mInitializeTimer) + { + mInitializeTimer = Dali::Timer::New(RETRY_INTERVAL); + mInitializeTimer.TickSignal().Connect(this, &BridgeImpl::InitializeTimerCallback); + } + mInitializeTimer.Start(); + + mIdleCallback = NULL; + return false; } /**