X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali%2Finternal%2Fadaptor%2Fcommon%2Fadaptor-impl.cpp;h=bc70e9b5d69cbe899ee52e379a93832a9450e058;hb=6f0ffcfd5697457ea73154ae014c6419b4a24cdc;hp=10a6180fefd4d6527c0b015c5ecabd430d92eb4c;hpb=876755e06bd010fbc1a1193121f0be0287e65254;p=platform%2Fcore%2Fuifw%2Fdali-adaptor.git diff --git a/dali/internal/adaptor/common/adaptor-impl.cpp b/dali/internal/adaptor/common/adaptor-impl.cpp old mode 100644 new mode 100755 index 10a6180..bc70e9b --- a/dali/internal/adaptor/common/adaptor-impl.cpp +++ b/dali/internal/adaptor/common/adaptor-impl.cpp @@ -29,6 +29,7 @@ #include #include #include +#include #include #include #include @@ -54,7 +55,6 @@ #include #include -#include #include #include #include @@ -67,6 +67,7 @@ #include #include +#include #include #include @@ -96,49 +97,49 @@ thread_local Adaptor* gThreadLocalAdaptor = NULL; // raw thread specific pointer } // unnamed namespace -Dali::Adaptor* Adaptor::New( Dali::Integration::SceneHolder window, Dali::RenderSurfaceInterface *surface, Dali::Configuration::ContextLoss configuration, EnvironmentOptions* environmentOptions ) +Dali::Adaptor* Adaptor::New( Dali::Integration::SceneHolder window, Dali::RenderSurfaceInterface *surface, EnvironmentOptions* environmentOptions, ThreadMode threadMode ) { Dali::Adaptor* adaptor = new Dali::Adaptor; - Adaptor* impl = new Adaptor( window, *adaptor, surface, environmentOptions ); + Adaptor* impl = new Adaptor( window, *adaptor, surface, environmentOptions, threadMode ); adaptor->mImpl = impl; Dali::Internal::Adaptor::AdaptorBuilder* mAdaptorBuilder = new AdaptorBuilder(); auto graphicsFactory = mAdaptorBuilder->GetGraphicsFactory(); - impl->Initialize( graphicsFactory, configuration ); + impl->Initialize( graphicsFactory ); delete mAdaptorBuilder; // Not needed anymore as the graphics interface has now been created return adaptor; } -Dali::Adaptor* Adaptor::New( Dali::Integration::SceneHolder window, Dali::Configuration::ContextLoss configuration, EnvironmentOptions* environmentOptions ) +Dali::Adaptor* Adaptor::New( Dali::Integration::SceneHolder window, EnvironmentOptions* environmentOptions ) { Internal::Adaptor::SceneHolder& windowImpl = Dali::GetImplementation( window ); - Dali::Adaptor* adaptor = New( window, windowImpl.GetSurface(), configuration, environmentOptions ); + Dali::Adaptor* adaptor = New( window, windowImpl.GetSurface(), environmentOptions, ThreadMode::NORMAL ); windowImpl.SetAdaptor( *adaptor ); return adaptor; } -Dali::Adaptor* Adaptor::New( GraphicsFactory& graphicsFactory, Dali::Integration::SceneHolder window, Dali::RenderSurfaceInterface *surface, Dali::Configuration::ContextLoss configuration, EnvironmentOptions* environmentOptions ) +Dali::Adaptor* Adaptor::New( GraphicsFactory& graphicsFactory, Dali::Integration::SceneHolder window, Dali::RenderSurfaceInterface *surface, EnvironmentOptions* environmentOptions, ThreadMode threadMode ) { Dali::Adaptor* adaptor = new Dali::Adaptor; // Public adaptor - Adaptor* impl = new Adaptor( window, *adaptor, surface, environmentOptions ); // Impl adaptor + Adaptor* impl = new Adaptor( window, *adaptor, surface, environmentOptions, threadMode ); // Impl adaptor adaptor->mImpl = impl; - impl->Initialize( graphicsFactory, configuration ); + impl->Initialize( graphicsFactory ); return adaptor; } // Called second -Dali::Adaptor* Adaptor::New( GraphicsFactory& graphicsFactory, Dali::Integration::SceneHolder window, Dali::Configuration::ContextLoss configuration, EnvironmentOptions* environmentOptions ) +Dali::Adaptor* Adaptor::New( GraphicsFactory& graphicsFactory, Dali::Integration::SceneHolder window, EnvironmentOptions* environmentOptions ) { Internal::Adaptor::SceneHolder& windowImpl = Dali::GetImplementation( window ); - Dali::Adaptor* adaptor = New( graphicsFactory, window, windowImpl.GetSurface(), configuration, environmentOptions ); + Dali::Adaptor* adaptor = New( graphicsFactory, window, windowImpl.GetSurface(), environmentOptions, ThreadMode::NORMAL ); windowImpl.SetAdaptor( *adaptor ); return adaptor; } // Called first -void Adaptor::Initialize( GraphicsFactory& graphicsFactory, Dali::Configuration::ContextLoss configuration ) +void Adaptor::Initialize( GraphicsFactory& graphicsFactory ) { // all threads here (event, update, and render) will send their logs to TIZEN Platform's LogMessage handler. Dali::Integration::Log::LogFunction logFunction( Dali::TizenPlatform::LogMessage ); @@ -320,10 +321,36 @@ void Adaptor::Initialize( GraphicsFactory& graphicsFactory, Dali::Configuration: } mConfigurationManager = Utils::MakeUnique( systemCachePath, eglGraphics, mThreadController ); + + auto appName = GetApplicationPackageName(); + auto bridge = Accessibility::Bridge::GetCurrentBridge(); + bridge->SetApplicationName( appName ); + bridge->Initialize(); + Dali::Stage::GetCurrent().KeyEventSignal().Connect( &accessibilityObserver, &AccessibilityObserver::OnAccessibleKeyEvent ); +} + +void Adaptor::AccessibilityObserver::OnAccessibleKeyEvent( const Dali::KeyEvent& event ) +{ + Accessibility::KeyEventType type; + if( event.GetState() == Dali::KeyEvent::DOWN ) + { + type = Accessibility::KeyEventType::KEY_PRESSED; + } + else if( event.GetState() == Dali::KeyEvent::UP ) + { + type = Accessibility::KeyEventType::KEY_RELEASED; + } + else + { + return; + } + Dali::Accessibility::Bridge::GetCurrentBridge()->Emit( type, event.GetKeyCode(), event.GetKeyName(), event.GetTime(), !event.GetKeyString().empty() ); } Adaptor::~Adaptor() { + Accessibility::Bridge::GetCurrentBridge()->Terminate(); + // Ensure stop status Stop(); @@ -400,6 +427,13 @@ void Adaptor::Start() Dali::TizenPlatform::ImageLoader::SetMaxTextureSize( maxTextureSize ); } + // Set cached isAdvancedBlendEquationSupported + GraphicsInterface* graphics = mGraphics.get(); // This interface is temporary until Core has been updated to match + auto eglGraphics = static_cast( graphics ); + GlImplementation& mGLES = eglGraphics->GetGlesInterface(); + mGLES.SetIsAdvancedBlendEquationSupported( mConfigurationManager->IsAdvancedBlendEquationSupported() ); + mGLES.SetShadingLanguageVersion( mConfigurationManager->GetShadingLanguageVersion() ); + ProcessCoreEvents(); // Ensure any startup messages are processed. // Initialize the image loader plugin @@ -653,6 +687,9 @@ bool Adaptor::AddWindow( Dali::Integration::SceneHolder childWindow ) Internal::Adaptor::SceneHolder& windowImpl = Dali::GetImplementation( childWindow ); windowImpl.SetAdaptor( Get() ); + // ChildWindow is set to the layout direction of the default window. + windowImpl.GetRootLayer().SetProperty( Dali::Actor::Property::LAYOUT_DIRECTION, mRootLayoutDirection ); + // Add the new Window to the container - the order is not important mWindows.push_back( &windowImpl ); @@ -934,6 +971,8 @@ void Adaptor::RequestProcessEventsOnIdle( bool forceProcess ) void Adaptor::OnWindowShown() { + Dali::Accessibility::Bridge::GetCurrentBridge()->ApplicationShown(); + if( PAUSED_WHILE_HIDDEN == mState ) { // Adaptor can now be resumed @@ -964,6 +1003,8 @@ void Adaptor::OnWindowShown() void Adaptor::OnWindowHidden() { + Dali::Accessibility::Bridge::GetCurrentBridge()->ApplicationHidden(); + if( RUNNING == mState || READY == mState ) { bool allWindowsHidden = true; @@ -1174,7 +1215,7 @@ Dali::ObjectRegistry Adaptor::GetObjectRegistry() const return registry; } -Adaptor::Adaptor(Dali::Integration::SceneHolder window, Dali::Adaptor& adaptor, Dali::RenderSurfaceInterface* surface, EnvironmentOptions* environmentOptions) +Adaptor::Adaptor(Dali::Integration::SceneHolder window, Dali::Adaptor& adaptor, Dali::RenderSurfaceInterface* surface, EnvironmentOptions* environmentOptions, ThreadMode threadMode ) : mResizedSignal(), mLanguageChangedSignal(), mWindowCreatedSignal(), @@ -1200,9 +1241,10 @@ Adaptor::Adaptor(Dali::Integration::SceneHolder window, Dali::Adaptor& adaptor, mSystemTracer(), mObjectProfiler( nullptr ), mSocketFactory(), - mThreadMode( ThreadMode::NORMAL ), + mThreadMode( threadMode ), mEnvironmentOptionsOwned( environmentOptions ? false : true /* If not provided then we own the object */ ), - mUseRemoteSurface( false ) + mUseRemoteSurface( false ), + mRootLayoutDirection( Dali::LayoutDirection::LEFT_TO_RIGHT ) { DALI_ASSERT_ALWAYS( !IsAvailable() && "Cannot create more than one Adaptor per thread" ); mWindows.insert( mWindows.begin(), &Dali::GetImplementation( window ) ); @@ -1212,11 +1254,11 @@ Adaptor::Adaptor(Dali::Integration::SceneHolder window, Dali::Adaptor& adaptor, void Adaptor::SetRootLayoutDirection( std::string locale ) { + mRootLayoutDirection = static_cast< LayoutDirection::Type >( Internal::Adaptor::Locale::GetDirection( std::string( locale ) ) ); for ( auto& window : mWindows ) { Dali::Actor root = window->GetRootLayer(); - root.SetProperty( Dali::Actor::Property::LAYOUT_DIRECTION, - static_cast< LayoutDirection::Type >( Internal::Adaptor::Locale::GetDirection( std::string( locale ) ) ) ); + root.SetProperty( Dali::Actor::Property::LAYOUT_DIRECTION, mRootLayoutDirection ); } }