DSCanvas: add registerCallbackWindowCreated and make renderView 80/241680/1
authorSooChan Lim <sc1.lim@samsung.com>
Wed, 29 Jul 2020 01:14:16 +0000 (10:14 +0900)
committerSung-Jin Park <sj76.park@samsung.com>
Thu, 20 Aug 2020 10:04:40 +0000 (19:04 +0900)
DSCanvas makes DSRenderView when DSZone creates the DSWindow.

Change-Id: Ia9e180b26b45457a8e6c0fd58bbee9353ec534ec

14 files changed:
src/DSCanvas/DSCanvas.cpp
src/DSCanvas/DSCanvasPrivate.h
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 c200df4..7be8291 100644 (file)
@@ -53,6 +53,7 @@ bool DSCanvasPrivate::attachPolicyArea(std::shared_ptr<DSPolicyArea> policyArea)
        }
 
        __zone = std::make_shared<DSZone>(policyArea);
+       __zone->registerCallbackWindowCreated(this, std::bind(&DSCanvasPrivate::__onWindowCreated, this, std::placeholders::_1));
 
        return true;
 }
@@ -88,4 +89,9 @@ bool DSCanvasPrivate::attachDisplayArea(std::shared_ptr<DSDisplayArea> displayAr
        return true;
 }
 
+void DSCanvasPrivate::__onWindowCreated(std::shared_ptr<DSWindow> window)
+{
+       std::shared_ptr<DSRenderView> renderView = __RenderEngine->makeRenderView(window);
+}
+
 } // namespace display_server
