DSRenderView: remove a dependency on DSWindow. 76/242776/1
authorSooChan Lim <sc1.lim@samsung.com>
Fri, 28 Aug 2020 08:18:02 +0000 (17:18 +0900)
committerSung-Jin Park <sj76.park@samsung.com>
Tue, 1 Sep 2020 01:29:39 +0000 (10:29 +0900)
Change-Id: I1ceb08d3bb46d10db5bedaf0c5bcdaa3e2fc8f11

13 files changed:
src/DSDisplayArea/DSDisplayArea.cpp
src/DSRender/DSRenderEngineDaliImpl.cpp
src/DSRender/DSRenderEngineDaliImpl.h
src/DSRender/DSRenderEngineEcoreEvasImpl.cpp
src/DSRender/DSRenderEngineEcoreEvasImpl.h
src/DSRender/DSRenderView.h
src/DSRender/DSRenderViewDaliImpl.cpp
src/DSRender/DSRenderViewDaliImpl.h
src/DSRender/DSRenderViewEcoreEvasImpl.cpp
src/DSRender/DSRenderViewEcoreEvasImpl.h
src/DSRender/IDSRenderEngine.h
tests/DSRenderEngineDaliImpl-test.cpp
tests/DSRenderEngineEcoreEvasImpl-test.cpp

index 9bef0d3..33e6fe5 100644 (file)
@@ -137,7 +137,7 @@ bool DSDisplayAreaPrivate::addZone(std::shared_ptr<DSZone> zone)
 void DSDisplayAreaPrivate::__onWindowCreated(std::shared_ptr<DSWindow> window)
 {
        // make a render view and set to the window.
-       auto renderView = __renderEngine->makeRenderView(window);
+       auto renderView = __renderEngine->makeRenderView();
 
        // make a hwc window and set to the window.
        auto displayDeviceHWCWindow = __displayDeviceHWC->makeHWCWindow();
index 5314d7f..bf2ab39 100644 (file)
@@ -56,9 +56,9 @@ void DSRenderEngineDaliImpl::onInitialize()
        window.SetBackgroundColor(Color::TRANSPARENT);
 }
 
-std::shared_ptr<DSRenderView> DSRenderEngineDaliImpl::makeRenderView(std::shared_ptr<DSWindow> window)
+std::shared_ptr<DSRenderView> DSRenderEngineDaliImpl::makeRenderView()
 {
-       std::shared_ptr<DSRenderView> renderView = std::make_shared<DSRenderViewDaliImpl>(window, __offscreenApplication.GetWindow());
+       std::shared_ptr<DSRenderView> renderView = std::make_shared<DSRenderViewDaliImpl>(__offscreenApplication.GetWindow());
 
        // callbacks
        renderView->registerCallbackUpdated(this, std::bind(&DSRenderEngineDaliImpl::__onRenderViewUpdated, this, std::placeholders::_1));
index 977c580..d35b209 100644 (file)
@@ -41,7 +41,7 @@ public:
        DSRenderEngineDaliImpl(std::shared_ptr<IDSBufferQueue> bufferQueue);
        ~DSRenderEngineDaliImpl();
 
-       std::shared_ptr<DSRenderView>    makeRenderView(std::shared_ptr<DSWindow> window) override;
+       std::shared_ptr<DSRenderView>    makeRenderView() override;
        bool                             renderFrame() override;
 
        void                             onInitialize();
index d2854fd..ae03499 100644 (file)
@@ -67,9 +67,9 @@ DSRenderEngineEcoreEvasImpl::~DSRenderEngineEcoreEvasImpl()
        evas_shutdown();
 }
 
-std::shared_ptr<DSRenderView> DSRenderEngineEcoreEvasImpl::makeRenderView(std::shared_ptr<DSWindow> window)
+std::shared_ptr<DSRenderView> DSRenderEngineEcoreEvasImpl::makeRenderView()
 {
-       std::shared_ptr<DSRenderView> renderView = std::make_shared<DSRenderViewEcoreEvasImpl>(__ee, window);
+       std::shared_ptr<DSRenderView> renderView = std::make_shared<DSRenderViewEcoreEvasImpl>(__ee);
 
        return renderView;
 }
