X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali%2Finternal%2Fadaptor%2Fcommon%2Fapplication-impl.cpp;h=f54c4cf19bc52fdf99a5b60cae3ee61ba202f457;hb=f64504bd77bf30c06870f885ffd48cb447fb4e19;hp=b90e743617d47e52f063044a3780cf9711aa46bd;hpb=49e7342572cd190dab3c6707dbf753dcb188e51e;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 100755 new mode 100644 index b90e743..f54c4cf --- a/dali/internal/adaptor/common/application-impl.cpp +++ b/dali/internal/adaptor/common/application-impl.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018 Samsung Electronics Co., Ltd. + * Copyright (c) 2020 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -19,13 +19,16 @@ #include // EXTERNAL INCLUDES +#include #include +#include // INTERNAL INCLUDES #include +#include +#include #include #include -#include #include #include #include @@ -53,13 +56,6 @@ namespace Internal namespace Adaptor { -namespace -{ - -const float DEFAULT_STEREO_BASE( 65.0f ); - -} // unnamed namespace - ApplicationPtr Application::gPreInitializedApplication( NULL ); ApplicationPtr Application::New( @@ -78,10 +74,10 @@ void Application::PreInitialize( int* argc, char** argv[] ) { if( !gPreInitializedApplication ) { - gPreInitializedApplication = new Application ( argc, argv, "", Dali::Application::OPAQUE, PositionSize(), Framework::NORMAL ); + Dali::TextAbstraction::FontClientPreInitialize(); + gPreInitializedApplication = new Application ( argc, argv, "", Dali::Application::OPAQUE, PositionSize(), Framework::NORMAL ); gPreInitializedApplication->CreateWindow(); // Only create window - gPreInitializedApplication->mLaunchpadState = Launchpad::PRE_INITIALIZED; } } @@ -93,30 +89,22 @@ Application::Application( int* argc, char** argv[], const std::string& styleshee mPauseSignal(), mResumeSignal(), mResetSignal(), - mResizeSignal(), mAppControlSignal(), mLanguageChangedSignal(), mRegionChangedSignal(), - mBatteryLowSignal(), - mMemoryLowSignal(), mEventLoop( nullptr ), mFramework( nullptr ), - mContextLossConfiguration( Configuration::APPLICATION_DOES_NOT_HANDLE_CONTEXT_LOSS ), mCommandLineOptions( nullptr ), - mSingletonService( SingletonService::New() ), mAdaptorBuilder( nullptr ), mAdaptor( nullptr ), mMainWindow(), mMainWindowMode( windowMode ), mMainWindowName(), - mMainWindowReplaced( false ), mStylesheet( stylesheet ), mEnvironmentOptions(), mWindowPositionSize( positionSize ), mLaunchpadState( Launchpad::NONE ), - mSlotDelegate( this ), - mViewMode( MONO ), - mStereoBase( DEFAULT_STEREO_BASE ) + mSlotDelegate( this ) { // Get mName from environment options mMainWindowName = mEnvironmentOptions.GetWindowName(); @@ -133,7 +121,12 @@ Application::Application( int* argc, char** argv[], const std::string& styleshee Application::~Application() { - mSingletonService.UnregisterAll(); + SingletonService service = SingletonService::Get(); + // Note this can be false i.e. if Application has never created a Core instance + if( service ) + { + service.UnregisterAll(); + } mMainWindow.Reset(); delete mAdaptor; @@ -161,7 +154,9 @@ void Application::CreateWindow() } const std::string& windowClassName = mEnvironmentOptions.GetWindowClassName(); - mMainWindow = Dali::Window::New( mWindowPositionSize, mMainWindowName, windowClassName, mMainWindowMode == Dali::Application::TRANSPARENT ); + + 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 ); @@ -173,11 +168,11 @@ 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->ResizedSignal().Connect( mSlotDelegate, &Application::OnResize ); + mAdaptor = Adaptor::New( graphicsFactory, sceneHolder, &mEnvironmentOptions ); - Internal::Adaptor::Adaptor::GetImplementation( *mAdaptor ).SetUseRemoteSurface( mUseRemoteSurface ); + Adaptor::GetImplementation( *mAdaptor ).SetUseRemoteSurface( mUseRemoteSurface ); } void Application::CreateAdaptorBuilder() @@ -185,10 +180,8 @@ void Application::CreateAdaptorBuilder() mAdaptorBuilder = new AdaptorBuilder(); } -void Application::MainLoop(Dali::Configuration::ContextLoss configuration) +void Application::MainLoop() { - mContextLossConfiguration = configuration; - // Run the application mFramework->Run(); } @@ -219,7 +212,6 @@ void Application::OnInit() mFramework->AddAbortCallback( MakeCallback( this, &Application::QuitFromMainLoop ) ); CreateAdaptorBuilder(); - // If an application was pre-initialized, a window was made in advance if( mLaunchpadState == Launchpad::NONE ) { @@ -231,12 +223,6 @@ void Application::OnInit() // 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 ); @@ -250,7 +236,6 @@ void Application::OnInit() PauseSignal().Connect( &GetImplementation( lifecycleController ), &LifecycleController::OnPause ); ResumeSignal().Connect( &GetImplementation( lifecycleController ), &LifecycleController::OnResume ); ResetSignal().Connect( &GetImplementation( lifecycleController ), &LifecycleController::OnReset ); - ResizeSignal().Connect( &GetImplementation( lifecycleController ), &LifecycleController::OnResize ); LanguageChangedSignal().Connect( &GetImplementation( lifecycleController ), &LifecycleController::OnLanguageChanged ); Dali::Application application(this); @@ -332,23 +317,31 @@ void Application::OnRegionChanged() void Application::OnBatteryLow( Dali::DeviceStatus::Battery::Status status ) { Dali::Application application(this); - mBatteryLowSignal.Emit( application ); - mLowBatterySignal.Emit( status ); } void Application::OnMemoryLow( Dali::DeviceStatus::Memory::Status status ) { Dali::Application application(this); - mMemoryLowSignal.Emit( application ); - mLowMemorySignal.Emit( status ); } -void Application::OnResize(Dali::Adaptor& adaptor) +void Application::OnSurfaceCreated( Any newSurface ) +{ + void* newWindow = AnyCast< void* >( newSurface ); + void* oldWindow = AnyCast< void* >( mMainWindow.GetNativeHandle() ); + if( oldWindow != newWindow ) + { + auto renderSurfaceFactory = Dali::Internal::Adaptor::GetRenderSurfaceFactory(); + std::unique_ptr< WindowRenderSurface > newSurfacePtr + = renderSurfaceFactory->CreateWindowRenderSurface( PositionSize(), newSurface, true ); + + mAdaptor->ReplaceSurface( mMainWindow, *newSurfacePtr.release() ); + } +} + +void Application::OnSurfaceDestroyed( Any surface ) { - Dali::Application application(this); - mResizeSignal.Emit( application ); } bool Application::AddIdle( CallbackBase* callback, bool hasReturnValue ) @@ -366,46 +359,24 @@ std::string Application::GetLanguage() const return mFramework->GetLanguage(); } -Dali::Adaptor& Application::GetAdaptor() +Dali::ObjectRegistry Application::GetObjectRegistry() const { - return *mAdaptor; -} - -Dali::Window Application::GetWindow() -{ - // Changed to return a different window handle after ReplaceWindow is called - // just for backward compatibility to make the test case pass - return mMainWindowReplaced ? Dali::Window::New( PositionSize(), "ReplacedWindow" ) : mMainWindow; -} - -// Stereoscopy - -void Application::SetViewMode( ViewMode viewMode ) -{ - mViewMode = viewMode; -} - -ViewMode Application::GetViewMode() const -{ - return mViewMode; -} - -void Application::SetStereoBase( float stereoBase ) -{ - mStereoBase = stereoBase; + Dali::ObjectRegistry objectRegistry; + if( mAdaptor ) + { + objectRegistry = mAdaptor->GetObjectRegistry(); + } + return objectRegistry; } -float Application::GetStereoBase() const +Dali::Adaptor& Application::GetAdaptor() { - return mStereoBase; + return *mAdaptor; } -void Application::ReplaceWindow( const PositionSize& positionSize, const std::string& name ) +Dali::Window Application::GetWindow() { - // This API is kept just for backward compatibility to make the test case pass. - - mMainWindowReplaced = true; - OnResize( *mAdaptor ); + return mMainWindow; } std::string Application::GetResourcePath() @@ -423,6 +394,15 @@ 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;