From: SooChan Lim Date: Wed, 29 Jul 2020 02:18:01 +0000 (+0900) Subject: DSDisplayArea: move the DSRenderEngine from DSCanvasPrivate to DSDisplayAreaPrivate X-Git-Tag: accepted/tizen/unified/20200820.213435~193 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F82%2F241682%2F1;p=platform%2Fcore%2Fuifw%2Flibds.git DSDisplayArea: move the DSRenderEngine from DSCanvasPrivate to DSDisplayAreaPrivate Change-Id: If02a695d24518155f921687a53f1a800312558b3 --- diff --git a/src/DSCanvas/DSCanvas.cpp b/src/DSCanvas/DSCanvas.cpp index 7be8291..e05c643 100644 --- a/src/DSCanvas/DSCanvas.cpp +++ b/src/DSCanvas/DSCanvas.cpp @@ -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 policyArea) } __zone = std::make_shared(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 displayAr return false; } - auto output = displayArea->getOutput(); - if (!output) { - DSLOG_ERR("DSCanvasPrivate", "output is null."); - return false; - } - - auto outputImpl = std::dynamic_pointer_cast(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(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 displayAr return true; } -void DSCanvasPrivate::__onWindowCreated(std::shared_ptr window) -{ - std::shared_ptr renderView = __RenderEngine->makeRenderView(window); -} - } // namespace display_server diff --git a/src/DSCanvas/DSCanvasPrivate.h b/src/DSCanvas/DSCanvasPrivate.h index fb98032..ce34d63 100644 --- a/src/DSCanvas/DSCanvasPrivate.h +++ b/src/DSCanvas/DSCanvasPrivate.h @@ -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 displayArea); private: - void __onWindowCreated(std::shared_ptr window); - std::shared_ptr __zone; + std::shared_ptr __policyArea; std::shared_ptr __displayArea; - std::shared_ptr __RenderEngine; }; } diff --git a/src/DSDisplayArea/DSDisplayArea.cpp b/src/DSDisplayArea/DSDisplayArea.cpp index 32c931f..a716dbf 100644 --- a/src/DSDisplayArea/DSDisplayArea.cpp +++ b/src/DSDisplayArea/DSDisplayArea.cpp @@ -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(output); // down-casting of std::shared_ptr + auto bufferQueue = outputImpl->getDisplayBufferQueue(); + if (!bufferQueue) + DSLOG_ERR("DSDisplayAreaPrivate", "bufferQueue is null."); + + __renderEngine = std::make_shared(bufferQueue); + if (!__renderEngine) + DSLOG_ERR("DSCanvasPrivate", "__RenderEngine is null."); +} DSDisplayAreaPrivate::~DSDisplayAreaPrivate() {} @@ -103,5 +115,16 @@ std::shared_ptr DSDisplayAreaPrivate::getOutput() return __output; } +bool DSDisplayAreaPrivate::addZone(std::shared_ptr zone) +{ + __zone->registerCallbackWindowCreated(this, std::bind(&DSDisplayAreaPrivate::__onWindowCreated, this, std::placeholders::_1)); + + return true; +} + +void DSDisplayAreaPrivate::__onWindowCreated(std::shared_ptr window) +{ + std::shared_ptr renderView = __renderEngine->makeRenderView(window); +} } // namespace display_server diff --git a/src/DSDisplayArea/DSDisplayAreaPrivate.h b/src/DSDisplayArea/DSDisplayAreaPrivate.h index 3b8351a..b112f03 100644 --- a/src/DSDisplayArea/DSDisplayAreaPrivate.h +++ b/src/DSDisplayArea/DSDisplayAreaPrivate.h @@ -2,13 +2,16 @@ #define __DS_DISPLAY_AREA_PRIVATE_H__ #include "DSDisplayArea.h" +#include "DSWindow.h" +#include "DSZone.h" +#include "IDSRenderEngine.h" #include #include 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 output); std::shared_ptr getOutput(); + bool addZone(std::shared_ptr zone); private: + void __onWindowCreated(std::shared_ptr window); + std::shared_ptr __output; + std::shared_ptr __zone; + std::shared_ptr __renderEngine; int __x, __y; int __width, __height; }; diff --git a/tests/DSCanvas-test.cpp b/tests/DSCanvas-test.cpp index 5256163..4c88399 100644 --- a/tests/DSCanvas-test.cpp +++ b/tests/DSCanvas-test.cpp @@ -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 canvas = std::make_unique(); + auto canvas = std::make_unique(); EXPECT_TRUE(canvas != nullptr); } TEST_F(DSCanvasTest, attachPolicyArea) { - std::unique_ptr canvas = std::make_unique(); + auto canvas = std::make_unique(); EXPECT_TRUE(canvas != nullptr); auto policyArea = std::make_shared(); EXPECT_TRUE(policyArea != nullptr); @@ -33,13 +33,17 @@ TEST_F(DSCanvasTest, attachPolicyArea) TEST_F(DSCanvasTest, displayArea_Negetive1) { - std::unique_ptr canvas = std::make_unique(); + auto canvas = std::make_unique(); EXPECT_TRUE(canvas != nullptr); - auto displayDeviceOutput = std::make_shared(); - EXPECT_TRUE(displayDeviceOutput != nullptr); - auto output = std::make_shared(displayDeviceOutput); - EXPECT_TRUE(output != nullptr); - auto displayArea = std::make_shared(output); - EXPECT_TRUE(displayArea != nullptr); - EXPECT_TRUE(canvas->attachDisplayArea(displayArea) == false); + + auto displayDevice = std::make_unique(); + auto outputList = displayDevice->getOutputList(); + for (auto displayDeviceOutput : outputList) { + auto output = std::make_shared(displayDeviceOutput); + EXPECT_TRUE(output != nullptr); + EXPECT_TRUE(output->applyResolutionAuto() == true); + auto displayArea = std::make_shared(output); + EXPECT_TRUE(displayArea != nullptr); + EXPECT_TRUE(canvas->attachDisplayArea(displayArea) == false); + } } diff --git a/tests/DSDisplayArea-test.cpp b/tests/DSDisplayArea-test.cpp index 2cbc48c..7fda1a5 100644 --- a/tests/DSDisplayArea-test.cpp +++ b/tests/DSDisplayArea-test.cpp @@ -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(); - EXPECT_TRUE(displayDeviceOutput != nullptr); - auto output = std::make_shared(displayDeviceOutput); - EXPECT_TRUE(output != nullptr); - - auto displayArea = std::make_unique(output); - EXPECT_TRUE(displayArea != nullptr); + auto displayDevice = std::make_unique(); + auto outputList = displayDevice->getOutputList(); + for (auto displayDeviceOutput : outputList) { + auto output = std::make_shared(displayDeviceOutput); + EXPECT_TRUE(output != nullptr); + EXPECT_TRUE(output->applyResolutionAuto() == true); + auto displayArea = std::make_shared(output); + } } TEST_F(DSDisplayAreaTest, BasicMethods) { - auto displayDeviceOutput = std::make_shared(); - EXPECT_TRUE(displayDeviceOutput != nullptr); - auto output = std::make_shared(displayDeviceOutput); - EXPECT_TRUE(output != nullptr); - - auto displayArea = std::make_unique(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(); + auto outputList = displayDevice->getOutputList(); + for (auto displayDeviceOutput : outputList) { + auto output = std::make_shared(displayDeviceOutput); + EXPECT_TRUE(output != nullptr); + EXPECT_TRUE(output->applyResolutionAuto() == true); + auto displayArea = std::make_shared(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); + } }