index cf23fba..23b2837 100644 (file)
@@ -37,7 +37,7 @@ public:
        DSRenderEngineEcoreEvasImpl(std::shared_ptr<IDSBufferQueue> bufferQueue);
        ~DSRenderEngineEcoreEvasImpl();
 
-       std::shared_ptr<DSRenderView>    makeRenderView(std::shared_ptr<DSWindow> window) override;
+       std::shared_ptr<DSRenderView>    makeRenderView() override;
        bool                             renderFrame() override;
 
 private:
index e67a05a..0696c16 100644 (file)
@@ -25,7 +25,6 @@
 #define __DS_RENDER_VIEW_H__
 
 #include "IDSBuffer.h"
-#include "DSWindow.h"
 #include "DSObject.h"
 #include "DSSignal.h"
 
@@ -39,7 +38,6 @@ public:
        virtual ~DSRenderView();
 
        virtual bool setBuffer(std::shared_ptr<IDSBuffer> buffer) = 0;
-       virtual std::shared_ptr<DSWindow> getWindow() = 0;
        virtual void raiseToTop() = 0;
        virtual void lowerToBottom() = 0;
        virtual void setPosition(int x, int y) = 0;
index 18ec7e7..f39a017 100644 (file)
@@ -82,9 +82,8 @@ Geometry DSRenderViewDaliImpl::CreateTexturedQuad()
        return geometry;
 }
 
