DSDisplayArea: move the DSRenderEngine from DSCanvasPrivate to DSDisplayAreaPrivate 82/241682/1
authorSooChan Lim <sc1.lim@samsung.com>
Wed, 29 Jul 2020 02:18:01 +0000 (11:18 +0900)
committerSung-Jin Park <sj76.park@samsung.com>
Thu, 20 Aug 2020 10:04:42 +0000 (19:04 +0900)
Change-Id: If02a695d24518155f921687a53f1a800312558b3

src/DSCanvas/DSCanvas.cpp
src/DSCanvas/DSCanvasPrivate.h
src/DSDisplayArea/DSDisplayArea.cpp
src/DSDisplayArea/DSDisplayAreaPrivate.h
tests/DSCanvas-test.cpp
tests/DSDisplayArea-test.cpp

index 7be8291..e05c643 100644 (file)
@@ -1,8 +1,7 @@
 #include "DSCanvas.h"
 #include "DSCanvasPrivate.h"
-#include "DSOutputImpl.h"
-#include "DSRenderEngineEcoreEvasImpl.h"
-#include "DSDebugLog.h"
+#include "DSPolicyAreaPrivate.h"
+#include "DSDisplayAreaPrivate.h"
 
 namespace display_server
 {
@@ -38,8 +37,8 @@ DSCanvasPrivate::DSCanvasPrivate(DSCanvas *p_ptr)
        : DSObjectPrivate(p_ptr),
          __p_ptr(p_ptr),
          __zone(nullptr),
-         __displayArea(nullptr),
-         __RenderEngine(nullptr)
+         __policyArea(nullptr),
+         __displayArea(nullptr)
 {}
 
 DSCanvasPrivate::~DSCanvasPrivate()
@@ -53,7 +52,15 @@ 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));
+
+       // add zone to DSDisplayAreaPrivate
+       if (__displayArea) {
+               DSDisplayAreaPrivate *displayAreaPriv = DSDisplayAreaPrivate::getPrivate(__displayArea.get());
+               if (displayAreaPriv)
+                       displayAreaPriv->addZone(__zone);
+       }
+
+       __policyArea = policyArea;
 
        return true;
 }
@@ -65,23 +72,11 @@ bool DSCanvasPrivate::attachDisplayArea(std::shared_ptr<DSDisplayArea> displayAr
                return false;
        }
 
-       auto output = displayArea->getOutput();
-       if (!output) {
-               DSLOG_ERR("DSCanvasPrivate", "output is null.");
-               return false;
-       }
-
-       auto outputImpl = std::dynamic_pointer_cast<DSOutputImpl>(output); // down-casting of std::shared_ptr
-       auto bufferQueue = outputImpl->getDisplayBufferQueue();
-       if (!bufferQueue) {
-               DSLOG_ERR("DSCanvasPrivate", "bufferQueue is null.");
-               return false;
-       }
-
-       __RenderEngine = std::make_shared<DSRenderEngineEcoreEvasImpl>(bufferQueue);
-       if (!__RenderEngine) {
-               DSLOG_ERR("DSCanvasPrivate", "__RenderEngine is null.");
-               return false;
+       // add zone to DSDisplayAreaPrivate
+       if (__policyArea) {
+               DSDisplayAreaPrivate *displayAreaPriv = DSDisplayAreaPrivate::getPrivate(__displayArea.get());
+               if (displayAreaPriv)
+                       displayAreaPriv->addZone(__zone);
        }
 
        __displayArea = displayArea;
@@ -89,9 +84,4 @@ 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 fb98032..ce34d63 100644 (file)
@@ -3,7 +3,6 @@
 
 #include "DSCanvas.h"
 #include "DSZone.h"
-#include "IDSRenderEngine.h"
 
 namespace display_server
 {
@@ -21,11 +20,9 @@ public:
        bool attachDisplayArea(std::shared_ptr<DSDisplayArea> displayArea);
 
 private:
-       void __onWindowCreated(std::shared_ptr<DSWindow> window);
-
        std::shared_ptr<DSZone> __zone;
+       std::shared_ptr<DSPolicyArea> __policyArea;
        std::shared_ptr<DSDisplayArea> __displayArea;
-       std::shared_ptr<IDSRenderEngine> __RenderEngine;
 };
 
 }
index 32c931f..a716dbf 100644 (file)
@@ -1,6 +1,7 @@
 #include "DSDisplayArea.h"
 #include "DSDisplayAreaPrivate.h"