index 2688f0a..fb98032 100644 (file)
@@ -8,7 +8,7 @@
 namespace display_server
 {
 
-class DSCanvasPrivate : public DSObjectPrivate
+class DSCanvasPrivate : public DSObjectPrivate, public DSObject
 {
 DS_PIMPL_USE_PUBLIC(DSCanvas);
 public:
@@ -21,6 +21,8 @@ public:
        bool attachDisplayArea(std::shared_ptr<DSDisplayArea> displayArea);
 
 private:
+       void __onWindowCreated(std::shared_ptr<DSWindow> window);
+
        std::shared_ptr<DSZone> __zone;
        std::shared_ptr<DSDisplayArea> __displayArea;
        std::shared_ptr<IDSRenderEngine> __RenderEngine;
index 3bf7990..02245a6 100644 (file)
@@ -12,9 +12,9 @@ DSRenderEngineDaliImpl::DSRenderEngineDaliImpl(std::shared_ptr<IDSBufferQueue> b
 DSRenderEngineDaliImpl::~DSRenderEngineDaliImpl()
 {}
 
-std::shared_ptr<DSRenderView> DSRenderEngineDaliImpl::makeRenderView()
+std::shared_ptr<DSRenderView> DSRenderEngineDaliImpl::makeRenderView(std::shared_ptr<DSWindow> window)
 {
-       std::shared_ptr<DSRenderView> renderView = std::make_shared<DSRenderViewDaliImpl>();
+       std::shared_ptr<DSRenderView> renderView = std::make_shared<DSRenderViewDaliImpl>(window);
 
        return renderView;
 }
index d50ac49..2b101e1 100644 (file)
@@ -13,7 +13,7 @@ public:
        DSRenderEngineDaliImpl(std::shared_ptr<IDSBufferQueue> bufferQueue);
        ~DSRenderEngineDaliImpl();
 
-       std::shared_ptr<DSRenderView>    makeRenderView() override;
+       std::shared_ptr<DSRenderView>    makeRenderView(std::shared_ptr<DSWindow> window) override;
        bool                             renderFrame() override;
 
 private:
index 82bf8d1..c211ad5 100644 (file)
@@ -44,9 +44,9 @@ DSRenderEngineEcoreEvasImpl::~DSRenderEngineEcoreEvasImpl()
        evas_shutdown();
 }
 
-std::shared_ptr<DSRenderView> DSRenderEngineEcoreEvasImpl::makeRenderView()
+std::shared_ptr<DSRenderView> DSRenderEngineEcoreEvasImpl::makeRenderView(std::shared_ptr<DSWindow> window)
 {
-       std::shared_ptr<DSRenderView> renderView = std::make_shared<DSRenderViewEcoreEvasImpl>(__ee);
+       std::shared_ptr<DSRenderView> renderView = std::make_shared<DSRenderViewEcoreEvasImpl>(__ee, window);
 
        return renderView;
 }
index 163c7f2..5e9e696 100644 (file)
@@ -14,7 +14,7 @@ public:
        DSRenderEngineEcoreEvasImpl(std::shared_ptr<IDSBufferQueue> bufferQueue);
        ~DSRenderEngineEcoreEvasImpl();
 
-       std::shared_ptr<DSRenderView>    makeRenderView() override;
+       std::shared_ptr<DSRenderView>    makeRenderView(std::shared_ptr<DSWindow> window) override;
        bool                             renderFrame() override;
 
 private:
index a76eaa2..d7b2e88 100644 (file)
@@ -1,7 +1,8 @@
-#ifndef __DS_RENDER_VIEW_H_
-#define __DS_RENDER_VIEW_H_
+#ifndef __DS_RENDER_VIEW_H__
+#define __DS_RENDER_VIEW_H__
 
 #include "IDSBuffer.h"
+#include "DSWindow.h"
 #include <memory>
 
 namespace display_server
index 5b83e3a..685fd48 100644 (file)
@@ -3,7 +3,8 @@
 namespace display_server
 {
 
-DSRenderViewDaliImpl::DSRenderViewDaliImpl()
+DSRenderViewDaliImpl::DSRenderViewDaliImpl(std::shared_ptr<DSWindow> window)
+       : __window(window)
 {}
 
 DSRenderViewDaliImpl::~DSRenderViewDaliImpl()
index 36990f1..d66b59f 100644 (file)
@@ -9,13 +9,13 @@ namespace display_server
 class DSRenderViewDaliImpl : public DSRenderView
 {
 public:
-       DSRenderViewDaliImpl();
+       DSRenderViewDaliImpl(std::shared_ptr<DSWindow> window);
        ~DSRenderViewDaliImpl();
 
        bool setBuffer(std::shared_ptr<IDSBuffer> buffer) override;
 
 private:
-       /* data */
+       std::shared_ptr<DSWindow> __window;
 };
 
 }
index 8ce49be..15147e2 100644 (file)
@@ -4,7 +4,8 @@
 namespace display_server
 {
 
-DSRenderViewEcoreEvasImpl::DSRenderViewEcoreEvasImpl(Ecore_Evas *ee)
+DSRenderViewEcoreEvasImpl::DSRenderViewEcoreEvasImpl(Ecore_Evas *ee, std::shared_ptr<DSWindow> window)
+       : __window(window)
 {
        __evasView = evas_object_image_filled_add(ecore_evas_get(ee));
        evas_object_image_border_center_fill_set(__evasView, EVAS_BORDER_FILL_SOLID);
index eca50a7..e82f54c 100644 (file)
@@ -10,13 +10,14 @@ namespace display_server
 class DSRenderViewEcoreEvasImpl : public DSRenderView
 {
 public:
-       DSRenderViewEcoreEvasImpl(Ecore_Evas *ee);
+       DSRenderViewEcoreEvasImpl(Ecore_Evas *ee, std::shared_ptr<DSWindow> window);
        ~DSRenderViewEcoreEvasImpl();
 
        bool setBuffer(std::shared_ptr<IDSBuffer> buffer) override;
 
 private:
        Evas_Object *__evasView;
+       std::shared_ptr<DSWindow> __window;
 };
 
 
index 17d32cc..02f906d 100644 (file)
@@ -2,6 +2,7 @@
 #define __I_DS_RENDER_ENGINE_H_
 
 #include "DSRenderView.h"
+#include "DSWindow.h"
 #include <memory>
 
 namespace display_server
@@ -12,7 +13,7 @@ class IDSRenderEngine
 public:
        virtual ~IDSRenderEngine() = default;
 
-       virtual std::shared_ptr<DSRenderView>    makeRenderView() = 0;
+       virtual std::shared_ptr<DSRenderView>    makeRenderView(std::shared_ptr<DSWindow> window) = 0;
        virtual bool                             renderFrame() = 0;
 };
 
index 2dca108..daca8a1 100644 (file)
@@ -17,36 +17,34 @@ public:
 
 TEST_F(DSRenderEngineDaliTest, RenderEngine_Create)
 {
-       std::shared_ptr<IDSBufferQueue> bufferQueue = std::make_shared<DSBufferQueueTBMImpl>(3, 100, 100, IDSBuffer::FORMAT_ARGB8888);
+       auto bufferQueue = std::make_shared<DSBufferQueueTBMImpl>(3, 100, 100, IDSBuffer::FORMAT_ARGB8888);
        EXPECT_TRUE(bufferQueue != nullptr);
-
-       std::unique_ptr<IDSRenderEngine> renderEngine = std::make_unique<DSRenderEngineDaliImpl>(bufferQueue);
+       auto renderEngine = std::make_unique<DSRenderEngineDaliImpl>(bufferQueue);
        EXPECT_TRUE(renderEngine != nullptr);
 }
 
 TEST_F(DSRenderEngineDaliTest, RenderEngine_CreateRenderView)
 {
-       std::shared_ptr<IDSBufferQueue> bufferQueue = std::make_shared<DSBufferQueueTBMImpl>(3, 100, 100, IDSBuffer::FORMAT_ARGB8888);
+       auto bufferQueue = std::make_shared<DSBufferQueueTBMImpl>(3, 100, 100, IDSBuffer::FORMAT_ARGB8888);
        EXPECT_TRUE(bufferQueue != nullptr);
-
-       std::unique_ptr<IDSRenderEngine> renderEngine = std::make_unique<DSRenderEngineDaliImpl>(bufferQueue);
+       auto renderEngine = std::make_unique<DSRenderEngineDaliImpl>(bufferQueue);
        EXPECT_TRUE(renderEngine != nullptr);
-
-       std::shared_ptr<DSRenderView> renderView = renderEngine->makeRenderView();
+       auto window = std::make_shared<DSWindow>();
+       EXPECT_TRUE(window != nullptr);
+       auto renderView = renderEngine->makeRenderView(window);
        EXPECT_TRUE(renderView != nullptr);
 }
 
 TEST_F(DSRenderEngineDaliTest, RenderView_SetBuffer)
 {
-       std::shared_ptr<IDSBufferQueue> bufferQueue = std::make_shared<DSBufferQueueTBMImpl>(3, 100, 100, IDSBuffer::FORMAT_ARGB8888);
+       auto bufferQueue = std::make_shared<DSBufferQueueTBMImpl>(3, 100, 100, IDSBuffer::FORMAT_ARGB8888);
        EXPECT_TRUE(bufferQueue != nullptr);
-
-       std::unique_ptr<IDSRenderEngine> renderEngine = std::make_unique<DSRenderEngineDaliImpl>(bufferQueue);
+       auto renderEngine = std::make_unique<DSRenderEngineDaliImpl>(bufferQueue);
        EXPECT_TRUE(renderEngine != nullptr);
-
-       std::shared_ptr<DSRenderView> renderView = renderEngine->makeRenderView();
+       auto window = std::make_shared<DSWindow>();
+       EXPECT_TRUE(window != nullptr);
+       auto renderView = renderEngine->makeRenderView(window);
        EXPECT_TRUE(renderView != nullptr);
-
-       std::shared_ptr<IDSBuffer> buffer = std::make_shared<DSBufferTBMImpl>(100, 100, IDSBuffer::FORMAT_ARGB8888);
+       auto buffer = std::make_shared<DSBufferTBMImpl>(100, 100, IDSBuffer::FORMAT_ARGB8888);
        EXPECT_TRUE(renderView->setBuffer(buffer));
 }
\ No newline at end of file
index 6f04055..27db52f 100644 (file)
@@ -16,43 +16,49 @@ public:
 
 TEST_F(DSRenderEngineEcoreEvasTest, RenderEngine_Create)
 {
-       std::shared_ptr<IDSBufferQueue> bufferQueue = std::make_shared<DSBufferQueueTBMImpl>(3, 100, 100, IDSBuffer::FORMAT_ARGB8888);
+       auto bufferQueue = std::make_shared<DSBufferQueueTBMImpl>(3, 100, 100, IDSBuffer::FORMAT_ARGB8888);
        EXPECT_TRUE(bufferQueue != nullptr);
-       std::unique_ptr<IDSRenderEngine> renderEngine = std::make_unique<DSRenderEngineEcoreEvasImpl>(bufferQueue);
+       auto renderEngine = std::make_unique<DSRenderEngineEcoreEvasImpl>(bufferQueue);
        EXPECT_TRUE(renderEngine != nullptr);
 }
 
 TEST_F(DSRenderEngineEcoreEvasTest, RenderEngine_MakeRenderView)
 {
-       std::shared_ptr<IDSBufferQueue> bufferQueue = std::make_shared<DSBufferQueueTBMImpl>(3, 100, 100, IDSBuffer::FORMAT_ARGB8888);
+       auto bufferQueue = std::make_shared<DSBufferQueueTBMImpl>(3, 100, 100, IDSBuffer::FORMAT_ARGB8888);
        EXPECT_TRUE(bufferQueue != nullptr);
-       std::unique_ptr<IDSRenderEngine> renderEngine = std::make_unique<DSRenderEngineEcoreEvasImpl>(bufferQueue);
+       auto renderEngine = std::make_unique<DSRenderEngineEcoreEvasImpl>(bufferQueue);
        EXPECT_TRUE(renderEngine != nullptr);
-       std::shared_ptr<DSRenderView> renderView = renderEngine->makeRenderView();
+       auto window = std::make_shared<DSWindow>();
+       EXPECT_TRUE(window != nullptr);
+       auto renderView = renderEngine->makeRenderView(window);
        EXPECT_TRUE(renderView != nullptr);
 }
 
 TEST_F(DSRenderEngineEcoreEvasTest, RenderView_SetBuffer)
 {
-       std::shared_ptr<IDSBufferQueue> bufferQueue = std::make_shared<DSBufferQueueTBMImpl>(3, 100, 100, IDSBuffer::FORMAT_ARGB8888);
+       auto bufferQueue = std::make_shared<DSBufferQueueTBMImpl>(3, 100, 100, IDSBuffer::FORMAT_ARGB8888);
        EXPECT_TRUE(bufferQueue != nullptr);
-       std::unique_ptr<IDSRenderEngine> renderEngine = std::make_unique<DSRenderEngineEcoreEvasImpl>(bufferQueue);
+       auto renderEngine = std::make_unique<DSRenderEngineEcoreEvasImpl>(bufferQueue);
        EXPECT_TRUE(renderEngine != nullptr);
-       std::shared_ptr<DSRenderView> renderView = renderEngine->makeRenderView();
+       auto window = std::make_shared<DSWindow>();
+       EXPECT_TRUE(window != nullptr);
+       auto renderView = renderEngine->makeRenderView(window);
        EXPECT_TRUE(renderView != nullptr);
-       std::shared_ptr<IDSBuffer> buffer = std::make_shared<DSBufferTBMImpl> (100, 100, IDSBuffer::FORMAT_ARGB8888);
+       auto buffer = std::make_shared<DSBufferTBMImpl> (100, 100, IDSBuffer::FORMAT_ARGB8888);
        EXPECT_TRUE(renderView->setBuffer(buffer));
 }
 
 TEST_F(DSRenderEngineEcoreEvasTest, RenderEngine_RenderFrame)
 {
-       std::shared_ptr<IDSBufferQueue> bufferQueue = std::make_shared<DSBufferQueueTBMImpl>(3, 100, 100, IDSBuffer::FORMAT_ARGB8888);
+       auto bufferQueue = std::make_shared<DSBufferQueueTBMImpl>(3, 100, 100, IDSBuffer::FORMAT_ARGB8888);
        EXPECT_TRUE(bufferQueue != nullptr);
-       std::unique_ptr<IDSRenderEngine> renderEngine = std::make_unique<DSRenderEngineEcoreEvasImpl>(bufferQueue);
+       auto renderEngine = std::make_unique<DSRenderEngineEcoreEvasImpl>(bufferQueue);
        EXPECT_TRUE(renderEngine != nullptr);
-       std::shared_ptr<DSRenderView> renderView = renderEngine->makeRenderView();
+       auto window = std::make_shared<DSWindow>();
+       EXPECT_TRUE(window != nullptr);
+       auto renderView = renderEngine->makeRenderView(window);
        EXPECT_TRUE(renderView != nullptr);
-       std::shared_ptr<IDSBuffer> buffer = std::make_shared<DSBufferTBMImpl> (100, 100, IDSBuffer::FORMAT_ARGB8888);
+       auto buffer = std::make_shared<DSBufferTBMImpl> (100, 100, IDSBuffer::FORMAT_ARGB8888);
        EXPECT_TRUE(renderView->setBuffer(buffer));
        EXPECT_TRUE(renderEngine->renderFrame());
 }