X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali%2Fintegration-api%2Fadaptor-framework%2Fscene-holder-impl.cpp;h=7aa6f29102ef028cd82b3fc462525db582206e02;hb=6639efb20527a94f0cb5e2660dbb8585c95b07d2;hp=2fb9af9d5a8674002116f8c49dd0d984b54d6797;hpb=873dc45bea34570105bb298b1e2d683c3b9ce301;p=platform%2Fcore%2Fuifw%2Fdali-adaptor.git diff --git a/dali/integration-api/adaptor-framework/scene-holder-impl.cpp b/dali/integration-api/adaptor-framework/scene-holder-impl.cpp index 2fb9af9..7aa6f29 100644 --- a/dali/integration-api/adaptor-framework/scene-holder-impl.cpp +++ b/dali/integration-api/adaptor-framework/scene-holder-impl.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 Samsung Electronics Co., Ltd. + * Copyright (c) 2022 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. @@ -122,6 +122,11 @@ Dali::Layer SceneHolder::GetRootLayer() const return mScene ? mScene.GetRootLayer() : Dali::Layer(); } +Dali::Layer SceneHolder::GetOverlayLayer() +{ + return mScene ? mScene.GetOverlayLayer() : Dali::Layer(); +} + uint32_t SceneHolder::GetId() const { return mId; @@ -153,22 +158,29 @@ void SceneHolder::SetSurface(Dali::RenderSurfaceInterface* surface) mScene.SurfaceReplaced(); - SurfaceResized(); + PositionSize surfacePositionSize = surface->GetPositionSize(); + + SurfaceResized(static_cast(surfacePositionSize.width), static_cast(surfacePositionSize.height)); InitializeDpi(); mSurface->SetAdaptor(*mAdaptor); mSurface->SetScene(mScene); + // Recreate the render target + CreateRenderTarget(); + OnSurfaceSet(surface); } -void SceneHolder::SurfaceResized() +void SceneHolder::SurfaceResized(float width, float height) { - PositionSize surfacePositionSize = mSurface->GetPositionSize(); - mScene.SurfaceResized(static_cast(surfacePositionSize.width), static_cast(surfacePositionSize.height)); + mScene.SurfaceResized(width, height); mSurface->SetFullSwapNextFrame(); + + // Recreate the render target + CreateRenderTarget(); } Dali::RenderSurfaceInterface* SceneHolder::GetSurface() const @@ -205,8 +217,10 @@ void SceneHolder::SetAdaptor(Dali::Adaptor& adaptor) // Create the scene PositionSize surfacePositionSize = mSurface->GetPositionSize(); - int orientation = mSurface->GetOrientation(); - mScene = Dali::Integration::Scene::New(Size(static_cast(surfacePositionSize.width), static_cast(surfacePositionSize.height)), orientation); + int windowOrientation = mSurface->GetSurfaceOrientation(); + int screenOrientation = mSurface->GetScreenOrientation(); + + mScene = Dali::Integration::Scene::New(Size(static_cast(surfacePositionSize.width), static_cast(surfacePositionSize.height)), windowOrientation, screenOrientation); Internal::Adaptor::Adaptor& adaptorImpl = Internal::Adaptor::Adaptor::GetImplementation(adaptor); mAdaptor = &adaptorImpl; @@ -219,9 +233,23 @@ void SceneHolder::SetAdaptor(Dali::Adaptor& adaptor) mSurface->SetAdaptor(*mAdaptor); mSurface->SetScene(mScene); + // Create the render target + CreateRenderTarget(); + OnAdaptorSet(adaptor); } +void SceneHolder::CreateRenderTarget() +{ + Graphics::RenderTargetCreateInfo rtInfo{}; + rtInfo + .SetSurface(mSurface.get()) + .SetExtent({static_cast(mSurface->GetPositionSize().width), static_cast(mSurface->GetPositionSize().height)}) + .SetPreTransform(0 | Graphics::RenderTargetTransformFlagBits::TRANSFORM_IDENTITY_BIT); + + mScene.SetSurfaceRenderTarget(rtInfo); +} + void SceneHolder::Pause() { Reset(); @@ -236,9 +264,14 @@ void SceneHolder::Resume() OnResume(); } -void SceneHolder::SurfaceRotated(float width, float height, int orientation) +void SceneHolder::SurfaceRotated(float width, float height, int32_t windowOrientation, int32_t screenOrientation) { - mScene.SurfaceRotated(width, height, orientation); + mScene.SurfaceRotated(width, height, windowOrientation, screenOrientation); +} + +void SceneHolder::SetRotationCompletedAcknowledgement() +{ + mScene.SetRotationCompletedAcknowledgement(); } void SceneHolder::FeedTouchPoint(Dali::Integration::Point& point, int timeStamp) @@ -248,7 +281,8 @@ void SceneHolder::FeedTouchPoint(Dali::Integration::Point& point, int timeStamp) timeStamp = TimeService::GetMilliSeconds(); } - RecalculateTouchPosition(point); + Vector2 convertedPosition = RecalculatePosition(point.GetScreenPosition()); + point.SetScreenPosition(convertedPosition); Integration::TouchEvent touchEvent; Integration::HoverEvent hoverEvent; @@ -283,6 +317,9 @@ void SceneHolder::FeedWheelEvent(Dali::Integration::WheelEvent& wheelEvent) // Keep the handle alive until the core events are processed. Dali::BaseHandle sceneHolder(this); + Vector2 convertedPosition = RecalculatePosition(wheelEvent.point); + wheelEvent.point = convertedPosition; + mScene.QueueEvent(wheelEvent); mAdaptor->ProcessCoreEvents(); }