-DSRenderViewDaliImpl::DSRenderViewDaliImpl(std::shared_ptr<DSWindow> window, Dali::OffscreenWindow offscreenWindow)
-       : __window(window),
-         __offscreenWindow(offscreenWindow)
+DSRenderViewDaliImpl::DSRenderViewDaliImpl(Dali::OffscreenWindow offscreenWindow)
+       : __offscreenWindow(offscreenWindow)
 {
        std::string fragmentShader = "#extension GL_OES_EGL_image_external:require\n";
        fragmentShader += FRAGMENT_SHADER;
@@ -103,18 +102,12 @@ DSRenderViewDaliImpl::DSRenderViewDaliImpl(std::shared_ptr<DSWindow> window, Dal
 
        offscreenWindow.Add(__textureViewActor);
 
-       // callbacks
-       window->registerCallbackBufferChanged(this, std::bind(&DSRenderViewDaliImpl::__onWindowBufferChanged, this, std::placeholders::_1));
-       window->registerCallbackWindowRaiseToTop(this, std::bind(&DSRenderViewDaliImpl::__onWindowRaiseToTopChanged, this, std::placeholders::_1));
-       window->registerCallbackWindowLowerToBottom(this, std::bind(&DSRenderViewDaliImpl::__onWindowLowerToBottomChanged, this, std::placeholders::_1));
-       window->registerCallbackWindowPositionChanged(this, std::bind(&DSRenderViewDaliImpl::__onWindowPositionChanged, this, std::placeholders::_1));
-
-       DSLOG_INF("DSRenderViewDaliImpl", "RenderView created. window(%p)", __window.get());
+       DSLOG_INF("DSRenderViewDaliImpl", "RenderView(%p) created.", this);
 }
 
 DSRenderViewDaliImpl::~DSRenderViewDaliImpl()
 {
-       DSLOG_INF("DSRenderViewDaliImpl", "RenderView destroyed. window(%p)", __window.get());
+       DSLOG_INF("DSRenderViewDaliImpl", "RenderView(%p) destroyed", this);
 
        __textureViewActor.RemoveRenderer(__renderer);
        __offscreenWindow.Remove(__textureViewActor);
@@ -152,16 +145,6 @@ bool DSRenderViewDaliImpl::setBuffer(std::shared_ptr<IDSBuffer> buffer)
        return true;
 }
 
-std::shared_ptr<DSWindow> DSRenderViewDaliImpl::getWindow()
-{
-       return __window;
-}
-
-void DSRenderViewDaliImpl::registerCallbackUpdated(DSObject *slot, std::function<void(void *)> func)
-{
-       __updatedSignal.connect(slot, func);
-}
-
 void DSRenderViewDaliImpl::raiseToTop()
 {
        DSLOG_INF("DSRenderViewDaliImpl", "");
@@ -192,51 +175,9 @@ void DSRenderViewDaliImpl::setPosition(int x, int y)
        __updatedSignal.emit(nullptr);
 }
 
-void DSRenderViewDaliImpl::__onWindowBufferChanged(std::shared_ptr<IDSBuffer> buffer)
-{
-       if (buffer) {
-               std::shared_ptr<stSize> bufferSize = buffer->getSize();
-               DSLOG_INF("DSRenderViewDaliImpl", "Window Buffer changed. buffer(%p) size(%d, %d)", buffer.get(), bufferSize->w, bufferSize->h);
-       } else {
-               DSLOG_INF("DSRenderViewDaliImpl", "Window Buffer changed. buffer(nullptr)");
-       }
-
-       if (!setBuffer(buffer)) {
-               DSLOG_ERR("DSRenderViewDaliImpl", "setBuffer fails.");
-               return;
-       }
-}
-
-void DSRenderViewDaliImpl::__onWindowRaiseToTopChanged(void *data)
-{
-       DSLOG_INF("DSRenderViewDaliImpl", "__onWindowRaiseToTopChanged.");
-
-       __textureViewActor.SetProperty(Actor::Property::VISIBLE, true);
-       __textureViewActor.RaiseToTop();
-
-       __updatedSignal.emit(nullptr);
-}
-
-void DSRenderViewDaliImpl::__onWindowLowerToBottomChanged(void *data)
-{
-       DSLOG_INF("DSRenderViewDaliImpl", "__onWindowLowerToBottomChanged.");
-
-       __textureViewActor.SetProperty(Actor::Property::VISIBLE, true);
-       __textureViewActor.LowerToBottom();
-
-       __updatedSignal.emit(nullptr);
-}
-
-void DSRenderViewDaliImpl::__onWindowPositionChanged(void *data)
+void DSRenderViewDaliImpl::registerCallbackUpdated(DSObject *slot, std::function<void(void *)> func)
 {
-       DSLOG_INF("DSRenderViewDaliImpl", "__onWindowPositionChanged.");
-
-       stPosition pos = __window->getPosition();
-
-       __textureViewActor.SetProperty(Actor::Property::VISIBLE, true);
-       __textureViewActor.SetProperty(Actor::Property::POSITION, Vector3( pos.x, pos.y, 0.0f ));
-
-       __updatedSignal.emit(nullptr);
+       __updatedSignal.connect(slot, func);
 }
 
 } // namespace display_server
