X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali%2Finternal%2Fadaptor%2Fcommon%2Fapplication-impl.cpp;h=8e90b049143ab87c406ab59b93cd7f5e30da5db9;hb=e8e185f7d90010214890c2cb78bdd52c732f63ba;hp=d2ccfda72bc270e2c7b7ac4c592e49709362489b;hpb=487dbc52b9fbe56f42abafc5ff5f09b54b79765f;p=platform%2Fcore%2Fuifw%2Fdali-adaptor.git diff --git a/dali/internal/adaptor/common/application-impl.cpp b/dali/internal/adaptor/common/application-impl.cpp index d2ccfda..8e90b04 100644 --- a/dali/internal/adaptor/common/application-impl.cpp +++ b/dali/internal/adaptor/common/application-impl.cpp @@ -24,12 +24,14 @@ // INTERNAL INCLUDES #include #include -#include #include #include #include +#include #include +#undef Status + namespace Dali { @@ -49,6 +51,13 @@ namespace Internal namespace Adaptor { +namespace +{ + +const float DEFAULT_STEREO_BASE( 65.0f ); + +} // unnamed namespace + ApplicationPtr Application::gPreInitializedApplication( NULL ); ApplicationPtr Application::New( @@ -88,27 +97,30 @@ Application::Application( int* argc, char** argv[], const std::string& styleshee mRegionChangedSignal(), mBatteryLowSignal(), mMemoryLowSignal(), - mEventLoop( NULL ), - mFramework( NULL ), + mEventLoop( nullptr ), + mFramework( nullptr ), mContextLossConfiguration( Configuration::APPLICATION_DOES_NOT_HANDLE_CONTEXT_LOSS ), - mCommandLineOptions( NULL ), + mCommandLineOptions( nullptr ), mSingletonService( SingletonService::New() ), - mAdaptor( NULL ), - mWindow(), - mWindowMode( windowMode ), - mName(), + mAdaptorBuilder( nullptr ), + mAdaptor( nullptr ), + mMainWindow(), + mMainWindowMode( windowMode ), + mMainWindowName(), mStylesheet( stylesheet ), mEnvironmentOptions(), mWindowPositionSize( positionSize ), mLaunchpadState( Launchpad::NONE ), - mSlotDelegate( this ) + mSlotDelegate( this ), + mViewMode( MONO ), + mStereoBase( DEFAULT_STEREO_BASE ) { // Get mName from environment options - mName = mEnvironmentOptions.GetWindowName(); - if( mName.empty() && argc && ( *argc > 0 ) ) + mMainWindowName = mEnvironmentOptions.GetWindowName(); + if( mMainWindowName.empty() && argc && ( *argc > 0 ) ) { // Set mName from command-line args if environment option not set - mName = (*argv)[0]; + mMainWindowName = (*argv)[0]; } mCommandLineOptions = new CommandLineOptions(argc, argv); @@ -120,8 +132,9 @@ Application::~Application() { mSingletonService.UnregisterAll(); - mWindow.Reset(); + mMainWindow.Reset(); delete mAdaptor; + delete mAdaptorBuilder; delete mCommandLineOptions; delete mFramework; } @@ -145,29 +158,36 @@ void Application::CreateWindow() } const std::string& windowClassName = mEnvironmentOptions.GetWindowClassName(); - mWindow = Dali::Window::New( mWindowPositionSize, mName, windowClassName, mWindowMode == Dali::Application::TRANSPARENT ); + mMainWindow = Dali::Window::New( mWindowPositionSize, mMainWindowName, windowClassName, mMainWindowMode == Dali::Application::TRANSPARENT ); int indicatorVisibleMode = mEnvironmentOptions.GetIndicatorVisibleMode(); if( indicatorVisibleMode >= Dali::Window::INVISIBLE && indicatorVisibleMode <= Dali::Window::AUTO ) { - GetImplementation( mWindow ).SetIndicatorVisibleMode( static_cast< Dali::Window::IndicatorVisibleMode >( indicatorVisibleMode ) ); + GetImplementation( mMainWindow ).SetIndicatorVisibleMode( static_cast< Dali::Window::IndicatorVisibleMode >( indicatorVisibleMode ) ); } // Quit the application when the window is closed - GetImplementation( mWindow ).DeleteRequestSignal().Connect( mSlotDelegate, &Application::Quit ); + GetImplementation( mMainWindow ).DeleteRequestSignal().Connect( mSlotDelegate, &Application::Quit ); } void Application::CreateAdaptor() { - DALI_ASSERT_ALWAYS( mWindow && "Window required to create adaptor" ); + DALI_ASSERT_ALWAYS( mMainWindow && "Window required to create adaptor" ); - mAdaptor = Dali::Internal::Adaptor::Adaptor::New( mWindow, mContextLossConfiguration, &mEnvironmentOptions ); + auto graphicsFactory = mAdaptorBuilder->GetGraphicsFactory(); + + mAdaptor = Dali::Internal::Adaptor::Adaptor::New( graphicsFactory, mMainWindow, mContextLossConfiguration, &mEnvironmentOptions ); mAdaptor->ResizedSignal().Connect( mSlotDelegate, &Application::OnResize ); Internal::Adaptor::Adaptor::GetImplementation( *mAdaptor ).SetUseRemoteSurface( mUseRemoteSurface ); } +void Application::CreateAdaptorBuilder() +{ + mAdaptorBuilder = new AdaptorBuilder(); +} + void Application::MainLoop(Dali::Configuration::ContextLoss configuration) { mContextLossConfiguration = configuration; @@ -179,7 +199,7 @@ void Application::MainLoop(Dali::Configuration::ContextLoss configuration) void Application::Lower() { // Lower the application without quitting it. - mWindow.Lower(); + mMainWindow.Lower(); } void Application::Quit() @@ -199,6 +219,8 @@ void Application::QuitFromMainLoop() void Application::DoInit() { + CreateAdaptorBuilder(); + // If an application was pre-initialized, a window was made in advance if( mLaunchpadState == Launchpad::NONE ) { @@ -216,17 +238,6 @@ void Application::DoInit() mAdaptor->SetUseHardwareVSync(false); } - Internal::Adaptor::Adaptor::GetImplementation( *mAdaptor ).SetStereoBase( mCommandLineOptions->stereoBase ); - if( mCommandLineOptions->viewMode != 0 ) - { - ViewMode viewMode = MONO; - if( mCommandLineOptions->viewMode <= STEREO_INTERLACED ) - { - viewMode = static_cast( mCommandLineOptions->viewMode ); - } - Internal::Adaptor::Adaptor::GetImplementation( *mAdaptor ).SetViewMode( viewMode ); - } - if( ! mStylesheet.empty() ) { Dali::StyleMonitor::Get().SetTheme( mStylesheet ); @@ -246,7 +257,7 @@ void Application::DoTerminate() mAdaptor->Stop(); } - mWindow.Reset(); + mMainWindow.Reset(); // This only resets (clears) the default Window } void Application::DoPause() @@ -289,7 +300,7 @@ void Application::OnInit() void Application::OnTerminate() { - // we've been told to quit by AppCore, ecore_x_destroy has been called, need to quit synchronously + // We've been told to quit by AppCore, ecore_x_destroy has been called, need to quit synchronously // delete the window as ecore_x has been destroyed by AppCore Dali::Application application(this); @@ -394,35 +405,34 @@ Dali::Adaptor& Application::GetAdaptor() Dali::Window Application::GetWindow() { - return mWindow; + return mMainWindow; } // Stereoscopy void Application::SetViewMode( ViewMode viewMode ) { - Internal::Adaptor::Adaptor::GetImplementation( *mAdaptor ).SetViewMode( viewMode ); + mViewMode = viewMode; } ViewMode Application::GetViewMode() const { - return Internal::Adaptor::Adaptor::GetImplementation( *mAdaptor ).GetViewMode(); + return mViewMode; } void Application::SetStereoBase( float stereoBase ) { - Internal::Adaptor::Adaptor::GetImplementation( *mAdaptor ).SetStereoBase( stereoBase ); + mStereoBase = stereoBase; } float Application::GetStereoBase() const { - return Internal::Adaptor::Adaptor::GetImplementation( *mAdaptor ).GetStereoBase(); + return mStereoBase; } - void Application::ReplaceWindow( const PositionSize& positionSize, const std::string& name ) { - Dali::Window newWindow = Dali::Window::New( positionSize, name, mWindowMode == Dali::Application::TRANSPARENT ); + Dali::Window newWindow = Dali::Window::New( positionSize, name, mMainWindowMode == Dali::Application::TRANSPARENT ); Window& windowImpl = GetImplementation(newWindow); windowImpl.SetAdaptor(*mAdaptor); @@ -432,11 +442,11 @@ void Application::ReplaceWindow( const PositionSize& positionSize, const std::st GetImplementation( newWindow ).SetIndicatorVisibleMode( static_cast< Dali::Window::IndicatorVisibleMode >( indicatorVisibleMode ) ); } - Dali::RenderSurface* renderSurface = windowImpl.GetSurface(); + Internal::Adaptor::WindowRenderSurface* renderSurface = windowImpl.GetSurface(); Any nativeWindow = newWindow.GetNativeHandle(); Internal::Adaptor::Adaptor::GetImplementation( *mAdaptor ).ReplaceSurface(nativeWindow, *renderSurface); - mWindow = newWindow; + mMainWindow = newWindow; mWindowPositionSize = positionSize; } @@ -445,12 +455,16 @@ std::string Application::GetResourcePath() return Internal::Adaptor::Framework::GetResourcePath(); } +std::string Application::GetDataPath() +{ + return Internal::Adaptor::Framework::GetDataPath(); +} + void Application::SetStyleSheet( const std::string& stylesheet ) { mStylesheet = stylesheet; } - ApplicationPtr Application::GetPreInitializedApplication() { return gPreInitializedApplication;