-#include "DSDebugLog.h"
+#include "DSOutputImpl.h"
+#include "DSRenderEngineEcoreEvasImpl.h"
 
 namespace display_server
 {
@@ -57,11 +58,22 @@ DSDisplayAreaPrivate::DSDisplayAreaPrivate(DSDisplayArea *p_ptr, std::shared_ptr
        : DSObjectPrivate(p_ptr),
          __p_ptr(p_ptr),
          __output(output),
+         __zone(nullptr),
+         __renderEngine(nullptr),
          __x(0),
          __y(0),
          __width(0),
          __height(0)
-{}
+{
+       auto outputImpl = std::dynamic_pointer_cast<DSOutputImpl>(output); // down-casting of std::shared_ptr
+       auto bufferQueue = outputImpl->getDisplayBufferQueue();
+       if (!bufferQueue)
+               DSLOG_ERR("DSDisplayAreaPrivate", "bufferQueue is null.");
+
+       __renderEngine = std::make_shared<DSRenderEngineEcoreEvasImpl>(bufferQueue);
+       if (!__renderEngine)
+               DSLOG_ERR("DSCanvasPrivate", "__RenderEngine is null.");
+}
 
 DSDisplayAreaPrivate::~DSDisplayAreaPrivate()
 {}
@@ -103,5 +115,16 @@ std::shared_ptr<IDSOutput> DSDisplayAreaPrivate::getOutput()
        return __output;
 }
 
+bool DSDisplayAreaPrivate::addZone(std::shared_ptr<DSZone> zone)
+{
+       __zone->registerCallbackWindowCreated(this, std::bind(&DSDisplayAreaPrivate::__onWindowCreated, this, std::placeholders::_1));
+
+       return true;
+}
+
+void DSDisplayAreaPrivate::__onWindowCreated(std::shared_ptr<DSWindow> window)
+{
+       std::shared_ptr<DSRenderView> renderView = __renderEngine->makeRenderView(window);
+}
 
 } // namespace display_server
index 3b8351a..b112f03 100644 (file)
@@ -2,13 +2,16 @@
 #define __DS_DISPLAY_AREA_PRIVATE_H__
 
 #include "DSDisplayArea.h"