index 6a0c252..53ea9bf 100644 (file)
@@ -37,11 +37,10 @@ namespace display_server
 class DSRenderViewDaliImpl : public DSRenderView, public DSObject
 {
 public:
-       DSRenderViewDaliImpl(std::shared_ptr<DSWindow> window, Dali::OffscreenWindow offscreenWindow);
+       DSRenderViewDaliImpl(Dali::OffscreenWindow offscreenWindow);
        ~DSRenderViewDaliImpl();
 
        bool setBuffer(std::shared_ptr<IDSBuffer> buffer) override;
-       std::shared_ptr<DSWindow> getWindow() override;
        void raiseToTop() override;
        void lowerToBottom() override;
        void setPosition(int x, int y) override;
@@ -56,7 +55,6 @@ private:
        void __onWindowLowerToBottomChanged(void *data);
        void __onWindowPositionChanged(void *data);
 
-       std::shared_ptr<DSWindow> __window;
        Dali::OffscreenWindow     __offscreenWindow;
        Dali::Renderer            __renderer;
        Dali::Actor               __textureViewActor;
index d97e3e7..d829ee4 100644 (file)
 namespace display_server
 {
 
-DSRenderViewEcoreEvasImpl::DSRenderViewEcoreEvasImpl(Ecore_Evas *ee, std::shared_ptr<DSWindow> window)
-       : __window(window)
+DSRenderViewEcoreEvasImpl::DSRenderViewEcoreEvasImpl(Ecore_Evas *ee)
 {
        __evasView = evas_object_image_filled_add(ecore_evas_get(ee));
        evas_object_image_border_center_fill_set(__evasView, EVAS_BORDER_FILL_SOLID);
        evas_object_image_colorspace_set(__evasView, EVAS_COLORSPACE_ARGB8888);
-
-       // callbacks
-       window->registerCallbackBufferChanged(this, std::bind(&DSRenderViewEcoreEvasImpl::__onWindowBufferChanged, this, std::placeholders::_1));
 }
 
 DSRenderViewEcoreEvasImpl::~DSRenderViewEcoreEvasImpl()
@@ -50,32 +46,18 @@ bool DSRenderViewEcoreEvasImpl::setBuffer(std::shared_ptr<IDSBuffer> buffer)
        ns.type = EVAS_NATIVE_SURFACE_TBM;
        ns.version = EVAS_NATIVE_SURFACE_VERSION;
        ns.data.tbm.buffer = buffer->getNativeBuffer();
-
        evas_object_image_native_surface_set(__evasView, &ns);
 
-       return true;
-}
-
-void DSRenderViewEcoreEvasImpl::__onWindowBufferChanged(std::shared_ptr<IDSBuffer> buffer)
-{
        std::shared_ptr<stSize> bufferSize = buffer->getSize();
 
-       DSLOG_INF("DSRenderViewEcoreEvasImpl", "Window Buffer changed. buffer(%p) size(%d, %d)", buffer.get(), bufferSize->w, bufferSize->h);
-
-       if (!setBuffer(buffer)) {
-               DSLOG_ERR("DSRenderViewEcoreEvasImpl", "setBuffer fails.");
-               return;
-       }
-
        evas_object_image_size_set(__evasView, bufferSize->w, bufferSize->h);
        evas_object_image_pixels_dirty_set(__evasView, 1);
        evas_object_resize(__evasView, bufferSize->w, bufferSize->h);
        evas_object_show(__evasView);
-}
 
-std::shared_ptr<DSWindow> DSRenderViewEcoreEvasImpl::getWindow()
-{
-       return __window;
+       DSLOG_INF("DSRenderViewEcoreEvasImpl", "Window Buffer changed. buffer(%p) size(%d, %d)", buffer.get(), bufferSize->w, bufferSize->h);
+
+       return true;
 }
 
 void DSRenderViewEcoreEvasImpl::raiseToTop()
index 18d1eff..717c23a 100644 (file)
@@ -34,11 +34,10 @@ namespace display_server
 class DSRenderViewEcoreEvasImpl : public DSRenderView, public DSObject
 {
 public:
-       DSRenderViewEcoreEvasImpl(Ecore_Evas *ee, std::shared_ptr<DSWindow> window);
+       DSRenderViewEcoreEvasImpl(Ecore_Evas *ee);
        ~DSRenderViewEcoreEvasImpl();
 
        bool setBuffer(std::shared_ptr<IDSBuffer> buffer) override;
-       std::shared_ptr<DSWindow> getWindow() override;
        void raiseToTop() override;
        void lowerToBottom() override;
        void setPosition(int x, int y) override;
@@ -46,10 +45,7 @@ public:
        void registerCallbackUpdated(DSObject *slot, std::function<void(void *)> func) override;
 
 private:
-       void __onWindowBufferChanged(std::shared_ptr<IDSBuffer> buffer);
-
        Evas_Object *__evasView;
-       std::shared_ptr<DSWindow> __window;
 
        DSSignal<void *> __updatedSignal;
 };
index 65a5a07..b616da9 100644 (file)
@@ -25,7 +25,6 @@
 #define __I_DS_RENDER_ENGINE_H_
 
 #include "DSRenderView.h"
-#include "DSWindow.h"
 
 namespace display_server
 {
@@ -35,7 +34,7 @@ class IDSRenderEngine
 public:
        virtual ~IDSRenderEngine() = default;
 
-       virtual std::shared_ptr<DSRenderView>    makeRenderView(std::shared_ptr<DSWindow> window) = 0;
+       virtual std::shared_ptr<DSRenderView>    makeRenderView() = 0;
        virtual bool                             renderFrame() = 0;
 };
 
index 227026d..f3e6143 100644 (file)
@@ -119,9 +119,7 @@ TEST_F(DSRenderEngineDaliTest, RenderEngine_CreateRenderView)
        EXPECT_TRUE(bufferQueue != nullptr);
        auto renderEngine = std::make_unique<DSRenderEngineDaliImpl>(bufferQueue);
        EXPECT_TRUE(renderEngine != nullptr);
-       auto window = std::make_shared<DSWindow>();
-       EXPECT_TRUE(window != nullptr);
-       auto renderView = renderEngine->makeRenderView(window);
+       auto renderView = renderEngine->makeRenderView();
        EXPECT_TRUE(renderView != nullptr);
 }
 
