X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali%2Finternal%2Fevent%2Fcommon%2Fstage-impl.cpp;h=f05b3f5c7eb953c9ea0edd75fe213461f490c8bf;hb=e6585ad474c284d8e50c07a029bd6698f1d7a36b;hp=feb8ac88a877d5f7fb53355ec1967b636da60f5a;hpb=9390d7e1f94dfd2011ae6a463f1af6cecb80770a;p=platform%2Fcore%2Fuifw%2Fdali-core.git diff --git a/dali/internal/event/common/stage-impl.cpp b/dali/internal/event/common/stage-impl.cpp index feb8ac8..f05b3f5 100644 --- a/dali/internal/event/common/stage-impl.cpp +++ b/dali/internal/event/common/stage-impl.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014 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. @@ -24,31 +24,33 @@ #include // for strcmp // INTERNAL INCLUDES -#include #include #include #include -#include -#include #include #include #include +#include #include +#include #include #include #include +#include #include #include - -#ifdef DYNAMICS_SUPPORT -#include -#include -#include -#include -#endif +#include +#include using Dali::Internal::SceneGraph::Node; +namespace +{ +#if defined(DEBUG_ENABLED) +Debug::Filter* gLogFilter = Debug::Filter::New(Debug::NoLogging, false, "LOG_DEPTH_TIMER" ); +#endif +} + namespace Dali { @@ -58,75 +60,43 @@ namespace Internal namespace { -const float DEFAULT_STEREO_BASE( 65.0f ); - // Signals -const char* const SIGNAL_KEY_EVENT = "key-event"; -const char* const SIGNAL_EVENT_PROCESSING_FINISHED = "event-processing-finished"; +const char* const SIGNAL_KEY_EVENT = "keyEvent"; +const char* const SIGNAL_KEY_EVENT_GENERATED = "keyEventGenerated"; +const char* const SIGNAL_EVENT_PROCESSING_FINISHED = "eventProcessingFinished"; const char* const SIGNAL_TOUCHED = "touched"; -const char* const SIGNAL_CONTEXT_LOST = "context-lost"; -const char* const SIGNAL_CONTEXT_REGAINED = "context-regained"; -const char* const SIGNAL_SCENE_CREATED = "scene-created"; +const char* const SIGNAL_WHEEL_EVENT = "wheelEvent"; +const char* const SIGNAL_CONTEXT_LOST = "contextLost"; +const char* const SIGNAL_CONTEXT_REGAINED = "contextRegained"; +const char* const SIGNAL_SCENE_CREATED = "sceneCreated"; TypeRegistration mType( typeid(Dali::Stage), typeid(Dali::BaseHandle), NULL ); SignalConnectorType signalConnector1( mType, SIGNAL_KEY_EVENT, &Stage::DoConnectSignal ); SignalConnectorType signalConnector2( mType, SIGNAL_EVENT_PROCESSING_FINISHED, &Stage::DoConnectSignal ); -SignalConnectorType signalConnector3( mType, SIGNAL_TOUCHED, &Stage::DoConnectSignal ); -SignalConnectorType signalConnector4( mType, SIGNAL_CONTEXT_LOST, &Stage::DoConnectSignal ); -SignalConnectorType signalConnector5( mType, SIGNAL_CONTEXT_REGAINED, &Stage::DoConnectSignal ); -SignalConnectorType signalConnector6( mType, SIGNAL_SCENE_CREATED, &Stage::DoConnectSignal ); +SignalConnectorType signalConnector4( mType, SIGNAL_WHEEL_EVENT, &Stage::DoConnectSignal ); +SignalConnectorType signalConnector5( mType, SIGNAL_CONTEXT_LOST, &Stage::DoConnectSignal ); +SignalConnectorType signalConnector6( mType, SIGNAL_CONTEXT_REGAINED, &Stage::DoConnectSignal ); +SignalConnectorType signalConnector7( mType, SIGNAL_SCENE_CREATED, &Stage::DoConnectSignal ); +SignalConnectorType signalConnector8( mType, SIGNAL_KEY_EVENT_GENERATED, &Stage::DoConnectSignal ); +SignalConnectorType signalConnector9( mType, SIGNAL_TOUCHED, &Stage::DoConnectSignal ); } // unnamed namespace -StagePtr Stage::New( AnimationPlaylist& playlist, - PropertyNotificationManager& propertyNotificationManager, - SceneGraph::UpdateManager& updateManager, - NotificationManager& notificationManager ) +StagePtr Stage::New( SceneGraph::UpdateManager& updateManager ) { - return StagePtr( new Stage( playlist, propertyNotificationManager, updateManager, notificationManager ) ); + return StagePtr( new Stage( updateManager ) ); } -void Stage::Initialize() +void Stage::Initialize( Scene& scene ) { - mObjectRegistry = ObjectRegistry::New(); - - // Create the ordered list of layers - mLayerList = LayerList::New( mUpdateManager, false/*not system-level*/ ); - - // The stage owns the default layer - mRootLayer = Layer::NewRoot( *mLayerList, mUpdateManager, false/*not system-level*/ ); - mRootLayer->SetName("RootLayer"); - mRootLayer->SetRelayoutEnabled( false ); // Exclude from size negotiation - - // Create the default camera actor first; this is needed by the RenderTaskList - CreateDefaultCameraActor(); - - // Create the list of render-tasks - mRenderTaskList = RenderTaskList::New( *this, *this, false/*not system-level*/ ); - - // Create the default render-task - Dali::RenderTask defaultRenderTask = mRenderTaskList->CreateTask(); -} - -void Stage::Uninitialize() -{ - // Remove actors added to SystemOverlay - delete mSystemOverlay; - mSystemOverlay = NULL; - - if( mDefaultCamera ) - { - Remove(*(mDefaultCamera.Get())); - } - - if( mRootLayer ) - { - // we are closing down so just delete the root, no point emit disconnect - // signals or send messages to update - mRootLayer.Reset(); - } + mScene = &scene; + mScene->SetBackgroundColor( Dali::DEFAULT_BACKGROUND_COLOR ); + mScene->EventProcessingFinishedSignal().Connect( this, &Stage::OnEventProcessingFinished ); + mScene->KeyEventSignal().Connect( this, &Stage::OnKeyEvent ); + mScene->TouchedSignal().Connect( this, &Stage::OnTouchEvent ); + mScene->WheelEventSignal().Connect( this, &Stage::OnWheelEvent ); } StagePtr Stage::GetCurrent() @@ -148,384 +118,115 @@ bool Stage::IsInstalled() ObjectRegistry& Stage::GetObjectRegistry() { - return *mObjectRegistry; -} - -void Stage::RegisterObject( Dali::BaseObject* object ) -{ - mObjectRegistry->RegisterObject( object ); -} - -void Stage::UnregisterObject( Dali::BaseObject* object ) -{ - mObjectRegistry->UnregisterObject( object ); + return ThreadLocalStorage::Get().GetObjectRegistry(); } Layer& Stage::GetRootActor() { - return *mRootLayer; -} - -AnimationPlaylist& Stage::GetAnimationPlaylist() -{ - return mAnimationPlaylist; -} - -PropertyNotificationManager& Stage::GetPropertyNotificationManager() -{ - return mPropertyNotificationManager; + Dali::Layer rootLayer = GetRootLayer(); + return GetImplementation( rootLayer ); } void Stage::Add( Actor& actor ) { - mRootLayer->Add( actor ); + mScene->Add( actor ); } void Stage::Remove( Actor& actor ) { - mRootLayer->Remove( actor ); -} - -void Stage::SetSize(float width, float height) -{ - // Internally we want to report the actual size of the stage. - mSize.width = width; - mSize.height = height; - - // Calculates the aspect ratio, near and far clipping planes, field of view and camera Z position. - mDefaultCamera->SetPerspectiveProjection( mSize ); - - // The depth of the stage gets set to the maximun of these values - mRootLayer->SetSize( mSize ); - - // Repeat for SystemOverlay actors - if( mSystemOverlay ) - { - mSystemOverlay->GetImpl()->SetSize( mSize.width, mSize.height ); - } - - SetDefaultSurfaceRectMessage( mUpdateManager, Rect( 0, 0, width, height ) ); + mScene->Remove( actor ); } Vector2 Stage::GetSize() const { - return mSize; + return mScene->GetSize(); } RenderTaskList& Stage::GetRenderTaskList() const { - return *mRenderTaskList; -} - -void Stage::CreateDefaultCameraActor() -{ - // The default camera attributes and position is such that - // children of the default layer, can be positioned at (0,0) and - // be at the top-left of the viewport. - mDefaultCamera = CameraActor::New( Size::ZERO ); - mDefaultCamera->SetParentOrigin(ParentOrigin::CENTER); - Add(*(mDefaultCamera.Get())); + return mScene->GetRenderTaskList(); } Actor& Stage::GetDefaultRootActor() { - return *mRootLayer; + return mScene->GetDefaultRootActor(); } CameraActor& Stage::GetDefaultCameraActor() { - return *mDefaultCamera; + return mScene->GetDefaultCameraActor(); } -unsigned int Stage::GetLayerCount() const +uint32_t Stage::GetLayerCount() const { - return mLayerList->GetLayerCount(); + return mScene->GetLayerCount(); } -Dali::Layer Stage::GetLayer( unsigned int depth ) const +Dali::Layer Stage::GetLayer( uint32_t depth ) const { - return Dali::Layer(mLayerList->GetLayer( depth )); + return mScene->GetLayer( depth ); } Dali::Layer Stage::GetRootLayer() const { - return Dali::Layer( mRootLayer.Get() ); + return mScene->GetRootLayer(); } LayerList& Stage::GetLayerList() { - return *mLayerList; -} - -Integration::SystemOverlay& Stage::GetSystemOverlay() -{ - // Lazily create system-level if requested - if( !mSystemOverlay ) - { - mSystemOverlay = new Integration::SystemOverlay( SystemOverlay::New( *this ) ); - DALI_ASSERT_ALWAYS( NULL != mSystemOverlay && "Failed to create system overlay" ); - - mSystemOverlay->GetImpl()->SetSize( mSize.width, mSize.height ); - } - - return *mSystemOverlay; -} - -SystemOverlay* Stage::GetSystemOverlayInternal() -{ - SystemOverlay* overlay( NULL ); - - if( mSystemOverlay ) - { - overlay = mSystemOverlay->GetImpl(); - } - - return overlay; -} - -void Stage::SetViewMode( ViewMode viewMode ) -{ - if( mViewMode != viewMode ) - { - DALI_LOG_INFO( Debug::Filter::gActor, Debug::Concise, "View mode changed from %d to %d\n", mViewMode, viewMode); - - if( mViewMode == MONO ) - { - mDefaultCamera->SetOrientation( Degree( 180.0f ), Vector3::YAXIS ); - mRenderTaskList->GetTask(0).SetSourceActor( Dali::Actor() ); - - //Create camera and RenderTask for left eye - mLeftCamera = CameraActor::New( Size::ZERO ); - mLeftCamera->SetParentOrigin( ParentOrigin::CENTER ); - mDefaultCamera->Add( *mLeftCamera.Get() ); - mLeftRenderTask = mRenderTaskList->CreateTask(); - mLeftRenderTask.SetCameraActor( Dali::CameraActor( mLeftCamera.Get() ) ); - mLeftCamera->SetType( Dali::Camera::FREE_LOOK ); - - //Create camera and RenderTask for right eye - mRightCamera = CameraActor::New( Size::ZERO ); - mRightCamera->SetParentOrigin( ParentOrigin::CENTER ); - mDefaultCamera->Add( *mRightCamera.Get() ); - mRightRenderTask = mRenderTaskList->CreateTask(); - mRightRenderTask.SetClearColor( Vector4( 1.0f,0.0f,0.0f,1.0f)); - - mRightRenderTask.SetCameraActor( Dali::CameraActor( mRightCamera.Get() ) ); - mRightCamera->SetType( Dali::Camera::FREE_LOOK ); - } - - // save new mode - mViewMode = viewMode; - - switch( viewMode ) - { - case MONO: - { - // delete extra stereoscopic render tasks and cameras - mRenderTaskList->RemoveTask( mLeftRenderTask ); - mDefaultCamera->Remove( *mLeftCamera.Get() ); - mLeftRenderTask.Reset(); - mLeftCamera.Reset(); - mRenderTaskList->RemoveTask( mRightRenderTask ); - mDefaultCamera->Remove( *mRightCamera.Get() ); - mRightRenderTask.Reset(); - mRightCamera.Reset(); - - mDefaultCamera->SetOrientation( Degree( 0.0f ), Vector3::YAXIS ); - mDefaultCamera->SetType( Dali::Camera::LOOK_AT_TARGET ); - mRenderTaskList->GetTask(0).SetSourceActor( Dali::Layer(mRootLayer.Get()) ); - - break; - } - case STEREO_HORIZONTAL: - { - //Stereo mode with horizontal split is for landscape mode. That's the reason for the cameras being rotated - //Top camera renders the scene as seen from the right eye and bottom camera as seen from left. - - //Calculate separation in pixels along vertical axis ( mStereoBase is defined in millimetres ) - const float stereoBase( ( (mStereoBase / 25.4f) * GetDpi().y ) * 0.5f ); - - //Calculate aspect ratio - float aspect = mSize.width / (mSize.height * 0.5f); - - mLeftCamera->SetPerspectiveProjection( mSize, Vector2( 0.0f,stereoBase) ); - mLeftCamera->SetAspectRatio( aspect ); - mLeftCamera->SetOrientation( Degree(-90.0f), Vector3::ZAXIS ); - mLeftCamera->SetPosition( Vector3( stereoBase, 0.0f, 0.0f ) ); - mLeftRenderTask.SetViewport( Viewport(0, mSize.height * 0.5f, mSize.width, mSize.height * 0.5f) ); - - mRightCamera->SetPerspectiveProjection( mSize, Vector2( 0.0, -stereoBase) ); - mRightCamera->SetAspectRatio( aspect ); - mRightCamera->SetOrientation( Degree(-90.0f), Vector3::ZAXIS ); - mRightCamera->SetPosition( Vector3(-stereoBase, 0.0f, 0.0f ) ); - mRightRenderTask.SetViewport( Viewport(0, 0, mSize.width, mSize.height * 0.5f ) ); - - break; - } - case STEREO_VERTICAL: - { - //Calculate separation in pixels along horizontal axis - const float stereoBase( ( (mStereoBase / 25.4f) * GetDpi().x ) * 0.5f ); - - //Recalculate fov based on viewport size - const float fov = 2.0f * std::atan( mSize.y / (2.0f * std::max( mSize.x*0.5f, mSize.y )) ); - - mLeftCamera->SetPerspectiveProjection( Size( mSize.x * 0.5f, mSize.y ), Vector2(stereoBase,0.0f) ); - mLeftCamera->SetFieldOfView( fov ); - mLeftCamera->SetOrientation( Degree(0.0f), Vector3::ZAXIS ); - mLeftCamera->SetPosition( Vector3( stereoBase, 0.0f, 0.0f ) ); - mLeftRenderTask.SetViewport( Viewport(0, 0, mSize.width * 0.5f, mSize.height ) ); - - mRightCamera->SetPerspectiveProjection( Size( mSize.x * 0.5f, mSize.y ), Vector2(-stereoBase,0.0f) ); - mRightCamera->SetFieldOfView( fov ); - mRightCamera->SetOrientation( Degree(0.0f), Vector3::ZAXIS ); - mRightCamera->SetPosition( Vector3( -stereoBase, 0.0f, 0.0f ) ); - mRightRenderTask.SetViewport( Viewport(mSize.width * 0.5f, 0, mSize.width * 0.5f, mSize.height ) ); - - break; - } - case STEREO_INTERLACED: - { - break; - } - } - } -} - -ViewMode Stage::GetViewMode() const -{ - return mViewMode; -} - -void Stage::SetStereoBase( float stereoBase ) -{ - if( ! Equals( mStereoBase, stereoBase ) ) - { - DALI_LOG_INFO( Debug::Filter::gActor, Debug::Concise, "old( %.2f) new(%.2f)", mStereoBase, stereoBase ); - mStereoBase = stereoBase; - - switch( mViewMode ) - { - case STEREO_HORIZONTAL: - { - stereoBase = mStereoBase / 25.4f * GetDpi().y * 0.5f; - float aspect = mSize.width / (mSize.height * 0.5f); - - mLeftCamera->SetPerspectiveProjection( mSize, Vector2( 0.0, stereoBase) ); - mLeftCamera->SetAspectRatio( aspect ); - mLeftCamera->SetPosition( Vector3( stereoBase, 0.0f, 0.0f ) ); - - mRightCamera->SetPerspectiveProjection( mSize, Vector2( 0.0, -stereoBase) ); - mRightCamera->SetAspectRatio( aspect ); - mRightCamera->SetPosition( Vector3(-stereoBase, 0.0f, 0.0f ) ); - - break; - } - case STEREO_VERTICAL: - { - stereoBase = mStereoBase / 25.4f * GetDpi().x * 0.5f; - const float fov = 2.0f * std::atan( mSize.y / (2.0f * std::max( mSize.x*0.5f, mSize.y )) ); - - mLeftCamera->SetPerspectiveProjection( Size( mSize.x * 0.5f, mSize.y ), Vector2(stereoBase,0.0f) ); - mLeftCamera->SetFieldOfView( fov ); - mLeftCamera->SetPosition( Vector3( stereoBase, 0.0f, 0.0f ) ); - - mRightCamera->SetPerspectiveProjection( Size( mSize.x * 0.5f, mSize.y ), Vector2(-stereoBase,0.0f) ); - mRightCamera->SetFieldOfView( fov ); - mRightCamera->SetPosition( Vector3(-stereoBase, 0.0f, 0.0f ) ); - - break; - } - default: - break; - } - } -} - -float Stage::GetStereoBase() const -{ - return mStereoBase; + return mScene->GetLayerList(); } void Stage::SetBackgroundColor(Vector4 color) { - // Cache for public GetBackgroundColor() - mBackgroundColor = color; - - // Send message to change color in next frame - SetBackgroundColorMessage( mUpdateManager, color ); + mScene->SetBackgroundColor( color ); } Vector4 Stage::GetBackgroundColor() const { - return mBackgroundColor; + return mScene->GetBackgroundColor(); } Vector2 Stage::GetDpi() const { - return mDpi; -} - -void Stage::SetDpi(Vector2 dpi) -{ - mDpi = dpi; + return mScene->GetDpi(); } -#ifdef DYNAMICS_SUPPORT - -DynamicsNotifier& Stage::GetDynamicsNotifier() +void Stage::KeepRendering( float durationSeconds ) { - return mDynamicsNotifier; + // Send message to keep rendering + KeepRenderingMessage( mUpdateManager, durationSeconds ); } -DynamicsWorldPtr Stage::InitializeDynamics(DynamicsWorldConfigPtr config) +void Stage::SetRenderingBehavior( DevelStage::Rendering renderingBehavior ) { - if( !mDynamicsFactory ) + if( mRenderingBehavior != renderingBehavior ) { - mDynamicsFactory = ThreadLocalStorage::Get().GetPlatformAbstraction().GetDynamicsFactory(); - } + // Send message to change the rendering behavior + SetRenderingBehaviorMessage( mUpdateManager, renderingBehavior ); - if( mDynamicsFactory && !mDynamicsWorld ) - { - if( mDynamicsFactory->InitializeDynamics( *(config->GetSettings()) ) ) - { - mDynamicsWorld = DynamicsWorld::New(); - mDynamicsWorld->Initialize( *this, *mDynamicsFactory, config ); - } + mRenderingBehavior = renderingBehavior; } - return mDynamicsWorld; } -DynamicsWorldPtr Stage::GetDynamicsWorld() +DevelStage::Rendering Stage::GetRenderingBehavior() const { - return mDynamicsWorld; -} - -void Stage::TerminateDynamics() -{ - if( mDynamicsWorld ) - { - mDynamicsWorld->Terminate(*this); - mDynamicsWorld = NULL; - } -} - -#endif // DYNAMICS_SUPPORT - -void Stage::KeepRendering( float durationSeconds ) -{ - // Send message to keep rendering - KeepRenderingMessage( mUpdateManager, durationSeconds ); + return mRenderingBehavior; } bool Stage::DoConnectSignal( BaseObject* object, ConnectionTrackerInterface* tracker, const std::string& signalName, FunctorDelegate* functor ) { bool connected( true ); - Stage* stage = dynamic_cast(object); + Stage* stage = static_cast< Stage* >(object); // TypeRegistry guarantees that this is the correct type. if( 0 == strcmp( signalName.c_str(), SIGNAL_KEY_EVENT ) ) { stage->KeyEventSignal().Connect( tracker, functor ); } + else if( 0 == strcmp( signalName.c_str(), SIGNAL_KEY_EVENT_GENERATED ) ) + { + stage->KeyEventGeneratedSignal().Connect( tracker, functor ); + } else if( 0 == strcmp( signalName.c_str(), SIGNAL_EVENT_PROCESSING_FINISHED ) ) { stage->EventProcessingFinishedSignal().Connect( tracker, functor ); @@ -534,6 +235,10 @@ bool Stage::DoConnectSignal( BaseObject* object, ConnectionTrackerInterface* tra { stage->TouchedSignal().Connect( tracker, functor ); } + else if( 0 == strcmp( signalName.c_str(), SIGNAL_WHEEL_EVENT ) ) + { + stage->WheelEventSignal().Connect( tracker, functor ); + } else if( 0 == strcmp( signalName.c_str(), SIGNAL_CONTEXT_LOST ) ) { stage->ContextLostSignal().Connect( tracker, functor ); @@ -555,6 +260,30 @@ bool Stage::DoConnectSignal( BaseObject* object, ConnectionTrackerInterface* tra return connected; } +void Stage::OnEventProcessingFinished() +{ + EmitEventProcessingFinishedSignal(); +} + +void Stage::OnKeyEvent( const Dali::KeyEvent& event ) +{ + bool consumed = EmitKeyEventGeneratedSignal( event ); + if( !consumed ) + { + EmitKeyEventSignal( event ); + } +} + +void Stage::OnTouchEvent( const Dali::TouchEvent& touch ) +{ + EmitTouchedSignal( touch ); +} + +void Stage::OnWheelEvent( const Dali::WheelEvent& event ) +{ + EmitWheelEventSignal( event ); +} + void Stage::EmitKeyEventSignal(const KeyEvent& event) { // Emit the key event signal when no actor in the stage has gained the key input focus @@ -562,16 +291,29 @@ void Stage::EmitKeyEventSignal(const KeyEvent& event) mKeyEventSignal.Emit( event ); } +bool Stage::EmitKeyEventGeneratedSignal(const KeyEvent& event) +{ + // Emit the KeyEventGenerated signal when KeyEvent is generated + + return mKeyEventGeneratedSignal.Emit( event ); +} + void Stage::EmitEventProcessingFinishedSignal() { - mEventProcessingFinishedSignal.Emit(); + mEventProcessingFinishedSignal.Emit(); } -void Stage::EmitTouchedSignal( const TouchEvent& touch ) +void Stage::EmitTouchedSignal( const Dali::TouchEvent& touch ) { mTouchedSignal.Emit( touch ); } +void Stage::EmitWheelEventSignal( const WheelEvent& event ) +{ + // Emit the wheel event signal when no actor in the stage has gained the wheel input focus + + mWheelEventSignal.Emit( event ); +} void Stage::EmitSceneCreatedSignal() { @@ -583,16 +325,42 @@ Dali::Stage::KeyEventSignalType& Stage::KeyEventSignal() return mKeyEventSignal; } +Dali::DevelStage::KeyEventGeneratedSignalType& Stage::KeyEventGeneratedSignal() +{ + return mKeyEventGeneratedSignal; +} + +void Stage::AddFrameCallback( FrameCallbackInterface& frameCallback, Actor& rootActor ) +{ + DALI_ASSERT_ALWAYS( ( ! FrameCallbackInterface::Impl::Get( frameCallback ).IsConnectedToSceneGraph() ) + && "FrameCallbackInterface implementation already added" ); + + // Create scene-graph object and transfer to UpdateManager + OwnerPointer< SceneGraph::FrameCallback > transferOwnership( SceneGraph::FrameCallback::New( frameCallback ) ); + AddFrameCallbackMessage( mUpdateManager, transferOwnership, rootActor.GetNode() ); +} + +void Stage::RemoveFrameCallback( FrameCallbackInterface& frameCallback ) +{ + FrameCallbackInterface::Impl::Get( frameCallback ).Invalidate(); + RemoveFrameCallbackMessage( mUpdateManager, frameCallback ); +} + Dali::Stage::EventProcessingFinishedSignalType& Stage::EventProcessingFinishedSignal() { return mEventProcessingFinishedSignal; } -Dali::Stage::TouchedSignalType& Stage::TouchedSignal() +Dali::Stage::TouchEventSignalType& Stage::TouchedSignal() { return mTouchedSignal; } +Dali::Stage::WheelEventSignalType& Stage::WheelEventSignal() +{ + return mWheelEventSignal; +} + Dali::Stage::ContextStatusSignal& Stage::ContextLostSignal() { return mContextLostSignal; @@ -618,45 +386,22 @@ void Stage::NotifyContextRegained() mContextRegainedSignal.Emit(); } -Stage::Stage( AnimationPlaylist& playlist, - PropertyNotificationManager& propertyNotificationManager, - SceneGraph::UpdateManager& updateManager, - NotificationManager& notificationManager ) -: mAnimationPlaylist( playlist ), - mPropertyNotificationManager(propertyNotificationManager), - mUpdateManager(updateManager), - mNotificationManager(notificationManager), - mSize(Vector2::ZERO), - mBackgroundColor(Dali::Stage::DEFAULT_BACKGROUND_COLOR), - mViewMode( MONO ), - mStereoBase( DEFAULT_STEREO_BASE ), -#ifdef DYNAMICS_SUPPORT - mDynamicsFactory(NULL), -#endif - mSystemOverlay(NULL) -{ -} - -SceneGraph::UpdateManager& Stage::GetUpdateManager() -{ - return mUpdateManager; -} - -unsigned int* Stage::ReserveMessageSlot( std::size_t size, bool updateScene ) +Stage::Stage( SceneGraph::UpdateManager& updateManager ) +: mUpdateManager( updateManager ), + mKeyEventSignal(), + mKeyEventGeneratedSignal(), + mEventProcessingFinishedSignal(), + mTouchedSignal(), + mWheelEventSignal(), + mContextLostSignal(), + mContextRegainedSignal(), + mSceneCreatedSignal(), + mRenderingBehavior( DevelStage::Rendering::IF_REQUIRED ) { - return mUpdateManager.ReserveMessageSlot( size, updateScene ); -} - -BufferIndex Stage::GetEventBufferIndex() const -{ - return mUpdateManager.GetEventBufferIndex(); } Stage::~Stage() { - delete mSystemOverlay; - - mObjectRegistry.Reset(); } } // namespace Internal