+#include "DSWindow.h"
+#include "DSZone.h"
+#include "IDSRenderEngine.h"
 #include <IDSOutput.h>
 #include <memory>
 
 namespace display_server
 {
 
-class DSDisplayAreaPrivate : public DSObjectPrivate
+class DSDisplayAreaPrivate : public DSObjectPrivate, public DSObject
 {
 DS_PIMPL_USE_PUBLIC(DSDisplayArea);
 public:
@@ -24,9 +27,14 @@ public:
 
        bool setOutput(std::shared_ptr<IDSOutput> output);
        std::shared_ptr<IDSOutput> getOutput();
+       bool addZone(std::shared_ptr<DSZone> zone);
 
 private:
+       void __onWindowCreated(std::shared_ptr<DSWindow> window);
+
        std::shared_ptr<IDSOutput> __output;
+       std::shared_ptr<DSZone> __zone;
+       std::shared_ptr<IDSRenderEngine> __renderEngine;
        int __x, __y;
        int __width, __height;
 };
index 5256163..4c88399 100644 (file)
@@ -3,7 +3,7 @@
 #include "IDSOutput.h"
 #include "DSOutputImpl.h"
 #include "IDSDisplayDeviceOutput.h"
-#include "DSDisplayDeviceOutputTDMImpl.h"
+#include "DSDisplayDeviceTDMImpl.h"
 
 using namespace display_server;
 
@@ -18,13 +18,13 @@ public:
 
 TEST_F(DSCanvasTest, NewDSCanvas)
 {
-       std::unique_ptr<DSCanvas> canvas = std::make_unique<DSCanvas>();
+       auto canvas = std::make_unique<DSCanvas>();
        EXPECT_TRUE(canvas != nullptr);
 }
 
 TEST_F(DSCanvasTest, attachPolicyArea)
 {
-       std::unique_ptr<DSCanvas> canvas = std::make_unique<DSCanvas>();
+       auto canvas = std::make_unique<DSCanvas>();
        EXPECT_TRUE(canvas != nullptr);
        auto policyArea = std::make_shared<DSPolicyArea>();
        EXPECT_TRUE(policyArea != nullptr);
@@ -33,13 +33,17 @@ TEST_F(DSCanvasTest, attachPolicyArea)
 
 TEST_F(DSCanvasTest, displayArea_Negetive1)
 {
-       std::unique_ptr<DSCanvas> canvas = std::make_unique<DSCanvas>();
+       auto canvas = std::make_unique<DSCanvas>();
        EXPECT_TRUE(canvas != nullptr);
-       auto displayDeviceOutput = std::make_shared<DSDisplayDeviceOutputTDMImpl>();
-       EXPECT_TRUE(displayDeviceOutput != nullptr);
-       auto output = std::make_shared<DSOutputImpl>(displayDeviceOutput);
-       EXPECT_TRUE(output != nullptr);
-       auto displayArea = std::make_shared<DSDisplayArea>(output);
-       EXPECT_TRUE(displayArea != nullptr);
-       EXPECT_TRUE(canvas->attachDisplayArea(displayArea) == false);
+
+       auto displayDevice = std::make_unique<DSDisplayDeviceTDMImpl>();
+       auto outputList = displayDevice->getOutputList();
+       for (auto displayDeviceOutput : outputList) {
+               auto output = std::make_shared<DSOutputImpl>(displayDeviceOutput);
+               EXPECT_TRUE(output != nullptr);
+               EXPECT_TRUE(output->applyResolutionAuto() == true);
+               auto displayArea = std::make_shared<DSDisplayArea>(output);
+               EXPECT_TRUE(displayArea != nullptr);
+               EXPECT_TRUE(canvas->attachDisplayArea(displayArea) == false);
+       }
 }
index 2cbc48c..7fda1a5 100644 (file)
@@ -3,7 +3,7 @@
 #include "IDSOutput.h"
 #include "DSOutputImpl.h"
 #include "IDSDisplayDeviceOutput.h"
-#include "DSDisplayDeviceOutputTDMImpl.h"
+#include "DSDisplayDeviceTDMImpl.h"
 
 using namespace display_server;
 
@@ -23,27 +23,28 @@ public:
 
 TEST_F(DSDisplayAreaTest, NewDSDisplayArea)
 {
-       auto displayDeviceOutput = std::make_shared<DSDisplayDeviceOutputTDMImpl>();
-       EXPECT_TRUE(displayDeviceOutput != nullptr);
-       auto output = std::make_shared<DSOutputImpl>(displayDeviceOutput);
-       EXPECT_TRUE(output != nullptr);
-
-       auto displayArea = std::make_unique<DSDisplayArea>(output);
-       EXPECT_TRUE(displayArea != nullptr);
+       auto displayDevice = std::make_unique<DSDisplayDeviceTDMImpl>();
+       auto outputList = displayDevice->getOutputList();
+       for (auto displayDeviceOutput : outputList) {
+               auto output = std::make_shared<DSOutputImpl>(displayDeviceOutput);
+               EXPECT_TRUE(output != nullptr);
+               EXPECT_TRUE(output->applyResolutionAuto() == true);
+               auto displayArea = std::make_shared<DSDisplayArea>(output);
+       }
 }
 
 TEST_F(DSDisplayAreaTest, BasicMethods)
 {
-       auto displayDeviceOutput = std::make_shared<DSDisplayDeviceOutputTDMImpl>();
-       EXPECT_TRUE(displayDeviceOutput != nullptr);
-       auto output = std::make_shared<DSOutputImpl>(displayDeviceOutput);
-       EXPECT_TRUE(output != nullptr);
-
-       auto displayArea = std::make_unique<DSDisplayArea>(output);
-       EXPECT_TRUE(displayArea != nullptr);
-
-       EXPECT_TRUE(displayArea->setPosition(0, 0) != 0);
-       EXPECT_TRUE(displayArea->setSize(100, 100) != 0);
-       EXPECT_TRUE(displayArea->getHeight() != 0);
-       EXPECT_TRUE(displayArea->getWidth() != 0);
+       auto displayDevice = std::make_unique<DSDisplayDeviceTDMImpl>();
+       auto outputList = displayDevice->getOutputList();
+       for (auto displayDeviceOutput : outputList) {
+               auto output = std::make_shared<DSOutputImpl>(displayDeviceOutput);
+               EXPECT_TRUE(output != nullptr);
+               EXPECT_TRUE(output->applyResolutionAuto() == true);
+               auto displayArea = std::make_shared<DSDisplayArea>(output);
+               EXPECT_TRUE(displayArea->setPosition(0, 0) != 0);
+               EXPECT_TRUE(displayArea->setSize(100, 100) != 0);
+               EXPECT_TRUE(displayArea->getHeight() != 0);
+               EXPECT_TRUE(displayArea->getWidth() != 0);
+       }
 }