@@ -131,9 +129,7 @@ TEST_F(DSRenderEngineDaliTest, RenderView_SetBuffer)
        EXPECT_TRUE(bufferQueue != nullptr);
        auto renderEngine = std::make_unique<DSRenderEngineDaliImpl>(bufferQueue);
        EXPECT_TRUE(renderEngine != nullptr);
-       auto window = std::make_shared<DSWindow>();
-       EXPECT_TRUE(window != nullptr);
-       auto renderView = renderEngine->makeRenderView(window);
+       auto renderView = renderEngine->makeRenderView();
        EXPECT_TRUE(renderView != nullptr);
        auto buffer = std::make_shared<DSBufferTBMImpl>(100, 100, IDSBuffer::FORMAT_ARGB8888);
        EXPECT_TRUE(renderView->setBuffer(buffer));
@@ -145,9 +141,7 @@ TEST_F(DSRenderEngineDaliTest, RenderEngine_RenderFrame)
        EXPECT_TRUE(bufferQueue != nullptr);
        auto renderEngine = std::make_unique<DSRenderEngineDaliImpl>(bufferQueue);
        EXPECT_TRUE(renderEngine != nullptr);
-       auto window = std::make_shared<DSWindow>();
-       EXPECT_TRUE(window != nullptr);
-       auto renderView = renderEngine->makeRenderView(window);
+       auto renderView = renderEngine->makeRenderView();
        EXPECT_TRUE(renderView != nullptr);
        auto buffer = std::make_shared<DSBufferTBMImpl> (100, 100, IDSBuffer::FORMAT_ARGB8888);
        EXPECT_TRUE(renderView->setBuffer(buffer));
@@ -184,9 +178,7 @@ TEST_F(DSRenderEngineDaliTest, RenderEngine_RenderOnlyOneFrame)
 
                auto renderEngine = std::make_unique<DSRenderEngineDaliImpl>(bufferQueue);
                EXPECT_TRUE(renderEngine != nullptr);
-               auto window = std::make_shared<DSWindow>();
-               EXPECT_TRUE(window != nullptr);
-               auto renderView = renderEngine->makeRenderView(window);
+               auto renderView = renderEngine->makeRenderView();
                EXPECT_TRUE(renderView != nullptr);
 
                int imgWidth = 500;
@@ -211,7 +203,7 @@ TEST_F(DSRenderEngineDaliTest, RenderEngine_RenderOnlyOneFrame)
        }
 }
 
