X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali%2Finternal%2Fadaptor%2Fcommon%2Fadaptor-impl.cpp;h=4dc5ffc0bbdf4bcbf9a1e29f3d90ad4e80dd3a62;hb=c5016ff383d62b3e035b2d6cc5b3007041983d67;hp=9a2d608d4fff0ed4881e66022933b0abd8da77bc;hpb=01e8c1e8841d51370afb5b873c822180035e6180;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 index 9a2d608..4dc5ffc 100755 --- a/dali/internal/adaptor/common/adaptor-impl.cpp +++ b/dali/internal/adaptor/common/adaptor-impl.cpp @@ -29,7 +29,9 @@ #include #include #include +#include #include +#include #include // INTERNAL INCLUDES @@ -46,14 +48,12 @@ #include #include #include -#include #include #include #include #include #include #include -#include #include #include #include @@ -159,10 +159,6 @@ void Adaptor::Initialize( GraphicsFactory& graphicsFactory, Dali::Configuration: DALI_ASSERT_DEBUG( defaultWindow->GetSurface() && "Surface not initialized" ); - PositionSize size = defaultWindow->GetSurface()->GetPositionSize(); - - mGestureManager = new GestureManager(*this, Vector2(static_cast(size.width), static_cast(size.height)), mCallbackManager, *mEnvironmentOptions); - mGraphics = &( graphicsFactory.Create() ); mGraphics->Initialize( mEnvironmentOptions ); @@ -178,7 +174,6 @@ void Adaptor::Initialize( GraphicsFactory& graphicsFactory, Dali::Configuration: *mPlatformAbstraction, mGLES, eglSyncImpl, - *mGestureManager, dataRetentionPolicy , ( 0u != mEnvironmentOptions->GetRenderToFboInterval() ) ? Integration::RenderToFrameBuffer::TRUE : Integration::RenderToFrameBuffer::FALSE, mGraphics->GetDepthBufferRequired(), @@ -186,6 +181,12 @@ void Adaptor::Initialize( GraphicsFactory& graphicsFactory, Dali::Configuration: defaultWindow->SetAdaptor( Get() ); + Dali::Window window( dynamic_cast( ( &defaultWindow )->Get() ) ); + if ( window ) + { + mWindowCreatedSignal.Emit( window ); + } + const unsigned int timeInterval = mEnvironmentOptions->GetObjectProfilerInterval(); if( 0u < timeInterval ) { @@ -194,8 +195,6 @@ void Adaptor::Initialize( GraphicsFactory& graphicsFactory, Dali::Configuration: mNotificationTrigger = mTriggerEventFactory.CreateTriggerEvent( MakeCallback( this, &Adaptor::ProcessCoreEvents ), TriggerEventInterface::KEEP_ALIVE_AFTER_TRIGGER); - mVSyncMonitor = new VSyncMonitor; - mDisplayConnection = Dali::DisplayConnection::New( *mGraphics, defaultWindow->GetSurface()->GetSurfaceType() ); mThreadController = new ThreadController( *this, *mEnvironmentOptions ); @@ -265,6 +264,18 @@ void Adaptor::Initialize( GraphicsFactory& graphicsFactory, Dali::Configuration: { Integration::SetPanGestureMultitapSmoothingRange( mEnvironmentOptions->GetPanGestureMultitapSmoothingRange() ); } + if( mEnvironmentOptions->GetMinimumPanDistance() >= 0 ) + { + Integration::SetPanGestureMinimumDistance( mEnvironmentOptions->GetMinimumPanDistance() ); + } + if( mEnvironmentOptions->GetMinimumPanEvents() >= 0 ) + { + Integration::SetPanGestureMinimumPanEvents( mEnvironmentOptions->GetMinimumPanEvents() ); + } + if( mEnvironmentOptions->GetMinimumPinchDistance() >= 0 ) + { + Integration::SetPinchGestureMinimumDistance( mEnvironmentOptions->GetMinimumPinchDistance() ); + } // Set max texture size if( mEnvironmentOptions->GetMaxTextureSize() > 0 ) @@ -290,12 +301,10 @@ Adaptor::~Adaptor() mWindows.clear(); delete mThreadController; // this will shutdown render thread, which will call Core::ContextDestroyed before exit - delete mVSyncMonitor; delete mObjectProfiler; delete mCore; - delete mGestureManager; delete mDisplayConnection; delete mPlatformAbstraction; delete mCallbackManager; @@ -473,17 +482,20 @@ void Adaptor::ContextRegained() void Adaptor::FeedTouchPoint( TouchPoint& point, int timeStamp ) { - mWindows.front()->FeedTouchPoint( point, timeStamp ); + Integration::Point convertedPoint( point ); + mWindows.front()->FeedTouchPoint( convertedPoint, timeStamp ); } void Adaptor::FeedWheelEvent( WheelEvent& wheelEvent ) { - mWindows.front()->FeedWheelEvent( wheelEvent ); + Integration::WheelEvent event( static_cast< Integration::WheelEvent::Type >(wheelEvent.type), wheelEvent.direction, wheelEvent.modifiers, wheelEvent.point, wheelEvent.z, wheelEvent.timeStamp ); + mWindows.front()->FeedWheelEvent( event ); } void Adaptor::FeedKeyEvent( KeyEvent& keyEvent ) { - mWindows.front()->FeedKeyEvent( keyEvent ); + Integration::KeyEvent convertedEvent( keyEvent ); + mWindows.front()->FeedKeyEvent( convertedEvent ); } void Adaptor::ReplaceSurface( Dali::Integration::SceneHolder window, Dali::RenderSurfaceInterface& newSurface ) @@ -555,13 +567,20 @@ void Adaptor::SetPreRenderCallback( CallbackBase* callback ) mThreadController->SetPreRenderCallback( callback ); } -bool Adaptor::AddWindow( Dali::Integration::SceneHolder* childWindow, const std::string& childWindowName, const std::string& childWindowClassName, const bool& childWindowMode ) +bool Adaptor::AddWindow( Dali::Integration::SceneHolder childWindow, const std::string& childWindowName, const std::string& childWindowClassName, bool childWindowMode ) { - Internal::Adaptor::SceneHolder& windowImpl = Dali::GetImplementation( *childWindow ); + Internal::Adaptor::SceneHolder& windowImpl = Dali::GetImplementation( childWindow ); windowImpl.SetAdaptor( Get() ); // Add the new Window to the container - the order is not important mWindows.push_back( SceneHolderPtr( &windowImpl ) ); + + Dali::Window window( dynamic_cast( &windowImpl ) ); + if ( window ) + { + mWindowCreatedSignal.Emit( window ); + } + return true; } @@ -634,11 +653,6 @@ void Adaptor::SetRenderRefreshRate( unsigned int numberOfVSyncsPerRender ) mThreadController->SetRenderRefreshRate( numberOfVSyncsPerRender ); } -void Adaptor::SetUseHardwareVSync( bool useHardware ) -{ - mVSyncMonitor->SetUseHardwareVSync( useHardware ); -} - Dali::DisplayConnection& Adaptor::GetDisplayConnectionInterface() { DALI_ASSERT_DEBUG( mDisplayConnection && "Display connection not created" ); @@ -681,11 +695,6 @@ Dali::RenderSurfaceInterface* Adaptor::GetRenderSurfaceInterface() return nullptr; } -VSyncMonitorInterface* Adaptor::GetVSyncMonitorInterface() -{ - return mVSyncMonitor; -} - TraceInterface& Adaptor::GetKernelTraceInterface() { return mKernelTracer; @@ -707,11 +716,6 @@ Integration::PlatformAbstraction& Adaptor::GetPlatformAbstraction() const return *mPlatformAbstraction; } -void Adaptor::SetDragAndDropDetector( DragAndDropDetectorPtr detector ) -{ - mDragAndDropDetector = detector; -} - void Adaptor::DestroyTtsPlayer(Dali::TtsPlayer::Mode mode) { if( mTtsPlayers[mode] ) @@ -720,14 +724,6 @@ void Adaptor::DestroyTtsPlayer(Dali::TtsPlayer::Mode mode) } } -void Adaptor::SetMinimumPinchDistance(float distance) -{ - if( mGestureManager ) - { - mGestureManager->SetMinimumPinchDistance(distance); - } -} - Any Adaptor::GetNativeWindowHandle() { return mWindows.front()->GetNativeHandle(); @@ -839,7 +835,7 @@ void Adaptor::RequestProcessEventsOnIdle( bool forceProcess ) void Adaptor::OnWindowShown() { - if ( PAUSED_WHILE_HIDDEN == mState ) + if( PAUSED_WHILE_HIDDEN == mState ) { // Adaptor can now be resumed mState = PAUSED; @@ -851,13 +847,13 @@ void Adaptor::OnWindowShown() } else { - DALI_LOG_RELEASE_INFO( "Adaptor::OnWindowShown: Not shown [%d]\n", mState ); + DALI_LOG_RELEASE_INFO( "Adaptor::OnWindowShown: Adaptor is not paused state.[%d]\n", mState ); } } void Adaptor::OnWindowHidden() { - if ( RUNNING == mState ) + if( RUNNING == mState || READY == mState ) { bool allWindowsHidden = true; @@ -871,17 +867,29 @@ void Adaptor::OnWindowHidden() } // Only pause the adaptor when all the windows are hidden - if ( allWindowsHidden ) + if( allWindowsHidden ) { - Pause(); + if( mState == RUNNING ) + { + Pause(); - // Adaptor cannot be resumed until any window is shown - mState = PAUSED_WHILE_HIDDEN; + // Adaptor cannot be resumed until any window is shown + mState = PAUSED_WHILE_HIDDEN; + } + else // mState is READY + { + // Pause the adaptor after the state gets RUNNING + mState = PAUSED_WHILE_INITIALIZING; + } + } + else + { + DALI_LOG_RELEASE_INFO( "Adaptor::OnWindowHidden: Some windows are shown. Don't pause adaptor.\n" ); } } else { - DALI_LOG_RELEASE_INFO( "Adaptor::OnWindowHidden: Not hidden [%d]\n", mState ); + DALI_LOG_RELEASE_INFO( "Adaptor::OnWindowHidden: Adaptor is not running state.[%d]\n", mState ); } } @@ -923,9 +931,22 @@ void Adaptor::NotifySceneCreated() // Process after surface is created (registering to remote surface provider if required) SurfaceInitialized(); - mState = RUNNING; + if( mState != PAUSED_WHILE_INITIALIZING ) + { + mState = RUNNING; + + DALI_LOG_RELEASE_INFO( "Adaptor::NotifySceneCreated: Adaptor is running\n" ); + } + else + { + mState = RUNNING; + + Pause(); + + mState = PAUSED_WHILE_HIDDEN; - DALI_LOG_RELEASE_INFO( "Adaptor::NotifySceneCreated\n" ); + DALI_LOG_RELEASE_INFO( "Adaptor::NotifySceneCreated: Adaptor is paused\n" ); + } } void Adaptor::NotifyLanguageChanged() @@ -986,14 +1007,31 @@ Dali::Internal::Adaptor::SceneHolder* Adaptor::GetWindow( Dali::Actor& actor ) return nullptr; } +Dali::WindowContainer Adaptor::GetWindows() const +{ + Dali::WindowContainer windows; + + for ( auto iter = mWindows.begin(); iter != mWindows.end(); ++iter ) + { + // Downcast to Dali::Window + Dali::Window window( dynamic_cast( iter->Get() ) ); + if ( window ) + { + windows.push_back( window ); + } + } + + return windows; +} + Adaptor::Adaptor(Dali::Integration::SceneHolder window, Dali::Adaptor& adaptor, Dali::RenderSurfaceInterface* surface, EnvironmentOptions* environmentOptions) : mResizedSignal(), mLanguageChangedSignal(), + mWindowCreatedSignal(), mAdaptor( adaptor ), mState( READY ), mCore( nullptr ), mThreadController( nullptr ), - mVSyncMonitor( nullptr ), mGraphics( nullptr ), mDisplayConnection( nullptr ), mWindows(), @@ -1001,12 +1039,10 @@ Adaptor::Adaptor(Dali::Integration::SceneHolder window, Dali::Adaptor& adaptor, mCallbackManager( nullptr ), mNotificationOnIdleInstalled( false ), mNotificationTrigger( nullptr ), - mGestureManager( nullptr ), mDaliFeedbackPlugin(), mFeedbackController( nullptr ), mTtsPlayers(), mObservers(), - mDragAndDropDetector(), mEnvironmentOptions( environmentOptions ? environmentOptions : new EnvironmentOptions /* Create the options if not provided */), mPerformanceInterface( nullptr ), mKernelTracer(),