+ static Bridge* bridge;
+
+ if(bridge)
+ {
+ return bridge;
+ }
+ else if(mAutoInitState == AutoInitState::ENABLED)
+ {
+ bridge = CreateBridge();
+
+ /* check environment variable for suppressing screen-reader */
+ const char* envSuppressScreenReader = Dali::EnvironmentVariable::GetEnvironmentVariable(DALI_ENV_SUPPRESS_SCREEN_READER);
+ if(envSuppressScreenReader && std::atoi(envSuppressScreenReader) != 0)
+ {
+ bridge->SuppressScreenReader(true);
+ }
+
+ return bridge;
+ }
+
+ return Dali::Accessibility::DummyBridge::GetInstance();
+}
+
+void Bridge::DisableAutoInit()
+{
+ if(INITIALIZED_BRIDGE)
+ {
+ DALI_LOG_ERROR("Bridge::DisableAutoInit() called after bridge auto-initialization");
+ }
+
+ mAutoInitState = AutoInitState::DISABLED;
+}
+
+void Bridge::EnableAutoInit()
+{
+ mAutoInitState = AutoInitState::ENABLED;
+
+ if(INITIALIZED_BRIDGE)
+ {
+ return;
+ }
+
+ auto rootLayer = Dali::Stage::GetCurrent().GetRootLayer();
+ auto window = Dali::DevelWindow::Get(rootLayer);
+ auto applicationName = Dali::Internal::Adaptor::Adaptor::GetApplicationPackageName();
+
+ auto* bridge = Bridge::GetCurrentBridge();
+ bridge->AddTopLevelWindow(Dali::Accessibility::Accessible::Get(rootLayer, true));
+ bridge->SetApplicationName(applicationName);
+ bridge->Initialize();
+
+ if(window && window.IsVisible())
+ {
+ bridge->WindowShown();
+ }