-TEST_F(DSRenderEngineDaliTest, RenderEngine_ComposeTwoWindow)
+TEST_F(DSRenderEngineDaliTest, RenderEngine_ComposeTwoRenderView)
 {
        std::unique_ptr<IDSDisplayDevice> displayDevice = std::make_unique<DSDisplayDeviceTDMImpl>();
        std::list<std::shared_ptr<IDSDisplayDeviceOutput>> outputList = displayDevice->getOutputList();
@@ -245,10 +237,8 @@ TEST_F(DSRenderEngineDaliTest, RenderEngine_ComposeTwoWindow)
                int imgWidth = 500;
                int imgHeight = 500;
 
-               // for 1st window -- begin --
-               auto windowA = std::make_shared<DSWindow>();
-               EXPECT_TRUE(windowA != nullptr);
-               auto renderViewA = renderEngine->makeRenderView(windowA);
+               // for 1st renderView -- begin --
+               auto renderViewA = renderEngine->makeRenderView();
                EXPECT_TRUE(renderViewA != nullptr);
 
                // create RED image buffer
@@ -260,13 +250,11 @@ TEST_F(DSRenderEngineDaliTest, RenderEngine_ComposeTwoWindow)
                EXPECT_TRUE(renderViewA->setBuffer(imageSourceBufferA));
                // -- end --
 
-               // for 2nd window -- begin --
-               auto windowB = std::make_shared<DSWindow>();
-               EXPECT_TRUE(windowB != nullptr);
-               auto renderViewB = renderEngine->makeRenderView(windowB);
+               // for 2nd renderView -- begin --
+               auto renderViewB = renderEngine->makeRenderView();
                EXPECT_TRUE(renderViewB != nullptr);
 
-               // The buffer size of the second window is half of the first.
+               // The buffer size of the second renderView is half of the first.
                // create BLUE image buffer
                tbm_surface_h tbmTextureB = DSRenderEngineDaliTest::createTbmTexture(
                                                                        imgWidth/2, imgHeight/2, 0, 0, 255, 255);
@@ -279,8 +267,8 @@ TEST_F(DSRenderEngineDaliTest, RenderEngine_ComposeTwoWindow)
                EXPECT_TRUE(renderEngine->renderFrame());
 
                /*
-                * Since windowA was created and added before windowB,
-                * windowB should be drawn above and windowA below.
+                * Since renderViewA was created and added before renderViewB,
+                * renderViewB should be drawn above and renderViewA below.
                 *
                 * ┌──────┬──────┐
                 * │  B   │      │
index 66567a3..ff917fd 100644 (file)
@@ -51,9 +51,7 @@ TEST_F(DSRenderEngineEcoreEvasTest, RenderEngine_MakeRenderView)
        EXPECT_TRUE(bufferQueue != nullptr);
        auto renderEngine = std::make_unique<DSRenderEngineEcoreEvasImpl>(bufferQueue);
        EXPECT_TRUE(renderEngine != nullptr);
-       auto window = std::make_shared<DSWindow>();
-       EXPECT_TRUE(window != nullptr);
-       auto renderView = renderEngine->makeRenderView(window);
+       auto renderView = renderEngine->makeRenderView();
        EXPECT_TRUE(renderView != nullptr);
 }
 
@@ -63,9 +61,7 @@ TEST_F(DSRenderEngineEcoreEvasTest, RenderView_SetBuffer)
        EXPECT_TRUE(bufferQueue != nullptr);
        auto renderEngine = std::make_unique<DSRenderEngineEcoreEvasImpl>(bufferQueue);
        EXPECT_TRUE(renderEngine != nullptr);
-       auto window = std::make_shared<DSWindow>();
-       EXPECT_TRUE(window != nullptr);
-       auto renderView = renderEngine->makeRenderView(window);
+       auto renderView = renderEngine->makeRenderView();
        EXPECT_TRUE(renderView != nullptr);
        auto buffer = std::make_shared<DSBufferTBMImpl> (100, 100, IDSBuffer::FORMAT_ARGB8888);
        EXPECT_TRUE(renderView->setBuffer(buffer));
@@ -77,9 +73,7 @@ TEST_F(DSRenderEngineEcoreEvasTest, RenderEngine_RenderFrame)
        EXPECT_TRUE(bufferQueue != nullptr);
        auto renderEngine = std::make_unique<DSRenderEngineEcoreEvasImpl>(bufferQueue);
        EXPECT_TRUE(renderEngine != nullptr);
-       auto window = std::make_shared<DSWindow>();
-       EXPECT_TRUE(window != nullptr);
-       auto renderView = renderEngine->makeRenderView(window);
+       auto renderView = renderEngine->makeRenderView();
        EXPECT_TRUE(renderView != nullptr);
        auto buffer = std::make_shared<DSBufferTBMImpl> (100, 100, IDSBuffer::FORMAT_ARGB8888);
        EXPECT_TRUE(renderView->setBuffer(buffer));