From 17b2d63808fe97229d1116b129073449a1d76df7 Mon Sep 17 00:00:00 2001 From: SooChan Lim Date: Wed, 8 Jul 2020 14:51:15 +0900 Subject: [PATCH 01/16] change the raw pointers into the smart pointers Change-Id: Idddc7a14ec8eed73899ebe2975169a8de9d6a481 --- samples/exampleCompositor.cpp | 58 ++++++++++++++++++------------------- src/DSCanvas/DSCanvas.cpp | 27 +++++++++++++---- src/DSCanvas/DSCanvas.h | 9 +++--- src/DSCompositor/DSCompositor.cpp | 2 -- src/DSCompositor/DSCompositor.h | 11 +++++++ src/DSDisplayArea/DSDisplayArea.cpp | 2 +- src/DSDisplayArea/DSDisplayArea.h | 5 ++-- src/DSInput/DSInput.h | 7 +++-- src/DSOutput/DSOutput.cpp | 4 +-- src/DSOutput/DSOutput.h | 2 ++ src/DSPolicyArea/DSPolicyArea.cpp | 2 +- src/DSPolicyArea/DSPolicyArea.h | 4 +-- src/DSSeat/DSSeat.cpp | 4 +-- src/DSSeat/DSSeat.h | 5 ++-- tests/DSCanvas-test.cpp | 15 +++++----- tests/DSCompositor-test.cpp | 43 ++++++++++++++++++++++----- tests/DSDisplayArea-test.cpp | 37 +++++++++++++---------- tests/DSOutput-test.cpp | 5 ++-- tests/DSPolicyArea-test.cpp | 17 ++++++----- tests/DSSeat-test.cpp | 6 ++-- tests/libds-tests.h | 1 + 21 files changed, 165 insertions(+), 101 deletions(-) diff --git a/samples/exampleCompositor.cpp b/samples/exampleCompositor.cpp index cae7261..a53ea35 100644 --- a/samples/exampleCompositor.cpp +++ b/samples/exampleCompositor.cpp @@ -44,66 +44,64 @@ class MyCompositor : public DSCompositor { public: MyCompositor() - { - int width, height; + : __canvas{nullptr}, + __seat{nullptr}, + __policyArea{nullptr}, + __displayArea{nullptr} + {} - width = __displayArea->getWidth(); - height = __displayArea->getHeight(); + virtual ~MyCompositor() + {} - __canvas = new DSCanvas(); + void _onPrepareCanvas() override + { + int width = __displayArea->getWidth(); + int height = __displayArea->getHeight(); - __policyArea = new DSPolicyArea(); - //__policyArea->selectWmPolicy(PolicyAreaWmPolicy::MOBILE); - //__policyArea->selectEffectPolicy(PolicyAreaEffectPolicy::MOBILE); + __policyArea = std::make_shared(); __policyArea->setPosition(0, 0); __policyArea->setSize(width, height); __policyArea->attachSeat(__seat); + __canvas = std::make_unique(); + __canvas->attachPolicyArea(__policyArea); __canvas->attachDisplayArea(__displayArea); } - virtual ~MyCompositor() - { - delete __policyArea; - delete __canvas; - } - - void OutputAdd(DSOutput *output) + void _onOutputAdded(std::shared_ptr output) override { // set the resolution. output->applyResolutionAuto(); - } - void OutputResolutionSet(DSOutput *output, int width, int height) - { - __displayArea = new DSDisplayArea(output); + // make a display area. + __displayArea = std::make_shared(output); __displayArea->setPosition(0, 0); - __displayArea->setSize(width, height); + __displayArea->setSize(output->getResolutionWidth(), output->getResolutionHeight()); } - void OutputRemove(DSOutput *output) + void _onOutputRemoved(std::shared_ptr output) override { - delete __displayArea; + __displayArea.reset(); // delete shared_ptr } - void InputAdd(DSInput *input) + void _onInputAdded(std::shared_ptr input) override { - __seat = new DSSeat(); + __seat = std::make_shared(); __seat->addInput(input); // add an input device to a seat } - void InputRemove(DSInput *input) + void _onInputRemoved(std::shared_ptr input) override { __seat->removeInput(input); // remove an input device from a seat - delete(__seat); + __seat.reset(); // delete shared_ptr } private: - DSCanvas *__canvas; - DSSeat *__seat; - DSPolicyArea *__policyArea; - DSDisplayArea *__displayArea; + std::unique_ptr __canvas; + std::shared_ptr __seat; + std::shared_ptr __policyArea; + std::shared_ptr __displayArea; }; int main() { diff --git a/src/DSCanvas/DSCanvas.cpp b/src/DSCanvas/DSCanvas.cpp index 1dbb985..f952083 100644 --- a/src/DSCanvas/DSCanvas.cpp +++ b/src/DSCanvas/DSCanvas.cpp @@ -1,24 +1,39 @@ #include "DSCanvas.h" +#include "DSDebugLog.h" namespace display_server { DSCanvas::DSCanvas() - : __polcyArea(nullptr), + : __policyArea(nullptr), __displayArea(nullptr) {} DSCanvas::~DSCanvas() {} -bool DSCanvas::attachPolicyArea(DSPolicyArea *polcyArea) +bool DSCanvas::attachPolicyArea(std::shared_ptr policyArea) { - return false; + if (policyArea) { + DSLOG_ERR("DSCanvas", "canvas has already policyArea(%p).", policyArea); + return false; + } + + __policyArea = policyArea; + + return true; } -bool DSCanvas::attachDisplayArea(DSDisplayArea *displayArea) +bool DSCanvas::attachDisplayArea(std::shared_ptr displayArea) { - return false; + if (__displayArea) { + DSLOG_ERR("DSCanvas", "canvas has already displayArea(%p).", __displayArea); + return false; + } + + __displayArea = displayArea; + + return true; } -} // namespace display_server \ No newline at end of file +} // namespace display_server diff --git a/src/DSCanvas/DSCanvas.h b/src/DSCanvas/DSCanvas.h index 0d45cad..6e62fe2 100644 --- a/src/DSCanvas/DSCanvas.h +++ b/src/DSCanvas/DSCanvas.h @@ -3,6 +3,7 @@ #include #include +#include namespace display_server { @@ -12,12 +13,12 @@ public: DSCanvas(); virtual ~DSCanvas(); - bool attachPolicyArea(DSPolicyArea *polcyArea); - bool attachDisplayArea(DSDisplayArea *displayArea); + bool attachPolicyArea(std::shared_ptr polcyArea); + bool attachDisplayArea(std::shared_ptr displayArea); private: - DSPolicyArea *__polcyArea; - DSDisplayArea *__displayArea; + std::shared_ptr __policyArea; + std::shared_ptr __displayArea; }; } diff --git a/src/DSCompositor/DSCompositor.cpp b/src/DSCompositor/DSCompositor.cpp index 2733cd6..94a7db4 100644 --- a/src/DSCompositor/DSCompositor.cpp +++ b/src/DSCompositor/DSCompositor.cpp @@ -1,8 +1,6 @@ #include "DSCompositor.h" #include "DSDebugLog.h" -#include - namespace display_server { diff --git a/src/DSCompositor/DSCompositor.h b/src/DSCompositor/DSCompositor.h index 24d294e..b950aa7 100644 --- a/src/DSCompositor/DSCompositor.h +++ b/src/DSCompositor/DSCompositor.h @@ -2,7 +2,10 @@ #define __DS_COMPOSITOR_H__ #include "DSEventLoop.h" +#include "DSOutput.h" +#include "DSInput.h" #include + namespace display_server { @@ -15,6 +18,14 @@ public: bool run(); bool quit(); +protected: + virtual void _onPrepareCanvas() = 0; + + virtual void _onOutputAdded(std::shared_ptr output) = 0; + virtual void _onOutputRemoved(std::shared_ptr output) = 0; + virtual void _onInputAdded(std::shared_ptr input) = 0; + virtual void _onInputRemoved(std::shared_ptr input) = 0; + private: std::unique_ptr __eventLoop; diff --git a/src/DSDisplayArea/DSDisplayArea.cpp b/src/DSDisplayArea/DSDisplayArea.cpp index a3ab96b..81b9035 100644 --- a/src/DSDisplayArea/DSDisplayArea.cpp +++ b/src/DSDisplayArea/DSDisplayArea.cpp @@ -11,7 +11,7 @@ DSDisplayArea::DSDisplayArea() __height(0) {} -DSDisplayArea::DSDisplayArea(DSOutput *output) +DSDisplayArea::DSDisplayArea(std::shared_ptr output) : __output(output), __x(0), __y(0), diff --git a/src/DSDisplayArea/DSDisplayArea.h b/src/DSDisplayArea/DSDisplayArea.h index 3e3cc99..87fea02 100644 --- a/src/DSDisplayArea/DSDisplayArea.h +++ b/src/DSDisplayArea/DSDisplayArea.h @@ -2,6 +2,7 @@ #define _DSDISPLAYAREA_H_ #include +#include namespace display_server { @@ -10,7 +11,7 @@ class DSDisplayArea public: DSDisplayArea(); - DSDisplayArea(DSOutput *output); + DSDisplayArea(std::shared_ptr output); virtual ~DSDisplayArea(); bool setPosition(int x, int y); @@ -19,7 +20,7 @@ public: int getHeight(); private: - DSOutput *__output; + std::shared_ptr __output; int __x, __y; int __width, __height; }; diff --git a/src/DSInput/DSInput.h b/src/DSInput/DSInput.h index a05d5e3..fa63afb 100644 --- a/src/DSInput/DSInput.h +++ b/src/DSInput/DSInput.h @@ -1,8 +1,11 @@ #ifndef _DSINPUT_H_ #define _DSINPUT_H_ -#include "DSCore.h" -#include "DSObject.h" +#include +#include +#include +#include +#include namespace display_server { diff --git a/src/DSOutput/DSOutput.cpp b/src/DSOutput/DSOutput.cpp index c9a18e7..095fc9c 100644 --- a/src/DSOutput/DSOutput.cpp +++ b/src/DSOutput/DSOutput.cpp @@ -3,8 +3,8 @@ namespace display_server { DSOutput::DSOutput() - : __resolutionWidth(0), - __resolutionHeight(0) + : __resolutionWidth{0}, + __resolutionHeight{0} {} DSOutput::~DSOutput() diff --git a/src/DSOutput/DSOutput.h b/src/DSOutput/DSOutput.h index 47d279d..2587ca6 100644 --- a/src/DSOutput/DSOutput.h +++ b/src/DSOutput/DSOutput.h @@ -1,6 +1,8 @@ #ifndef _DSOUTPUT_H_ #define _DSOUTPUT_H_ +#include + namespace display_server { diff --git a/src/DSPolicyArea/DSPolicyArea.cpp b/src/DSPolicyArea/DSPolicyArea.cpp index d9d1241..18b3138 100644 --- a/src/DSPolicyArea/DSPolicyArea.cpp +++ b/src/DSPolicyArea/DSPolicyArea.cpp @@ -23,7 +23,7 @@ bool DSPolicyArea::setSize(int width, int height) return false; } -bool DSPolicyArea::attachSeat(DSSeat *seat) +bool DSPolicyArea::attachSeat(std::shared_ptr seat) { return false; } diff --git a/src/DSPolicyArea/DSPolicyArea.h b/src/DSPolicyArea/DSPolicyArea.h index 9264548..bffa273 100644 --- a/src/DSPolicyArea/DSPolicyArea.h +++ b/src/DSPolicyArea/DSPolicyArea.h @@ -13,12 +13,12 @@ public: bool setPosition(int x, int y); bool setSize(int width, int height); - bool attachSeat(DSSeat *seat); + bool attachSeat(std::shared_ptr seat); private: int __x, __y; int __width, __height; - DSSeat *__seat; + std::shared_ptr __seat; }; } diff --git a/src/DSSeat/DSSeat.cpp b/src/DSSeat/DSSeat.cpp index 69e29ac..df0657e 100644 --- a/src/DSSeat/DSSeat.cpp +++ b/src/DSSeat/DSSeat.cpp @@ -13,12 +13,12 @@ DSSeat::DSSeat() DSSeat::~DSSeat() {} -bool DSSeat::addInput(DSInput *input) +bool DSSeat::addInput(std::shared_ptr input) { return false; } -bool DSSeat::removeInput(DSInput *input) +bool DSSeat::removeInput(std::shared_ptr input) { return false; } diff --git a/src/DSSeat/DSSeat.h b/src/DSSeat/DSSeat.h index 97bc076..b0a2d2d 100644 --- a/src/DSSeat/DSSeat.h +++ b/src/DSSeat/DSSeat.h @@ -2,6 +2,7 @@ #define _DSSEAT_H_ #include +#include namespace display_server { @@ -16,8 +17,8 @@ public: DSSeat(); virtual ~DSSeat(); - bool addInput(DSInput *input); - bool removeInput(DSInput *input); + bool addInput(std::shared_ptr input); + bool removeInput(std::shared_ptr input); private: DSInput *__input; diff --git a/tests/DSCanvas-test.cpp b/tests/DSCanvas-test.cpp index c9138df..a0946d0 100644 --- a/tests/DSCanvas-test.cpp +++ b/tests/DSCanvas-test.cpp @@ -14,17 +14,18 @@ public: TEST_F(DSCanvasTest, NewDSCanvas) { - DSCanvas *canvas = new DSCanvas; - delete canvas; - ASSERT_TRUE(true); + std::unique_ptr canvas = std::make_unique(); + EXPECT_TRUE(canvas != nullptr); } TEST_F(DSCanvasTest, BasicMethods) { DSCanvas canvas; - DSPolicyArea policyArea; - DSDisplayArea displayArea; + auto policyArea = std::make_shared(); + EXPECT_TRUE(policyArea != nullptr); + auto displayArea = std::make_shared(); + EXPECT_TRUE(displayArea != nullptr); - EXPECT_TRUE(canvas.attachPolicyArea(&policyArea) == true); - EXPECT_TRUE(canvas.attachDisplayArea(&displayArea) == true); + EXPECT_TRUE(canvas.attachPolicyArea(policyArea) == true); + EXPECT_TRUE(canvas.attachDisplayArea(displayArea) == true); } \ No newline at end of file diff --git a/tests/DSCompositor-test.cpp b/tests/DSCompositor-test.cpp index af1dcf5..8404f23 100644 --- a/tests/DSCompositor-test.cpp +++ b/tests/DSCompositor-test.cpp @@ -8,34 +8,61 @@ class DSCompositorTest : public ::testing::Test { public: void SetUp(void) override - {} + { + // for wl_display_add_socket(private_loop->wl_display, "tdm-socket") at tdm_server_init + setenv("XDG_RUNTIME_DIR", "/run", 1); + } void TearDown(void) override + { + unsetenv("XDG_RUNTIME_DIR"); + } +}; + +class MockCompositor : public DSCompositor +{ +public: + MockCompositor() {} + ~MockCompositor() {} + + void _onPrepareCanvas() override + {} + + void _onOutputAdded(std::shared_ptr output) override + {} + + void _onOutputRemoved(std::shared_ptr output) override + {} + + void _onInputAdded(std::shared_ptr input) override + {} + + void _onInputRemoved(std::shared_ptr input) override {} }; TEST_F(DSCompositorTest, NewDSCompositor) { - DSCompositor *compositor = new DSCompositor; - delete compositor; - EXPECT_TRUE(true); + std::shared_ptr compositor = std::make_shared(); + EXPECT_TRUE(compositor != nullptr); } TEST_F(DSCompositorTest, RunAndQuit) { - DSCompositor compositor; + std::shared_ptr compositor = std::make_shared(); + EXPECT_TRUE(compositor != nullptr); Ecore_Timer *timer = nullptr; double delayInSecond = 1.0; auto cb = [](void *data) -> Eina_Bool { - DSCompositor *comp = (DSCompositor *)data; + MockCompositor *comp = (MockCompositor *)data; EXPECT_TRUE(comp->quit() == true); return EINA_FALSE; }; - timer = ecore_timer_loop_add(delayInSecond, cb, &compositor); + timer = ecore_timer_loop_add(delayInSecond, cb, compositor.get()); EXPECT_TRUE(timer != nullptr); if (timer != nullptr) { - EXPECT_TRUE(compositor.run() == true); + EXPECT_TRUE(compositor->run() == true); } } diff --git a/tests/DSDisplayArea-test.cpp b/tests/DSDisplayArea-test.cpp index a8de0ad..8794aa0 100644 --- a/tests/DSDisplayArea-test.cpp +++ b/tests/DSDisplayArea-test.cpp @@ -1,5 +1,6 @@ #include "libds-tests.h" #include "DSDisplayArea.h" +#include "DSDisplayDeviceOutputTDMImpl.h" using namespace display_server; @@ -7,31 +8,35 @@ class DSDisplayAreaTest : public ::testing::Test { public: void SetUp(void) override - {} + { + // for wl_display_add_socket(private_loop->wl_display, "tdm-socket") at tdm_server_init + setenv("XDG_RUNTIME_DIR", "/run", 1); + } void TearDown(void) override - {} + { + unsetenv("XDG_RUNTIME_DIR"); + } }; TEST_F(DSDisplayAreaTest, NewDSDisplayArea) { - DSDisplayArea *displayArea = new DSDisplayArea; - delete displayArea; + auto output = std::make_shared(); + EXPECT_TRUE(output != nullptr); - DSOutput *output = new DSOutput; - DSDisplayArea *displayArea1 = new DSDisplayArea(output); - delete displayArea1; - delete output; - - ASSERT_TRUE(true); + auto displayArea = std::make_unique(output); + EXPECT_TRUE(displayArea != nullptr); } TEST_F(DSDisplayAreaTest, BasicMethods) { - DSOutput output; - DSDisplayArea displayArea(&output); + auto output = std::make_shared(); + 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); + EXPECT_TRUE(displayArea->setPosition(0, 0) != 0); + EXPECT_TRUE(displayArea->setSize(100, 100) != 0); + EXPECT_TRUE(displayArea->getHeight() != 0); + EXPECT_TRUE(displayArea->getWidth() != 0); } diff --git a/tests/DSOutput-test.cpp b/tests/DSOutput-test.cpp index 5b8b046..9ac5a15 100644 --- a/tests/DSOutput-test.cpp +++ b/tests/DSOutput-test.cpp @@ -14,9 +14,8 @@ public: TEST_F(DSOutputTest, NewDSOutput) { - DSOutput *output = new DSOutput; - delete output; - ASSERT_TRUE(true); + std::shared_ptr output = std::make_shared(); + EXPECT_TRUE(output != nullptr); } TEST_F(DSOutputTest, BasicMethods) diff --git a/tests/DSPolicyArea-test.cpp b/tests/DSPolicyArea-test.cpp index ed4e1a4..1db77f0 100644 --- a/tests/DSPolicyArea-test.cpp +++ b/tests/DSPolicyArea-test.cpp @@ -14,17 +14,18 @@ public: TEST_F(DSPolicyAreaTest, NewDSPolicyArea) { - DSPolicyArea *policyArea = new DSPolicyArea; - delete policyArea; - ASSERT_TRUE(true); + std::unique_ptr policyArea = std::make_unique(); + EXPECT_TRUE(policyArea != nullptr); } TEST_F(DSPolicyAreaTest, BasicMethods) { - DSPolicyArea policyArea; - DSSeat seat; + std::unique_ptr policyArea = std::make_unique(); + EXPECT_TRUE(policyArea != nullptr); + std::shared_ptr seat = std::make_shared(); + EXPECT_TRUE(seat != nullptr); - EXPECT_TRUE(policyArea.setPosition(10, 10) == true); - EXPECT_TRUE(policyArea.setSize(100, 100) == true); - EXPECT_TRUE(policyArea.attachSeat(&seat) == true); + EXPECT_TRUE(policyArea->setPosition(10, 10) == true); + EXPECT_TRUE(policyArea->setSize(100, 100) == true); + EXPECT_TRUE(policyArea->attachSeat(seat) == true); } \ No newline at end of file diff --git a/tests/DSSeat-test.cpp b/tests/DSSeat-test.cpp index 40128cd..4cc99ac 100644 --- a/tests/DSSeat-test.cpp +++ b/tests/DSSeat-test.cpp @@ -22,8 +22,8 @@ TEST_F(DSSeatTest, NewDSSeat) TEST_F(DSSeatTest, BasicMethods) { DSSeat seat; - DSInput input; + auto input = std::make_shared(); - EXPECT_TRUE(seat.addInput(&input) == true); - EXPECT_TRUE(seat.removeInput(&input) == true); + EXPECT_TRUE(seat.addInput(input) == true); + EXPECT_TRUE(seat.removeInput(input) == true); } diff --git a/tests/libds-tests.h b/tests/libds-tests.h index 6f280b7..8965fec 100644 --- a/tests/libds-tests.h +++ b/tests/libds-tests.h @@ -30,6 +30,7 @@ #define _LIBDS_TESTS_H_ #include +#include #include #include "DSDebugLog.h" -- 2.7.4 From ff56d2497db5d3fcc4947b3a801634e653e50c4d Mon Sep 17 00:00:00 2001 From: SooChan Lim Date: Wed, 8 Jul 2020 17:25:58 +0900 Subject: [PATCH 02/16] DSCompositor: make the DSCompositorPrivate. use Pimpl pattern on DSCompsitor Change-Id: I3199c8653bb57a16a710f5a949e971a3d6211e8b --- src/DSCompositor/DSCompositor.cpp | 41 +++++++++++++++++++++++++++++++--- src/DSCompositor/DSCompositor.h | 19 ++++++++-------- src/DSCompositor/DSCompositorPrivate.h | 30 +++++++++++++++++++++++++ 3 files changed, 77 insertions(+), 13 deletions(-) create mode 100644 src/DSCompositor/DSCompositorPrivate.h diff --git a/src/DSCompositor/DSCompositor.cpp b/src/DSCompositor/DSCompositor.cpp index 94a7db4..8a54e48 100644 --- a/src/DSCompositor/DSCompositor.cpp +++ b/src/DSCompositor/DSCompositor.cpp @@ -1,18 +1,53 @@ #include "DSCompositor.h" +#include "DSCompositorPrivate.h" #include "DSDebugLog.h" +#include namespace display_server { DSCompositor::DSCompositor() + : DS_INIT_PRIVATE_PTR(DSCompositor) +{} + +DSCompositor::~DSCompositor() +{} + +bool DSCompositor::run() +{ + DS_GET_PRIV(DSCompositor); + + if (!priv->run()) { + DSLOG_ERR("Compositor", "priv->run() fails."); + return false; + } + + return true; +} + +bool DSCompositor::quit() +{ + DS_GET_PRIV(DSCompositor); + + if (!priv->quit()) { + DSLOG_ERR("Compositor", "priv->quit() fails."); + return false; + } + + return true; +} + +DSCompositorPrivate::DSCompositorPrivate(DSCompositor *p_ptr) + : DSObjectPrivate(p_ptr), + __p_ptr(p_ptr) { __eventLoop = std::make_unique(); } -DSCompositor::~DSCompositor() +DSCompositorPrivate::~DSCompositorPrivate() {} -bool DSCompositor::run() +bool DSCompositorPrivate::run() { if (!__eventLoop->run()) { DSLOG_ERR("Compositor", "__eventLoop->run() fails."); @@ -22,7 +57,7 @@ bool DSCompositor::run() return true; } -bool DSCompositor::quit() +bool DSCompositorPrivate::quit() { if (!__eventLoop->quit()) { DSLOG_ERR("Compositor", "__eventLoop->quit() fails."); diff --git a/src/DSCompositor/DSCompositor.h b/src/DSCompositor/DSCompositor.h index b950aa7..5963cce 100644 --- a/src/DSCompositor/DSCompositor.h +++ b/src/DSCompositor/DSCompositor.h @@ -1,18 +1,22 @@ #ifndef __DS_COMPOSITOR_H__ #define __DS_COMPOSITOR_H__ -#include "DSEventLoop.h" -#include "DSOutput.h" -#include "DSInput.h" +#include +#include +#include +#include #include namespace display_server { -class DSCompositor +class DSCompositorPrivate; + +class DSCompositor : public DSObject { +DS_PIMPL_USE_PRIVATE(DSCompositor); public: - DSCompositor(); + explicit DSCompositor(); virtual ~DSCompositor(); bool run(); @@ -20,15 +24,10 @@ public: protected: virtual void _onPrepareCanvas() = 0; - virtual void _onOutputAdded(std::shared_ptr output) = 0; virtual void _onOutputRemoved(std::shared_ptr output) = 0; virtual void _onInputAdded(std::shared_ptr input) = 0; virtual void _onInputRemoved(std::shared_ptr input) = 0; - -private: - std::unique_ptr __eventLoop; - }; } diff --git a/src/DSCompositor/DSCompositorPrivate.h b/src/DSCompositor/DSCompositorPrivate.h new file mode 100644 index 0000000..797b9cb --- /dev/null +++ b/src/DSCompositor/DSCompositorPrivate.h @@ -0,0 +1,30 @@ +#ifndef __DS_COMPOSITORPRIVATE_H__ +#define __DS_COMPOSITORPRIVATE_H__ + +#include "DSCompositor.h" +#include "DSEventLoop.h" +#include + +namespace display_server +{ + +class DSCompositorPrivate : public DSObjectPrivate +{ +DS_PIMPL_USE_PUBLIC(DSCompositor); +public: + DSCompositorPrivate() = delete; + DSCompositorPrivate(DSCompositor *p_ptr); + ~DSCompositorPrivate(); + + bool run(); + bool quit(); + +protected: + +private: + std::unique_ptr __eventLoop; +}; + +} + +#endif -- 2.7.4 From e316b81af93d5a51cb88b90861f2ad83ccaac81f Mon Sep 17 00:00:00 2001 From: SooChan Lim Date: Wed, 8 Jul 2020 18:32:19 +0900 Subject: [PATCH 03/16] DSCanvas: make the DSCanvasPrivate. use Pimpl pattern on DSCanvas Change-Id: I3b9811531ddf784f5f36b0c800540eca5bf41b99 --- src/DSCanvas/DSCanvas.cpp | 42 ++++++++++++++++++++++++++++++++++++------ src/DSCanvas/DSCanvas.h | 19 +++++++++++-------- src/DSCanvas/DSCanvasPrivate.h | 27 +++++++++++++++++++++++++++ 3 files changed, 74 insertions(+), 14 deletions(-) create mode 100644 src/DSCanvas/DSCanvasPrivate.h diff --git a/src/DSCanvas/DSCanvas.cpp b/src/DSCanvas/DSCanvas.cpp index f952083..bc9f066 100644 --- a/src/DSCanvas/DSCanvas.cpp +++ b/src/DSCanvas/DSCanvas.cpp @@ -1,12 +1,12 @@ #include "DSCanvas.h" +#include "DSCanvasPrivate.h" #include "DSDebugLog.h" namespace display_server { DSCanvas::DSCanvas() - : __policyArea(nullptr), - __displayArea(nullptr) + : DS_INIT_PRIVATE_PTR(DSCanvas) {} DSCanvas::~DSCanvas() @@ -14,8 +14,38 @@ DSCanvas::~DSCanvas() bool DSCanvas::attachPolicyArea(std::shared_ptr policyArea) { - if (policyArea) { - DSLOG_ERR("DSCanvas", "canvas has already policyArea(%p).", policyArea); + DS_GET_PRIV(DSCanvas); + + if (!priv->attachPolicyArea(policyArea)) + return false; + + return true; +} + +bool DSCanvas::attachDisplayArea(std::shared_ptr displayArea) +{ + DS_GET_PRIV(DSCanvas); + + if (!priv->attachDisplayArea(displayArea)) + return false; + + return true; +} + +DSCanvasPrivate::DSCanvasPrivate(DSCanvas *p_ptr) + : DSObjectPrivate(p_ptr), + __p_ptr(p_ptr), + __policyArea(nullptr), + __displayArea(nullptr) +{} + +DSCanvasPrivate::~DSCanvasPrivate() +{} + +bool DSCanvasPrivate::attachPolicyArea(std::shared_ptr policyArea) +{ + if (__policyArea) { + DSLOG_ERR("DSCanvasPrivate", "canvas has already policyArea(%p).", policyArea); return false; } @@ -24,10 +54,10 @@ bool DSCanvas::attachPolicyArea(std::shared_ptr policyArea) return true; } -bool DSCanvas::attachDisplayArea(std::shared_ptr displayArea) +bool DSCanvasPrivate::attachDisplayArea(std::shared_ptr displayArea) { if (__displayArea) { - DSLOG_ERR("DSCanvas", "canvas has already displayArea(%p).", __displayArea); + DSLOG_ERR("DSCanvasPrivate", "canvas has already displayArea(%p).", __displayArea); return false; } diff --git a/src/DSCanvas/DSCanvas.h b/src/DSCanvas/DSCanvas.h index 6e62fe2..1be8ead 100644 --- a/src/DSCanvas/DSCanvas.h +++ b/src/DSCanvas/DSCanvas.h @@ -1,25 +1,28 @@ -#ifndef _DSCANVAS_H_ -#define _DSCANVAS_H_ +#ifndef __DS_CANVAS_H__ +#define __DS_CANVAS_H__ +#include +#include #include #include #include namespace display_server { -class DSCanvas + +class DSCanvasPrivate; + +class DSCanvas : public DSObject { +DS_PIMPL_USE_PRIVATE(DSCanvas); public: - DSCanvas(); + explicit DSCanvas(); virtual ~DSCanvas(); bool attachPolicyArea(std::shared_ptr polcyArea); bool attachDisplayArea(std::shared_ptr displayArea); - -private: - std::shared_ptr __policyArea; - std::shared_ptr __displayArea; }; + } #endif \ No newline at end of file diff --git a/src/DSCanvas/DSCanvasPrivate.h b/src/DSCanvas/DSCanvasPrivate.h new file mode 100644 index 0000000..bded0a9 --- /dev/null +++ b/src/DSCanvas/DSCanvasPrivate.h @@ -0,0 +1,27 @@ +#ifndef __DS_CANVAS_PRIVATE_H__ +#define __DS_CANVAS_PRIVATE_H__ + +#include "DSCanvas.h" + +namespace display_server +{ + +class DSCanvasPrivate : public DSObjectPrivate +{ +DS_PIMPL_USE_PUBLIC(DSCanvas); +public: + DSCanvasPrivate() = delete; + DSCanvasPrivate(DSCanvas *p_ptr); + ~DSCanvasPrivate(); + + bool attachPolicyArea(std::shared_ptr polcyArea); + bool attachDisplayArea(std::shared_ptr displayArea); + +private: + std::shared_ptr __policyArea; + std::shared_ptr __displayArea; +}; + +} + +#endif \ No newline at end of file -- 2.7.4 From 6ef90dad8d4ae2eb5f16d82fb646facd92b08975 Mon Sep 17 00:00:00 2001 From: SooChan Lim Date: Thu, 9 Jul 2020 14:02:11 +0900 Subject: [PATCH 04/16] DSDisplayArea: make the DSDisplayAreaPrivate. use Pimpl pattern on DSDisplayArea Change-Id: I08da8fcbaa60fb917399c0bc653fbd9975c1934e --- src/DSDisplayArea/DSDisplayArea.cpp | 87 ++++++++++++++++++++++++++------ src/DSDisplayArea/DSDisplayArea.h | 21 ++++---- src/DSDisplayArea/DSDisplayAreaPrivate.h | 35 +++++++++++++ tests/DSCanvas-test.cpp | 22 +++++--- tests/DSDisplayArea-test.cpp | 1 - 5 files changed, 131 insertions(+), 35 deletions(-) create mode 100644 src/DSDisplayArea/DSDisplayAreaPrivate.h diff --git a/src/DSDisplayArea/DSDisplayArea.cpp b/src/DSDisplayArea/DSDisplayArea.cpp index 81b9035..52c4e0a 100644 --- a/src/DSDisplayArea/DSDisplayArea.cpp +++ b/src/DSDisplayArea/DSDisplayArea.cpp @@ -1,39 +1,88 @@ #include "DSDisplayArea.h" +#include "DSDisplayAreaPrivate.h" +#include "DSDebugLog.h" namespace display_server { -DSDisplayArea::DSDisplayArea() - : __output(nullptr), - __x(0), - __y(0), - __width(0), - __height(0) +DSDisplayArea::DSDisplayArea(std::shared_ptr output) + : _d_ptr(std::make_unique(this, output)) {} -DSDisplayArea::DSDisplayArea(std::shared_ptr output) - : __output(output), +DSDisplayArea::~DSDisplayArea() +{} + +bool DSDisplayArea::setPosition(int x, int y) +{ + DS_GET_PRIV(DSDisplayArea); + + if (!priv->setPosition(x, y)) + return false; + + return true; +} + +bool DSDisplayArea::setSize(int width, int height) +{ + DS_GET_PRIV(DSDisplayArea); + + if (!priv->setSize(width, height)) + return false; + + return true; +} + +int DSDisplayArea::getWidth() +{ + DS_GET_PRIV(DSDisplayArea); + + return priv->getWidth(); +} + +int DSDisplayArea::getHeight() +{ + DS_GET_PRIV(DSDisplayArea); + + return priv->getHeight(); +} + +std::shared_ptr DSDisplayArea::getOutput() +{ + DS_GET_PRIV(DSDisplayArea); + + return priv->getOutput(); +} + +DSDisplayAreaPrivate::DSDisplayAreaPrivate(DSDisplayArea *p_ptr, std::shared_ptr output) + : DSObjectPrivate(p_ptr), + __p_ptr(p_ptr), + __output(output), __x(0), __y(0), __width(0), __height(0) {} -DSDisplayArea::~DSDisplayArea() +DSDisplayAreaPrivate::~DSDisplayAreaPrivate() {} -bool DSDisplayArea::setPosition(int x, int y) +bool DSDisplayAreaPrivate::setPosition(int x, int y) { - // position to canvas. - return false; + __x = x; + __y = y; + + return true; } -bool DSDisplayArea::setSize(int width, int height) +bool DSDisplayAreaPrivate::setSize(int width, int height) { - return false; + __width = width; + __height = height; + + return true; } -int DSDisplayArea::getWidth() +int DSDisplayAreaPrivate::getWidth() { if (__output == nullptr) return -1; @@ -41,7 +90,7 @@ int DSDisplayArea::getWidth() return __width; } -int DSDisplayArea::getHeight() +int DSDisplayAreaPrivate::getHeight() { if (__output == nullptr) return -1; @@ -49,4 +98,10 @@ int DSDisplayArea::getHeight() return __height; } +std::shared_ptr DSDisplayAreaPrivate::getOutput() +{ + return __output; +} + + } // namespace display_server diff --git a/src/DSDisplayArea/DSDisplayArea.h b/src/DSDisplayArea/DSDisplayArea.h index 87fea02..6c1f1bf 100644 --- a/src/DSDisplayArea/DSDisplayArea.h +++ b/src/DSDisplayArea/DSDisplayArea.h @@ -1,28 +1,27 @@ -#ifndef _DSDISPLAYAREA_H_ -#define _DSDISPLAYAREA_H_ +#ifndef __DS_DISPLAY_AREA_H__ +#define __DS_DISPLAY_AREA_H__ +#include +#include #include #include namespace display_server { -class DSDisplayArea -{ +class DSDisplayAreaPrivate; +class DSDisplayArea : public DSObject +{ +DS_PIMPL_USE_PRIVATE(DSDisplayArea); public: - DSDisplayArea(); - DSDisplayArea(std::shared_ptr output); + explicit DSDisplayArea(std::shared_ptr output); virtual ~DSDisplayArea(); bool setPosition(int x, int y); bool setSize(int width, int height); int getWidth(); int getHeight(); - -private: - std::shared_ptr __output; - int __x, __y; - int __width, __height; + std::shared_ptr getOutput(); }; } diff --git a/src/DSDisplayArea/DSDisplayAreaPrivate.h b/src/DSDisplayArea/DSDisplayAreaPrivate.h new file mode 100644 index 0000000..761c03b --- /dev/null +++ b/src/DSDisplayArea/DSDisplayAreaPrivate.h @@ -0,0 +1,35 @@ +#ifndef __DS_DISPLAY_AREA_PRIVATE_H__ +#define __DS_DISPLAY_AREA_PRIVATE_H__ + +#include "DSDisplayArea.h" +#include +#include + +namespace display_server +{ + +class DSDisplayAreaPrivate : public DSObjectPrivate +{ +DS_PIMPL_USE_PUBLIC(DSDisplayArea); +public: + DSDisplayAreaPrivate() = delete; + DSDisplayAreaPrivate(DSDisplayArea *p_ptr, std::shared_ptr output); + virtual ~DSDisplayAreaPrivate(); + + bool setPosition(int x, int y); + bool setSize(int width, int height); + int getWidth(); + int getHeight(); + + bool setOutput(std::shared_ptr output); + std::shared_ptr getOutput(); + +private: + std::shared_ptr __output; + int __x, __y; + int __width, __height; +}; + +} + +#endif \ No newline at end of file diff --git a/tests/DSCanvas-test.cpp b/tests/DSCanvas-test.cpp index a0946d0..3850ba5 100644 --- a/tests/DSCanvas-test.cpp +++ b/tests/DSCanvas-test.cpp @@ -18,14 +18,22 @@ TEST_F(DSCanvasTest, NewDSCanvas) EXPECT_TRUE(canvas != nullptr); } -TEST_F(DSCanvasTest, BasicMethods) +TEST_F(DSCanvasTest, attachPolicyArea) { - DSCanvas canvas; + std::unique_ptr canvas = std::make_unique(); + EXPECT_TRUE(canvas != nullptr); auto policyArea = std::make_shared(); EXPECT_TRUE(policyArea != nullptr); - auto displayArea = std::make_shared(); - EXPECT_TRUE(displayArea != nullptr); + EXPECT_TRUE(canvas->attachPolicyArea(policyArea) == true); +} - EXPECT_TRUE(canvas.attachPolicyArea(policyArea) == true); - EXPECT_TRUE(canvas.attachDisplayArea(displayArea) == true); -} \ No newline at end of file +TEST_F(DSCanvasTest, displayArea_Negetive1) +{ + std::unique_ptr canvas = std::make_unique(); + EXPECT_TRUE(canvas != nullptr); + auto output = std::make_shared(); + EXPECT_TRUE(output != nullptr); + 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 8794aa0..1361d83 100644 --- a/tests/DSDisplayArea-test.cpp +++ b/tests/DSDisplayArea-test.cpp @@ -1,6 +1,5 @@ #include "libds-tests.h" #include "DSDisplayArea.h" -#include "DSDisplayDeviceOutputTDMImpl.h" using namespace display_server; -- 2.7.4 From 532142be1d836de3c1cbe47e82d582b6dc396297 Mon Sep 17 00:00:00 2001 From: SooChan Lim Date: Thu, 9 Jul 2020 15:34:40 +0900 Subject: [PATCH 05/16] DSPolicyAread: make the DSPolicyAreadPrivate. use Pimpl pattern on DSPolicyArea Change-Id: I02f5fb371bd5b33f116eb888732d6081dc1c0b9a --- src/DSPolicyArea/DSPolicyArea.cpp | 65 +++++++++++++++++++++++++++++----- src/DSPolicyArea/DSPolicyArea.h | 19 +++++----- src/DSPolicyArea/DSPolicyAreaPrivate.h | 29 +++++++++++++++ 3 files changed, 97 insertions(+), 16 deletions(-) create mode 100644 src/DSPolicyArea/DSPolicyAreaPrivate.h diff --git a/src/DSPolicyArea/DSPolicyArea.cpp b/src/DSPolicyArea/DSPolicyArea.cpp index 18b3138..1fdedbb 100644 --- a/src/DSPolicyArea/DSPolicyArea.cpp +++ b/src/DSPolicyArea/DSPolicyArea.cpp @@ -1,13 +1,11 @@ #include "DSPolicyArea.h" +#include "DSPolicyAreaPrivate.h" namespace display_server { + DSPolicyArea::DSPolicyArea() - : __x(0), - __y(0), - __width(0), - __height(0), - __seat(nullptr) + : DS_INIT_PRIVATE_PTR(DSPolicyArea) {} DSPolicyArea::~DSPolicyArea() @@ -15,17 +13,68 @@ DSPolicyArea::~DSPolicyArea() bool DSPolicyArea::setPosition(int x, int y) { - return false; + DS_GET_PRIV(DSPolicyArea); + + if (!priv->setPosition(x, y)) + return false; + + return true; } bool DSPolicyArea::setSize(int width, int height) { - return false; + DS_GET_PRIV(DSPolicyArea); + + if (!priv->setSize(width, height)) + return false; + + return true; } bool DSPolicyArea::attachSeat(std::shared_ptr seat) { - return false; + DS_GET_PRIV(DSPolicyArea); + + if (!priv->attachSeat(seat)) + return false; + + return true; +} + +DSPolicyAreaPrivate::DSPolicyAreaPrivate(DSPolicyArea *p_ptr) + : DSObjectPrivate(p_ptr), + __p_ptr(p_ptr), + __x(0), + __y(0), + __width(0), + __height(0), + __seat(nullptr) +{} + +DSPolicyAreaPrivate::~DSPolicyAreaPrivate() +{} + +bool DSPolicyAreaPrivate::setPosition(int x, int y) +{ + __x = x; + __y = y; + + return true; +} + +bool DSPolicyAreaPrivate::setSize(int width, int height) +{ + __width = width; + __height = height; + + return true; +} + +bool DSPolicyAreaPrivate::attachSeat(std::shared_ptr seat) +{ + __seat = seat; + + return true; } } // namespace display_server \ No newline at end of file diff --git a/src/DSPolicyArea/DSPolicyArea.h b/src/DSPolicyArea/DSPolicyArea.h index bffa273..bb0a91b 100644 --- a/src/DSPolicyArea/DSPolicyArea.h +++ b/src/DSPolicyArea/DSPolicyArea.h @@ -1,12 +1,19 @@ -#ifndef _DSPOLICYAREA_H_ -#define _DSPOLICYAREA_H_ +#ifndef __DS_POLICY_AREA_H__ +#define __DS_POLICY_AREA_H__ +#include +#include #include +#include namespace display_server { -class DSPolicyArea + +class DSPolicyAreaPrivate; + +class DSPolicyArea : public DSObject { +DS_PIMPL_USE_PRIVATE(DSPolicyArea); public: DSPolicyArea(); virtual ~DSPolicyArea(); @@ -14,12 +21,8 @@ public: bool setPosition(int x, int y); bool setSize(int width, int height); bool attachSeat(std::shared_ptr seat); - -private: - int __x, __y; - int __width, __height; - std::shared_ptr __seat; }; + } #endif \ No newline at end of file diff --git a/src/DSPolicyArea/DSPolicyAreaPrivate.h b/src/DSPolicyArea/DSPolicyAreaPrivate.h new file mode 100644 index 0000000..dc0077c --- /dev/null +++ b/src/DSPolicyArea/DSPolicyAreaPrivate.h @@ -0,0 +1,29 @@ +#ifndef __DS_POLICY_AREA_PRIVATE_H__ +#define __DS_POLICY_AREA_PRIVATE_H__ + +#include "DSPolicyArea.h" + +namespace display_server +{ + +class DSPolicyAreaPrivate : public DSObjectPrivate +{ +DS_PIMPL_USE_PUBLIC(DSPolicyArea); +public: + DSPolicyAreaPrivate() = delete; + DSPolicyAreaPrivate(DSPolicyArea *p_ptr); + virtual ~DSPolicyAreaPrivate(); + + bool setPosition(int x, int y); + bool setSize(int width, int height); + bool attachSeat(std::shared_ptr seat); + +private: + int __x, __y; + int __width, __height; + std::shared_ptr __seat; +}; + +} + +#endif \ No newline at end of file -- 2.7.4 From 5386777db17fb5cae23d590784931ce4aa15e4d6 Mon Sep 17 00:00:00 2001 From: SooChan Lim Date: Thu, 9 Jul 2020 20:38:35 +0900 Subject: [PATCH 06/16] DSOutput: change the DSOutput into IDSOutput make the DSOutput be the interface for hiding the internal information like IDSDisplayDeviceOutput interface. Change-Id: I48f28eea03e3179e6bb221401c901c7c3f7d77d8 --- samples/exampleCompositor.cpp | 10 ++--- src/DSCompositor/DSCompositor.h | 6 +-- src/DSDisplayArea/DSDisplayArea.cpp | 8 ++-- src/DSDisplayArea/DSDisplayArea.h | 6 +-- src/DSDisplayArea/DSDisplayAreaPrivate.h | 10 ++--- src/DSOutput/DSOutput.cpp | 28 -------------- src/DSOutput/DSOutput.h | 26 ------------- src/DSOutput/DSOutputImpl.cpp | 64 ++++++++++++++++++++++++++++++++ src/DSOutput/DSOutputImpl.h | 30 +++++++++++++++ src/DSOutput/IDSOutput.h | 21 +++++++++++ src/meson.build | 2 +- tests/DSCanvas-test.cpp | 8 +++- tests/DSCompositor-test.cpp | 4 +- tests/DSDisplayArea-test.cpp | 12 +++++- tests/DSOutput-test.cpp | 28 -------------- tests/DSOutputImpl-test.cpp | 36 ++++++++++++++++++ tests/meson.build | 2 +- 17 files changed, 192 insertions(+), 109 deletions(-) delete mode 100644 src/DSOutput/DSOutput.cpp delete mode 100644 src/DSOutput/DSOutput.h create mode 100644 src/DSOutput/DSOutputImpl.cpp create mode 100644 src/DSOutput/DSOutputImpl.h create mode 100644 src/DSOutput/IDSOutput.h delete mode 100644 tests/DSOutput-test.cpp create mode 100644 tests/DSOutputImpl-test.cpp diff --git a/samples/exampleCompositor.cpp b/samples/exampleCompositor.cpp index a53ea35..6fd2a2e 100644 --- a/samples/exampleCompositor.cpp +++ b/samples/exampleCompositor.cpp @@ -1,5 +1,5 @@ #include -#include +#include #include #include #include @@ -35,8 +35,8 @@ using namespace display_server; // DSCompositor listen signals. OutputAdd/Remove/ResolutionSet and InputAdd/Remove. // compositor->connectSignal(DSOuptut::ADD_SIGNAL, DSCompositor::OutputAdd); -// compositor->connectSignal(DSOutput::REMOVE_SIGNAL, DSCompositor::OutputRemove); -// compositor->connectSignal(DSOutput::RESOLUTION_SET_SIGNAL, DSCompositor::OutputResolutionSet); +// compositor->connectSignal(IDSOutput::REMOVE_SIGNAL, DSCompositor::OutputRemove); +// compositor->connectSignal(IDSOutput::RESOLUTION_SET_SIGNAL, DSCompositor::OutputResolutionSet); // compositor->connectSignal(DSInput::ADD_SIGNAL, DSCompositor::InputAdd); // compositor->connectSignal(DSInput::REMOVE_SIGNAL, DSCompositor::InputRemove); @@ -69,7 +69,7 @@ public: __canvas->attachDisplayArea(__displayArea); } - void _onOutputAdded(std::shared_ptr output) override + void _onOutputAdded(std::shared_ptr output) override { // set the resolution. output->applyResolutionAuto(); @@ -80,7 +80,7 @@ public: __displayArea->setSize(output->getResolutionWidth(), output->getResolutionHeight()); } - void _onOutputRemoved(std::shared_ptr output) override + void _onOutputRemoved(std::shared_ptr output) override { __displayArea.reset(); // delete shared_ptr } diff --git a/src/DSCompositor/DSCompositor.h b/src/DSCompositor/DSCompositor.h index 5963cce..4d9ae43 100644 --- a/src/DSCompositor/DSCompositor.h +++ b/src/DSCompositor/DSCompositor.h @@ -3,7 +3,7 @@ #include #include -#include +#include #include #include @@ -24,8 +24,8 @@ public: protected: virtual void _onPrepareCanvas() = 0; - virtual void _onOutputAdded(std::shared_ptr output) = 0; - virtual void _onOutputRemoved(std::shared_ptr output) = 0; + virtual void _onOutputAdded(std::shared_ptr output) = 0; + virtual void _onOutputRemoved(std::shared_ptr output) = 0; virtual void _onInputAdded(std::shared_ptr input) = 0; virtual void _onInputRemoved(std::shared_ptr input) = 0; }; diff --git a/src/DSDisplayArea/DSDisplayArea.cpp b/src/DSDisplayArea/DSDisplayArea.cpp index 52c4e0a..32c931f 100644 --- a/src/DSDisplayArea/DSDisplayArea.cpp +++ b/src/DSDisplayArea/DSDisplayArea.cpp @@ -5,7 +5,7 @@ namespace display_server { -DSDisplayArea::DSDisplayArea(std::shared_ptr output) +DSDisplayArea::DSDisplayArea(std::shared_ptr output) : _d_ptr(std::make_unique(this, output)) {} @@ -46,14 +46,14 @@ int DSDisplayArea::getHeight() return priv->getHeight(); } -std::shared_ptr DSDisplayArea::getOutput() +std::shared_ptr DSDisplayArea::getOutput() { DS_GET_PRIV(DSDisplayArea); return priv->getOutput(); } -DSDisplayAreaPrivate::DSDisplayAreaPrivate(DSDisplayArea *p_ptr, std::shared_ptr output) +DSDisplayAreaPrivate::DSDisplayAreaPrivate(DSDisplayArea *p_ptr, std::shared_ptr output) : DSObjectPrivate(p_ptr), __p_ptr(p_ptr), __output(output), @@ -98,7 +98,7 @@ int DSDisplayAreaPrivate::getHeight() return __height; } -std::shared_ptr DSDisplayAreaPrivate::getOutput() +std::shared_ptr DSDisplayAreaPrivate::getOutput() { return __output; } diff --git a/src/DSDisplayArea/DSDisplayArea.h b/src/DSDisplayArea/DSDisplayArea.h index 6c1f1bf..84543c4 100644 --- a/src/DSDisplayArea/DSDisplayArea.h +++ b/src/DSDisplayArea/DSDisplayArea.h @@ -3,7 +3,7 @@ #include #include -#include +#include #include namespace display_server @@ -14,14 +14,14 @@ class DSDisplayArea : public DSObject { DS_PIMPL_USE_PRIVATE(DSDisplayArea); public: - explicit DSDisplayArea(std::shared_ptr output); + explicit DSDisplayArea(std::shared_ptr output); virtual ~DSDisplayArea(); bool setPosition(int x, int y); bool setSize(int width, int height); int getWidth(); int getHeight(); - std::shared_ptr getOutput(); + std::shared_ptr getOutput(); }; } diff --git a/src/DSDisplayArea/DSDisplayAreaPrivate.h b/src/DSDisplayArea/DSDisplayAreaPrivate.h index 761c03b..e397b2d 100644 --- a/src/DSDisplayArea/DSDisplayAreaPrivate.h +++ b/src/DSDisplayArea/DSDisplayAreaPrivate.h @@ -2,7 +2,7 @@ #define __DS_DISPLAY_AREA_PRIVATE_H__ #include "DSDisplayArea.h" -#include +#include #include namespace display_server @@ -13,7 +13,7 @@ class DSDisplayAreaPrivate : public DSObjectPrivate DS_PIMPL_USE_PUBLIC(DSDisplayArea); public: DSDisplayAreaPrivate() = delete; - DSDisplayAreaPrivate(DSDisplayArea *p_ptr, std::shared_ptr output); + DSDisplayAreaPrivate(DSDisplayArea *p_ptr, std::shared_ptr output); virtual ~DSDisplayAreaPrivate(); bool setPosition(int x, int y); @@ -21,11 +21,11 @@ public: int getWidth(); int getHeight(); - bool setOutput(std::shared_ptr output); - std::shared_ptr getOutput(); + bool setOutput(std::shared_ptr output); + std::shared_ptr getOutput(); private: - std::shared_ptr __output; + std::shared_ptr __output; int __x, __y; int __width, __height; }; diff --git a/src/DSOutput/DSOutput.cpp b/src/DSOutput/DSOutput.cpp deleted file mode 100644 index 095fc9c..0000000 --- a/src/DSOutput/DSOutput.cpp +++ /dev/null @@ -1,28 +0,0 @@ -#include "DSOutput.h" - -namespace display_server -{ -DSOutput::DSOutput() - : __resolutionWidth{0}, - __resolutionHeight{0} -{} - -DSOutput::~DSOutput() -{} - -int DSOutput::getResolutionWidth() -{ - return __resolutionWidth; -} - -int DSOutput::getResolutionHeight() -{ - return __resolutionHeight; -} - -bool DSOutput::applyResolutionAuto() -{ - return false; -} - -} // namespace display_server diff --git a/src/DSOutput/DSOutput.h b/src/DSOutput/DSOutput.h deleted file mode 100644 index 2587ca6..0000000 --- a/src/DSOutput/DSOutput.h +++ /dev/null @@ -1,26 +0,0 @@ -#ifndef _DSOUTPUT_H_ -#define _DSOUTPUT_H_ - -#include - -namespace display_server -{ - -class DSOutput -{ -public: - DSOutput(); - virtual ~DSOutput(); - - int getResolutionWidth(); - int getResolutionHeight(); - bool applyResolutionAuto(); - -private: - int __resolutionWidth; - int __resolutionHeight; -}; - -} - -#endif diff --git a/src/DSOutput/DSOutputImpl.cpp b/src/DSOutput/DSOutputImpl.cpp new file mode 100644 index 0000000..ac43483 --- /dev/null +++ b/src/DSOutput/DSOutputImpl.cpp @@ -0,0 +1,64 @@ +#include "DSOutputImpl.h" +#include "DSDebugLog.h" + +namespace display_server +{ + +DSOutputImpl::DSOutputImpl(std::shared_ptr displayDeviceOutput) + : __resolutionWidth{0}, + __resolutionHeight{0}, + __displayDeviceOutput{displayDeviceOutput} +{} + +DSOutputImpl::~DSOutputImpl() +{} + +int DSOutputImpl::getResolutionWidth() +{ + return __resolutionWidth; +} + +int DSOutputImpl::getResolutionHeight() +{ + return __resolutionHeight; +} + +bool DSOutputImpl::applyResolutionAuto() +{ + if (!__displayDeviceOutput) { + DSLOG_ERR("DSOutputImpl", "__displayDeviceOutput is null."); + return false; + } + + std::list> modes = __displayDeviceOutput->getAvailableModes(); + if (modes.empty()) { + DSLOG_ERR("DSOutputImpl", "modes are empty."); + return false; + } + + auto bestMode = modes.front(); + if (!bestMode) { + DSLOG_ERR("DSOutputImpl", "bestMode is null."); + return false; + } + + if (!__displayDeviceOutput->setMode(bestMode)) { + DSLOG_ERR("DSOutputImpl", "output->setMode(bestMode) fails."); + return false; + } + + return true; +} + +std::shared_ptr DSOutputImpl::getDisplayBufferQueue() +{ + std::shared_ptr displayDeviceHWC = __displayDeviceOutput->getHWC(); + if (!displayDeviceHWC) { + DSLOG_ERR("DSOutputImpl", "displayDeviceHWC is NULL."); + return nullptr; + } + + return displayDeviceHWC->getTargetBufferQueue(); +} + +} // namespace display_server diff --git a/src/DSOutput/DSOutputImpl.h b/src/DSOutput/DSOutputImpl.h new file mode 100644 index 0000000..a16c546 --- /dev/null +++ b/src/DSOutput/DSOutputImpl.h @@ -0,0 +1,30 @@ +#ifndef __I_DS_OUTPUT_IMPL_H__ +#define __I_DS_OUTPUT_IMPL_H__ + +#include "IDSOutput.h" +#include "IDSDisplayDeviceOutput.h" + +namespace display_server +{ + +class DSOutputImpl : public IDSOutput +{ +public: + DSOutputImpl(std::shared_ptr displayDeviceOutput); + ~DSOutputImpl(); + + int getResolutionWidth() override; + int getResolutionHeight() override; + bool applyResolutionAuto() override; + + std::shared_ptr getDisplayBufferQueue(); + +private: + int __resolutionWidth; + int __resolutionHeight; + std::shared_ptr __displayDeviceOutput; +}; + +} + +#endif \ No newline at end of file diff --git a/src/DSOutput/IDSOutput.h b/src/DSOutput/IDSOutput.h new file mode 100644 index 0000000..c3c8fc5 --- /dev/null +++ b/src/DSOutput/IDSOutput.h @@ -0,0 +1,21 @@ +#ifndef __I_DS_OUTPUT_H__ +#define __I_DS_OUTPUT_H__ + +#include + +namespace display_server +{ + +class IDSOutput +{ +public: + virtual ~IDSOutput() = default; + + virtual int getResolutionWidth() = 0; + virtual int getResolutionHeight() = 0; + virtual bool applyResolutionAuto() = 0; +}; + +} + +#endif \ No newline at end of file diff --git a/src/meson.build b/src/meson.build index 7b24fbd..c1063be 100644 --- a/src/meson.build +++ b/src/meson.build @@ -24,7 +24,7 @@ libds_srcs = [ 'DSObject/DSObject.h', 'DSObject/DSObjectPrivate.cpp', 'DSObject/DSObjectPrivate.h', - 'DSOutput/DSOutput.cpp', + 'DSOutput/DSOutputImpl.cpp', 'DSPolicyArea/DSPolicyArea.cpp', 'DSProperty/DSProperty.cpp', 'DSProperty/DSProperty.h', diff --git a/tests/DSCanvas-test.cpp b/tests/DSCanvas-test.cpp index 3850ba5..5256163 100644 --- a/tests/DSCanvas-test.cpp +++ b/tests/DSCanvas-test.cpp @@ -1,5 +1,9 @@ #include "libds-tests.h" #include "DSCanvas.h" +#include "IDSOutput.h" +#include "DSOutputImpl.h" +#include "IDSDisplayDeviceOutput.h" +#include "DSDisplayDeviceOutputTDMImpl.h" using namespace display_server; @@ -31,7 +35,9 @@ TEST_F(DSCanvasTest, displayArea_Negetive1) { std::unique_ptr canvas = std::make_unique(); EXPECT_TRUE(canvas != nullptr); - auto output = std::make_shared(); + 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); diff --git a/tests/DSCompositor-test.cpp b/tests/DSCompositor-test.cpp index 8404f23..15bf9fc 100644 --- a/tests/DSCompositor-test.cpp +++ b/tests/DSCompositor-test.cpp @@ -27,10 +27,10 @@ public: void _onPrepareCanvas() override {} - void _onOutputAdded(std::shared_ptr output) override + void _onOutputAdded(std::shared_ptr output) override {} - void _onOutputRemoved(std::shared_ptr output) override + void _onOutputRemoved(std::shared_ptr output) override {} void _onInputAdded(std::shared_ptr input) override diff --git a/tests/DSDisplayArea-test.cpp b/tests/DSDisplayArea-test.cpp index 1361d83..2cbc48c 100644 --- a/tests/DSDisplayArea-test.cpp +++ b/tests/DSDisplayArea-test.cpp @@ -1,5 +1,9 @@ #include "libds-tests.h" #include "DSDisplayArea.h" +#include "IDSOutput.h" +#include "DSOutputImpl.h" +#include "IDSDisplayDeviceOutput.h" +#include "DSDisplayDeviceOutputTDMImpl.h" using namespace display_server; @@ -19,7 +23,9 @@ public: TEST_F(DSDisplayAreaTest, NewDSDisplayArea) { - auto output = std::make_shared(); + 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); @@ -28,7 +34,9 @@ TEST_F(DSDisplayAreaTest, NewDSDisplayArea) TEST_F(DSDisplayAreaTest, BasicMethods) { - auto output = std::make_shared(); + 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); diff --git a/tests/DSOutput-test.cpp b/tests/DSOutput-test.cpp deleted file mode 100644 index 9ac5a15..0000000 --- a/tests/DSOutput-test.cpp +++ /dev/null @@ -1,28 +0,0 @@ -#include "libds-tests.h" -#include "DSOutput.h" - -using namespace display_server; - -class DSOutputTest : public ::testing::Test -{ -public: - void SetUp(void) override - {} - void TearDown(void) override - {} -}; - -TEST_F(DSOutputTest, NewDSOutput) -{ - std::shared_ptr output = std::make_shared(); - EXPECT_TRUE(output != nullptr); -} - -TEST_F(DSOutputTest, BasicMethods) -{ - DSOutput output; - - EXPECT_TRUE(output.getResolutionWidth() != 0); - EXPECT_TRUE(output.getResolutionHeight() != 0); - EXPECT_TRUE(output.applyResolutionAuto() == true); -} diff --git a/tests/DSOutputImpl-test.cpp b/tests/DSOutputImpl-test.cpp new file mode 100644 index 0000000..6e49d3f --- /dev/null +++ b/tests/DSOutputImpl-test.cpp @@ -0,0 +1,36 @@ +#include "libds-tests.h" +#include "IDSOutput.h" +#include "DSOutputImpl.h" +#include "IDSDisplayDeviceOutput.h" +#include "DSDisplayDeviceOutputTDMImpl.h" + +using namespace display_server; + +class DSOutputTest : public ::testing::Test +{ +public: + void SetUp(void) override + {} + void TearDown(void) override + {} +}; + +TEST_F(DSOutputTest, NewDSOutput) +{ + auto displayDeviceOutput = std::make_shared(); + EXPECT_TRUE(displayDeviceOutput != nullptr); + auto output = std::make_shared(displayDeviceOutput); + EXPECT_TRUE(output != nullptr); +} + +TEST_F(DSOutputTest, BasicMethods) +{ + auto displayDeviceOutput = std::make_shared(); + EXPECT_TRUE(displayDeviceOutput != nullptr); + auto output = std::make_shared(displayDeviceOutput); + EXPECT_TRUE(output != nullptr); + + EXPECT_TRUE(output->getResolutionWidth() != 0); + EXPECT_TRUE(output->getResolutionHeight() != 0); + EXPECT_TRUE(output->applyResolutionAuto() == true); +} diff --git a/tests/meson.build b/tests/meson.build index a0991d3..08ee43a 100644 --- a/tests/meson.build +++ b/tests/meson.build @@ -6,7 +6,7 @@ libds_tests_srcs = [ 'DSRenderEngineEcoreEvasImpl-test.cpp', 'DSRenderEngineDaliImpl-test.cpp', 'DSCompositor-test.cpp', - 'DSOutput-test.cpp', + 'DSOutputImpl-test.cpp', 'DSInput-test.cpp', 'DSCanvas-test.cpp', 'DSSeat-test.cpp', -- 2.7.4 From 885eb56d1b94bdeb1e2812bece50a2e0d0c6fd64 Mon Sep 17 00:00:00 2001 From: SooChan Lim Date: Fri, 10 Jul 2020 07:16:54 +0900 Subject: [PATCH 07/16] remove DSHWC Change-Id: I4f0f04783d226269b331f2404862109d62581f0e --- src/DSHWC/README.md | 14 -------------- src/meson.build | 1 - 2 files changed, 15 deletions(-) delete mode 100644 src/DSHWC/README.md diff --git a/src/DSHWC/README.md b/src/DSHWC/README.md deleted file mode 100644 index 1009648..0000000 --- a/src/DSHWC/README.md +++ /dev/null @@ -1,14 +0,0 @@ -# DSHWC -HWCompositing. -HWC and HWCWindow - -## Requirements -### HWC - * Dislay하도록 요청한다. - * Force Full Compositing on/off. - * State pattern 사용해야하지 않을까? (의견) - * <<향후 추가 요망>> -### HWCWindow - * HWCWindow를 생성해야 한다. - * HWCWindow를 ref/unref - * <<향후 추가 요망>> diff --git a/src/meson.build b/src/meson.build index c1063be..8c5ef20 100644 --- a/src/meson.build +++ b/src/meson.build @@ -118,7 +118,6 @@ libds_include_dirs = include_directories( './DSDisplayArea', './DSDisplayDevice', './DSEventLoop', - './DSHWC', './DSInput', './DSObject', './DSOutput', -- 2.7.4 From a691a360e9cc99db5f77b6871ce6eb30eb9f1aed Mon Sep 17 00:00:00 2001 From: jeon Date: Thu, 9 Jul 2020 11:38:09 +0900 Subject: [PATCH 08/16] DSInput: control device add/remove events from libinput Change-Id: I62aeff2ca4a28699b59d2fb32555fe4ac799f191 --- src/DSInput/DSInput.cpp | 73 ++++++++++++++++++++++++++++++++++++++++++++ src/DSInput/DSInput.h | 10 ++++++ src/DSInput/DSInputPrivate.h | 10 +++++- src/DSInput/DSLibinput.cpp | 57 ++++++++++++++++++++++++++++++++-- src/DSInput/DSLibinput.h | 5 ++- 5 files changed, 150 insertions(+), 5 deletions(-) diff --git a/src/DSInput/DSInput.cpp b/src/DSInput/DSInput.cpp index 8fe740a..63838dd 100644 --- a/src/DSInput/DSInput.cpp +++ b/src/DSInput/DSInput.cpp @@ -12,17 +12,73 @@ DSInputPrivate::DSInputPrivate(DSInput * p_ptr) DSInputPrivate::~DSInputPrivate() { + if (__dsLibinput) delete __dsLibinput; +} + +void DSInputPrivate::Init() +{ + __dsLibinput = new DSLibinput(this); +} + +void DSInputPrivate::PostDeviceAddEvent(std::string seat, std::string name, std::string identifier, DSInput::DeviceClass devClass) +{ + DS_GET_PUB(DSInput); + + pub->deviceAdd(name, identifier, devClass, DSInput::NoneSubclass); +} + +void DSInputPrivate::PostDeviceRemoveEvent(std::string seat, std::string name, std::string identifier, DSInput::DeviceClass devClass) +{ + DS_GET_PUB(DSInput); + + pub->deviceRemove(name, identifier, devClass, DSInput::NoneSubclass); } DSInput::DSInput() : DS_INIT_PRIVATE_PTR(DSInput) { + DS_GET_PRIV(DSInput); + + priv->Init(); } DSInput::~DSInput() { } +void DSInput::deviceAdd(std::string name, std::string identifier, DSInput::DeviceClass devClass, DSInput::DeviceSubclass devSubclass) +{ + DSInputDevice *device = new DSInputDevice(name, identifier, devClass, devSubclass); + + for (auto dev : devList) + { + if (*dev == *device) + { + delete device; + return; + } + } + + devList.push_back(device); +} + +void DSInput::deviceRemove(std::string name, std::string identifier, DSInput::DeviceClass devClass, DSInput::DeviceSubclass devSubclass) +{ + DSInputDevice *device = new DSInputDevice(name, identifier, devClass, devSubclass); + + for (auto dev : devList) + { + if (*dev == *device) + { + devList.remove(dev); + delete dev; + break; + } + } + + delete device; +} + DSInputDevice::DSInputDevice() : __deviceName(""), __deviceIdentifier(""), @@ -43,6 +99,23 @@ DSInputDevice::~DSInputDevice() { } +void DSInputDevice::print() +{ + std::cout << "DeviceInfo: " << "name: " << getName() << ", identifier: " << getIdentifier() << ", class: " << getClass() << ", subclass: " << getSubclass() << std::endl; +} + +bool DSInputDevice::operator==(DSInputDevice& device) +{ + if ((getName().compare(device.getName()) == 0) && + (getIdentifier().compare(device.getIdentifier()) == 0) && + (getClass() == device.getClass())) + { + return true; + } + + return false; +} + std::string DSInputDevice::getName() const { return __deviceName; diff --git a/src/DSInput/DSInput.h b/src/DSInput/DSInput.h index fa63afb..1cde6bf 100644 --- a/src/DSInput/DSInput.h +++ b/src/DSInput/DSInput.h @@ -11,6 +11,7 @@ namespace display_server { class DSInputPrivate; +class DSInputDevice; class DSInput : public DSObject { @@ -28,6 +29,12 @@ public: public: DSInput(); ~DSInput() override; + + void deviceAdd(std::string name, std::string identifier, DSInput::DeviceClass devClass, DSInput::DeviceSubclass devSubclass); + void deviceRemove(std::string name, std::string identifier, DSInput::DeviceClass devClass, DSInput::DeviceSubclass devSubclass); + +private: + std::list devList; }; class DSInputDevice @@ -37,6 +44,9 @@ public: DSInputDevice(std::string name, std::string identifier, DSInput::DeviceClass devClass, DSInput::DeviceSubclass devSubclass); ~DSInputDevice(); + void print(); + bool operator==(DSInputDevice& device); + std::string getName() const; void setName(std::string name); diff --git a/src/DSInput/DSInputPrivate.h b/src/DSInput/DSInputPrivate.h index bfd7d16..8d566eb 100644 --- a/src/DSInput/DSInputPrivate.h +++ b/src/DSInput/DSInputPrivate.h @@ -2,10 +2,13 @@ #define _DSINPUTPRIVATE_H_ #include "DSInput.h" +#include "DSLibinput.h" namespace display_server { +class DSLibinput; + class DSInputPrivate : public DSObjectPrivate { DS_PIMPL_USE_PUBLIC(DSInput); @@ -14,8 +17,13 @@ public: DSInputPrivate(DSInput *p_ptr); ~DSInputPrivate() override; + void Init(); + + void PostDeviceAddEvent(std::string seat, std::string name, std::string identifier, DSInput::DeviceClass devClass); + void PostDeviceRemoveEvent(std::string seat, std::string name, std::string identifier, DSInput::DeviceClass devClass); + private: - /* data */ + DSLibinput *__dsLibinput; }; } diff --git a/src/DSInput/DSLibinput.cpp b/src/DSInput/DSLibinput.cpp index d67150e..e6c2683 100644 --- a/src/DSInput/DSLibinput.cpp +++ b/src/DSInput/DSLibinput.cpp @@ -11,8 +11,9 @@ const struct ::libinput_interface DSLibinput::__input_interface = { .close_restricted = DSLibinput::__handleCloseRestricted }; -DSLibinput::DSLibinput() +DSLibinput::DSLibinput(DSInputPrivate *p_ptr) { + inputPrivate = p_ptr; __udev = udev_new(); __libinput = libinput_udev_create_context(&__input_interface, this, __udev); @@ -24,6 +25,8 @@ DSLibinput::DSLibinput() __fd = libinput_get_fd(__libinput); __libinput_handler = ecore_main_fd_handler_add(__fd, ECORE_FD_READ, __handleEvents, this, NULL, NULL); + + this->__handleEvents(this, __libinput_handler); } DSLibinput::~DSLibinput() @@ -111,12 +114,60 @@ Eina_Bool DSLibinput::__handleEvents(void *data, Ecore_Fd_Handler *hdlr) void DSLibinput::__processDeviceAddEvent(struct ::libinput_event *event) { - ; + struct ::libinput *libinput; + struct ::libinput_seat *libinput_seat; + struct ::libinput_device *device; + std::string seatName, devName, identifier; + + libinput = libinput_event_get_context(event); + device = libinput_event_get_device(event); + libinput_seat = libinput_device_get_seat(device); + + seatName = libinput_seat_get_logical_name(libinput_seat); + devName = libinput_device_get_name(device); + identifier= (std::string)"/dev/input/" + (std::string)libinput_device_get_sysname(device); + + if (libinput_device_has_capability(device, LIBINPUT_DEVICE_CAP_KEYBOARD)) + { + inputPrivate->PostDeviceAddEvent(seatName, devName, identifier, DSInput::KeyboardClass); + } + else if (libinput_device_has_capability(device, LIBINPUT_DEVICE_CAP_POINTER)) + { + inputPrivate->PostDeviceAddEvent(seatName, devName, identifier, DSInput::PointerClass); + } + else if (libinput_device_has_capability(device, LIBINPUT_DEVICE_CAP_TOUCH)) + { + inputPrivate->PostDeviceAddEvent(seatName, devName, identifier, DSInput::TouchClass); + } } void DSLibinput::__processDeviceRemoveEvent(struct ::libinput_event *event) { - ; + struct ::libinput *libinput; + struct ::libinput_seat *libinput_seat; + struct ::libinput_device *device; + std::string seatName, devName, identifier; + + libinput = libinput_event_get_context(event); + device = libinput_event_get_device(event); + libinput_seat = libinput_device_get_seat(device); + + seatName = libinput_seat_get_logical_name(libinput_seat); + devName = libinput_device_get_name(device); + identifier= (std::string)"/dev/input/" + (std::string)libinput_device_get_sysname(device); + + if (libinput_device_has_capability(device, LIBINPUT_DEVICE_CAP_KEYBOARD)) + { + inputPrivate->PostDeviceRemoveEvent(seatName, devName, identifier, DSInput::KeyboardClass); + } + else if (libinput_device_has_capability(device, LIBINPUT_DEVICE_CAP_POINTER)) + { + inputPrivate->PostDeviceRemoveEvent(seatName, devName, identifier, DSInput::PointerClass); + } + else if (libinput_device_has_capability(device, LIBINPUT_DEVICE_CAP_TOUCH)) + { + inputPrivate->PostDeviceRemoveEvent(seatName, devName, identifier, DSInput::TouchClass); + } } void DSLibinput::__processKeyboardKeyEvent(struct ::libinput_event *event) diff --git a/src/DSInput/DSLibinput.h b/src/DSInput/DSLibinput.h index adcb43b..b934bd7 100644 --- a/src/DSInput/DSLibinput.h +++ b/src/DSInput/DSLibinput.h @@ -9,6 +9,7 @@ #include #include #include +#include "DSInputPrivate.h" namespace display_server { @@ -16,10 +17,12 @@ namespace display_server class DSLibinput { public: - DSLibinput(); + DSLibinput() = delete; + DSLibinput(DSInputPrivate *p_ptr); ~DSLibinput(); private: + DSInputPrivate *inputPrivate; struct ::libinput *__libinput; udev *__udev; int __fd; -- 2.7.4 From bd7d21657b89ee4ac2b795b3b0fba236d78ec1b3 Mon Sep 17 00:00:00 2001 From: "Junseok, Kim" Date: Wed, 8 Jul 2020 16:43:10 +0900 Subject: [PATCH 09/16] zxdg_shell_v6: Add ZxdgShellV6 skeleton class Change-Id: If899ec750b4ac6de84e504fff910680f23351761 --- src/DSWaylandServer/DSWaylandZxdgShellV6.cpp | 48 +++++++++++++++++++++++ src/DSWaylandServer/DSWaylandZxdgShellV6.h | 25 ++++++++++++ src/DSWaylandServer/DSWaylandZxdgShellV6Private.h | 34 ++++++++++++++++ src/meson.build | 3 ++ tests/DSWaylandZxdgShellV6-test.cpp | 21 ++++++++++ tests/meson.build | 1 + 6 files changed, 132 insertions(+) create mode 100644 src/DSWaylandServer/DSWaylandZxdgShellV6.cpp create mode 100644 src/DSWaylandServer/DSWaylandZxdgShellV6.h create mode 100644 src/DSWaylandServer/DSWaylandZxdgShellV6Private.h create mode 100644 tests/DSWaylandZxdgShellV6-test.cpp diff --git a/src/DSWaylandServer/DSWaylandZxdgShellV6.cpp b/src/DSWaylandServer/DSWaylandZxdgShellV6.cpp new file mode 100644 index 0000000..3c2333c --- /dev/null +++ b/src/DSWaylandServer/DSWaylandZxdgShellV6.cpp @@ -0,0 +1,48 @@ +#include "DSWaylandZxdgShellV6.h" +#include "DSWaylandZxdgShellV6Private.h" + + +namespace display_server +{ + +DSWaylandZxdgShellV6::DSWaylandZxdgShellV6() + : DSObject(), DS_INIT_PRIVATE_PTR(DSWaylandZxdgShellV6) +{ +} + +DSWaylandZxdgShellV6::~DSWaylandZxdgShellV6() +{ +} + + +DSWaylandZxdgShellV6Private::DSWaylandZxdgShellV6Private(DSWaylandZxdgShellV6 *p_ptr) + : DSObjectPrivate(p_ptr), __p_ptr(p_ptr) +{ +} + +DSWaylandZxdgShellV6Private::~DSWaylandZxdgShellV6Private() +{ +} + +void DSWaylandZxdgShellV6Private::zxdg_shell_v6_bind_resource(zxdg_shell_v6::Resource *resource) +{ +} +void DSWaylandZxdgShellV6Private::zxdg_shell_v6_destroy_resource(zxdg_shell_v6::Resource *resource) +{ +} + +void DSWaylandZxdgShellV6Private::zxdg_shell_v6_destroy(zxdg_shell_v6::Resource *resource) +{ +} +void DSWaylandZxdgShellV6Private::zxdg_shell_v6_create_positioner(zxdg_shell_v6::Resource *resource, uint32_t id) +{ +} +void DSWaylandZxdgShellV6Private::zxdg_shell_v6_get_xdg_surface(zxdg_shell_v6::Resource *resource, uint32_t id, struct ::wl_resource *surface) +{ +} +void DSWaylandZxdgShellV6Private::zxdg_shell_v6_pong(zxdg_shell_v6::Resource *resource, uint32_t serial) +{ +} + +} // namespace display_server + diff --git a/src/DSWaylandServer/DSWaylandZxdgShellV6.h b/src/DSWaylandServer/DSWaylandZxdgShellV6.h new file mode 100644 index 0000000..903dbf7 --- /dev/null +++ b/src/DSWaylandServer/DSWaylandZxdgShellV6.h @@ -0,0 +1,25 @@ +#ifndef __DS_WAYLAND_ZXDG_SHELL_V6_H__ +#define __DS_WAYLAND_ZXDG_SHELL_V6_H__ + +#include "DSCore.h" +#include + +namespace display_server +{ + +class DSWaylandZxdgShellV6Private; + +class DSWaylandZxdgShellV6 : public DSObject +{ +DS_PIMPL_USE_PRIVATE(DSWaylandZxdgShellV6); + +public: + DSWaylandZxdgShellV6(); + virtual ~DSWaylandZxdgShellV6(); + +}; + +} + +#endif // __DS_WAYLAND_ZXDG_SHELL_V6_H__ + diff --git a/src/DSWaylandServer/DSWaylandZxdgShellV6Private.h b/src/DSWaylandServer/DSWaylandZxdgShellV6Private.h new file mode 100644 index 0000000..6a773d5 --- /dev/null +++ b/src/DSWaylandServer/DSWaylandZxdgShellV6Private.h @@ -0,0 +1,34 @@ +#ifndef __DS_WAYLAND_ZXDG_SHELL_V6_PRIVATE_H__ +#define __DS_WAYLAND_ZXDG_SHELL_V6_PRIVATE_H__ + +#include "dswayland-server-xdg-shell-unstable-v6.h" +#include "DSWaylandZxdgShellV6.h" + +namespace display_server +{ + +class DSWaylandZxdgShellV6Private : public DSObjectPrivate, public DSWaylandServer::zxdg_shell_v6 +{ +DS_PIMPL_USE_PUBLIC(DSWaylandZxdgShellV6); + +public: + DSWaylandZxdgShellV6Private() = delete; + DSWaylandZxdgShellV6Private(DSWaylandZxdgShellV6 *p_ptr); + ~DSWaylandZxdgShellV6Private() override; + +protected: + void zxdg_shell_v6_bind_resource(Resource *resource) override; + void zxdg_shell_v6_destroy_resource(Resource *resource) override; + + void zxdg_shell_v6_destroy(Resource *resource) override; + void zxdg_shell_v6_create_positioner(Resource *resource, uint32_t id) override; + void zxdg_shell_v6_get_xdg_surface(Resource *resource, uint32_t id, struct ::wl_resource *surface) override; + void zxdg_shell_v6_pong(Resource *resource, uint32_t serial) override; + +private: +}; + +} + +#endif // __DS_WAYLAND_ZXDG_SHELL_V6_PRIVATE_H__ + diff --git a/src/meson.build b/src/meson.build index 8c5ef20..6e0262d 100644 --- a/src/meson.build +++ b/src/meson.build @@ -77,6 +77,9 @@ libds_wayland_srcs = [ 'DSWaylandServer/DSWaylandTizenInputDeviceManager.cpp', 'DSWaylandServer/DSWaylandTizenInputDeviceManager.h', 'DSWaylandServer/DSWaylandTizenInputDeviceManagerPrivate.h', + 'DSWaylandServer/DSWaylandZxdgShellV6.cpp', + 'DSWaylandServer/DSWaylandZxdgShellV6.h', + 'DSWaylandServer/DSWaylandZxdgShellV6Private.h', ] libds_srcs += libds_wayland_srcs diff --git a/tests/DSWaylandZxdgShellV6-test.cpp b/tests/DSWaylandZxdgShellV6-test.cpp new file mode 100644 index 0000000..0108f15 --- /dev/null +++ b/tests/DSWaylandZxdgShellV6-test.cpp @@ -0,0 +1,21 @@ +#include "libds-tests.h" +#include "DSWaylandZxdgShellV6.h" + +using namespace display_server; + +class DSWaylandZxdgShellV6Test : public ::testing::Test +{ +public: + void SetUp(void) override + {} + void TearDown(void) override + {} +}; + +TEST_F(DSWaylandZxdgShellV6Test, NewDSWaylandZxdgShellV6) +{ + DSWaylandZxdgShellV6 *zxdgShell = new DSWaylandZxdgShellV6; + delete zxdgShell; + EXPECT_TRUE(true); +} + diff --git a/tests/meson.build b/tests/meson.build index 08ee43a..e78fd70 100644 --- a/tests/meson.build +++ b/tests/meson.build @@ -20,6 +20,7 @@ libds_tests_srcs = [ 'DSWaylandSurface-test.cpp', 'DSWaylandTizenInputDeviceManager-test.cpp', 'DSWaylandTizenInputDevice-test.cpp', + 'DSWaylandZxdgShellV6-test.cpp', 'DSObject-test.cpp', 'DSEventLoop-test.cpp', ] -- 2.7.4 From a6e055b724c7c8d0e8855dd501413c7eaf57da74 Mon Sep 17 00:00:00 2001 From: "Junseok, Kim" Date: Wed, 8 Jul 2020 17:34:20 +0900 Subject: [PATCH 10/16] zxdg_positioner_v6: add ZxdgPositionerV6 skeleton class Change-Id: I1d9dbd0de323d16488b37a58f6af38f511581cee Signed-off-by: Junseok, Kim --- src/DSWaylandServer/DSWaylandZxdgPositionerV6.cpp | 57 ++++++++++++++++++++++ src/DSWaylandServer/DSWaylandZxdgPositionerV6.h | 25 ++++++++++ .../DSWaylandZxdgPositionerV6Private.h | 36 ++++++++++++++ src/meson.build | 3 ++ tests/DSWaylandZxdgPositionerV6-test.cpp | 21 ++++++++ tests/meson.build | 1 + 6 files changed, 143 insertions(+) create mode 100644 src/DSWaylandServer/DSWaylandZxdgPositionerV6.cpp create mode 100644 src/DSWaylandServer/DSWaylandZxdgPositionerV6.h create mode 100644 src/DSWaylandServer/DSWaylandZxdgPositionerV6Private.h create mode 100644 tests/DSWaylandZxdgPositionerV6-test.cpp diff --git a/src/DSWaylandServer/DSWaylandZxdgPositionerV6.cpp b/src/DSWaylandServer/DSWaylandZxdgPositionerV6.cpp new file mode 100644 index 0000000..f8db963 --- /dev/null +++ b/src/DSWaylandServer/DSWaylandZxdgPositionerV6.cpp @@ -0,0 +1,57 @@ +#include "DSWaylandZxdgPositionerV6.h" +#include "DSWaylandZxdgPositionerV6Private.h" + + +namespace display_server +{ + +DSWaylandZxdgPositionerV6::DSWaylandZxdgPositionerV6() + : DSObject(), DS_INIT_PRIVATE_PTR(DSWaylandZxdgPositionerV6) +{ +} + +DSWaylandZxdgPositionerV6::~DSWaylandZxdgPositionerV6() +{ +} + + +DSWaylandZxdgPositionerV6Private::DSWaylandZxdgPositionerV6Private(DSWaylandZxdgPositionerV6 *p_ptr) + : DSObjectPrivate(p_ptr), __p_ptr(p_ptr) +{ +} + +DSWaylandZxdgPositionerV6Private::~DSWaylandZxdgPositionerV6Private() +{ +} + +void DSWaylandZxdgPositionerV6Private::zxdg_positioner_v6_bind_resource(zxdg_positioner_v6::Resource *resource) +{ +} +void DSWaylandZxdgPositionerV6Private::zxdg_positioner_v6_destroy_resource(zxdg_positioner_v6::Resource *resource) +{ +} + +void DSWaylandZxdgPositionerV6Private::zxdg_positioner_v6_destroy(zxdg_positioner_v6::Resource *resource) +{ +} +void DSWaylandZxdgPositionerV6Private::zxdg_positioner_v6_set_size(zxdg_positioner_v6::Resource *resurce, int32_t width, int32_t height) +{ +} +void DSWaylandZxdgPositionerV6Private::zxdg_positioner_v6_set_anchor_rect(zxdg_positioner_v6::Resource *resource, int32_t x, int32_t y, int32_t width, int32_t height) +{ +} +void DSWaylandZxdgPositionerV6Private::zxdg_positioner_v6_set_anchor(zxdg_positioner_v6::Resource *resource, uint32_t anchor) +{ +} +void DSWaylandZxdgPositionerV6Private::zxdg_positioner_v6_set_gravity(zxdg_positioner_v6::Resource *resource, uint32_t gravity) +{ +} +void DSWaylandZxdgPositionerV6Private::zxdg_positioner_v6_set_constraint_adjustment(zxdg_positioner_v6::Resource *resource, uint32_t constraint_adjustment) +{ +} +void DSWaylandZxdgPositionerV6Private::zxdg_positioner_v6_set_offset(zxdg_positioner_v6::Resource *resource, int32_t x, int32_t y) +{ +} + +} // namespace display_server + diff --git a/src/DSWaylandServer/DSWaylandZxdgPositionerV6.h b/src/DSWaylandServer/DSWaylandZxdgPositionerV6.h new file mode 100644 index 0000000..420f78a --- /dev/null +++ b/src/DSWaylandServer/DSWaylandZxdgPositionerV6.h @@ -0,0 +1,25 @@ +#ifndef __DS_WAYLAND_ZXDG_POSITIONER_V6_H__ +#define __DS_WAYLAND_ZXDG_POSITIONER_V6_H__ + +#include "DSCore.h" +#include + +namespace display_server +{ + +class DSWaylandZxdgPositionerV6Private; + +class DSWaylandZxdgPositionerV6 : public DSObject +{ +DS_PIMPL_USE_PRIVATE(DSWaylandZxdgPositionerV6); + +public: + DSWaylandZxdgPositionerV6(); + virtual ~DSWaylandZxdgPositionerV6(); + +}; + +} + +#endif // __DS_WAYLAND_ZXDG_POSITIONER_V6_H__ + diff --git a/src/DSWaylandServer/DSWaylandZxdgPositionerV6Private.h b/src/DSWaylandServer/DSWaylandZxdgPositionerV6Private.h new file mode 100644 index 0000000..6af5219 --- /dev/null +++ b/src/DSWaylandServer/DSWaylandZxdgPositionerV6Private.h @@ -0,0 +1,36 @@ +#ifndef __DS_WAYLAND_ZXDG_POSITIONER_V6_PRIVATE_H__ +#define __DS_WAYLAND_ZXDG_POSITIONER_V6_PRIVATE_H__ + +#include "dswayland-server-xdg-shell-unstable-v6.h" +#include "DSWaylandZxdgPositionerV6.h" + +namespace display_server +{ + +class DSWaylandZxdgPositionerV6Private : public DSObjectPrivate, public DSWaylandServer::zxdg_positioner_v6 +{ +DS_PIMPL_USE_PUBLIC(DSWaylandZxdgPositionerV6); + +public: + DSWaylandZxdgPositionerV6Private() = delete; + DSWaylandZxdgPositionerV6Private(DSWaylandZxdgPositionerV6 *p_ptr); + ~DSWaylandZxdgPositionerV6Private() override; + +protected: + void zxdg_positioner_v6_bind_resource(zxdg_positioner_v6::Resource *resource) override; + void zxdg_positioner_v6_destroy_resource(zxdg_positioner_v6::Resource *resource) override; + + void zxdg_positioner_v6_destroy(zxdg_positioner_v6::Resource *resource) override; + void zxdg_positioner_v6_set_size(zxdg_positioner_v6::Resource *resource, int32_t width, int32_t height) override; + void zxdg_positioner_v6_set_anchor_rect(zxdg_positioner_v6::Resource *resource, int32_t x, int32_t y, int32_t width, int32_t height) override; + void zxdg_positioner_v6_set_anchor(zxdg_positioner_v6::Resource *resource, uint32_t anchor) override; + void zxdg_positioner_v6_set_gravity(zxdg_positioner_v6::Resource *resource, uint32_t gravity) override; + void zxdg_positioner_v6_set_constraint_adjustment(zxdg_positioner_v6::Resource *resource, uint32_t constraint_adjustment) override; + void zxdg_positioner_v6_set_offset(zxdg_positioner_v6::Resource *resource, int32_t x, int32_t y) override; + +}; + +} + +#endif // __DS_WAYLAND_ZXDG_POSITIONER_V6_PRIVATE_H__ + diff --git a/src/meson.build b/src/meson.build index 6e0262d..408cd08 100644 --- a/src/meson.build +++ b/src/meson.build @@ -80,6 +80,9 @@ libds_wayland_srcs = [ 'DSWaylandServer/DSWaylandZxdgShellV6.cpp', 'DSWaylandServer/DSWaylandZxdgShellV6.h', 'DSWaylandServer/DSWaylandZxdgShellV6Private.h', + 'DSWaylandServer/DSWaylandZxdgPositionerV6.cpp', + 'DSWaylandServer/DSWaylandZxdgPositionerV6.h', + 'DSWaylandServer/DSWaylandZxdgPositionerV6Private.h', ] libds_srcs += libds_wayland_srcs diff --git a/tests/DSWaylandZxdgPositionerV6-test.cpp b/tests/DSWaylandZxdgPositionerV6-test.cpp new file mode 100644 index 0000000..fa67f0c --- /dev/null +++ b/tests/DSWaylandZxdgPositionerV6-test.cpp @@ -0,0 +1,21 @@ +#include "libds-tests.h" +#include "DSWaylandZxdgPositionerV6.h" + +using namespace display_server; + +class DSWaylandZxdgPositionerV6Test : public ::testing::Test +{ +public: + void SetUp(void) override + {} + void TearDown(void) override + {} +}; + +TEST_F(DSWaylandZxdgPositionerV6Test, NewDSWaylandZxdgPositionerV6) +{ + DSWaylandZxdgPositionerV6 *zxdgPositioner = new DSWaylandZxdgPositionerV6; + delete zxdgPositioner; + EXPECT_TRUE(true); +} + diff --git a/tests/meson.build b/tests/meson.build index e78fd70..e0f61c4 100644 --- a/tests/meson.build +++ b/tests/meson.build @@ -21,6 +21,7 @@ libds_tests_srcs = [ 'DSWaylandTizenInputDeviceManager-test.cpp', 'DSWaylandTizenInputDevice-test.cpp', 'DSWaylandZxdgShellV6-test.cpp', + 'DSWaylandZxdgPositionerV6-test.cpp', 'DSObject-test.cpp', 'DSEventLoop-test.cpp', ] -- 2.7.4 From 5017428d663670b74c17f732ba7cd9194e256fab Mon Sep 17 00:00:00 2001 From: "Junseok, Kim" Date: Wed, 8 Jul 2020 17:55:04 +0900 Subject: [PATCH 11/16] zxdg_surface_v6: Add ZxdgSurfaceV6 skeleton class Change-Id: I1789a13f57667d957bd51ecb3865a29e8dba0ade Signed-off-by: Junseok, Kim --- src/DSWaylandServer/DSWaylandZxdgSurfaceV6.cpp | 51 ++++++++++++++++++++++ src/DSWaylandServer/DSWaylandZxdgSurfaceV6.h | 25 +++++++++++ .../DSWaylandZxdgSurfaceV6Private.h | 35 +++++++++++++++ src/meson.build | 3 ++ tests/DSWaylandZxdgSurfaceV6-test.cpp | 21 +++++++++ tests/meson.build | 1 + 6 files changed, 136 insertions(+) create mode 100644 src/DSWaylandServer/DSWaylandZxdgSurfaceV6.cpp create mode 100644 src/DSWaylandServer/DSWaylandZxdgSurfaceV6.h create mode 100644 src/DSWaylandServer/DSWaylandZxdgSurfaceV6Private.h create mode 100644 tests/DSWaylandZxdgSurfaceV6-test.cpp diff --git a/src/DSWaylandServer/DSWaylandZxdgSurfaceV6.cpp b/src/DSWaylandServer/DSWaylandZxdgSurfaceV6.cpp new file mode 100644 index 0000000..a9b7656 --- /dev/null +++ b/src/DSWaylandServer/DSWaylandZxdgSurfaceV6.cpp @@ -0,0 +1,51 @@ +#include "DSWaylandZxdgSurfaceV6.h" +#include "DSWaylandZxdgSurfaceV6Private.h" + + +namespace display_server +{ + +DSWaylandZxdgSurfaceV6::DSWaylandZxdgSurfaceV6() + : DSObject(), DS_INIT_PRIVATE_PTR(DSWaylandZxdgSurfaceV6) +{ +} + +DSWaylandZxdgSurfaceV6::~DSWaylandZxdgSurfaceV6() +{ +} + + +DSWaylandZxdgSurfaceV6Private::DSWaylandZxdgSurfaceV6Private(DSWaylandZxdgSurfaceV6 *p_ptr) + : DSObjectPrivate(p_ptr), __p_ptr(p_ptr) +{ +} + +DSWaylandZxdgSurfaceV6Private::~DSWaylandZxdgSurfaceV6Private() +{ +} + +void DSWaylandZxdgSurfaceV6Private::zxdg_surface_v6_bind_resource(zxdg_surface_v6::Resource *resource) +{ +} +void DSWaylandZxdgSurfaceV6Private::zxdg_surface_v6_destroy_resource(zxdg_surface_v6::Resource *resource) +{ +} + +void DSWaylandZxdgSurfaceV6Private::zxdg_surface_v6_destroy(zxdg_surface_v6::Resource *resource) +{ +} +void DSWaylandZxdgSurfaceV6Private::zxdg_surface_v6_get_toplevel(zxdg_surface_v6::Resource *resource, uint32_t id) +{ +} +void DSWaylandZxdgSurfaceV6Private::zxdg_surface_v6_get_popup(zxdg_surface_v6::Resource *resource, uint32_t id, struct ::wl_resource *parent, struct ::wl_resource *positioner) +{ +} +void DSWaylandZxdgSurfaceV6Private::zxdg_surface_v6_set_window_geometry(zxdg_surface_v6::Resource *resource, int32_t x, int32_t y, int32_t width, int32_t height) +{ +} +void DSWaylandZxdgSurfaceV6Private::zxdg_surface_v6_ack_configure(zxdg_surface_v6::Resource *resource, uint32_t serial) +{ +} + +} // namespace display_server + diff --git a/src/DSWaylandServer/DSWaylandZxdgSurfaceV6.h b/src/DSWaylandServer/DSWaylandZxdgSurfaceV6.h new file mode 100644 index 0000000..65eb9e4 --- /dev/null +++ b/src/DSWaylandServer/DSWaylandZxdgSurfaceV6.h @@ -0,0 +1,25 @@ +#ifndef __DS_WAYLAND_ZXDG_SURFACE_V6_H__ +#define __DS_WAYLAND_ZXDG_SURFACE_V6_H__ + +#include "DSCore.h" +#include + +namespace display_server +{ + +class DSWaylandZxdgSurfaceV6Private; + +class DSWaylandZxdgSurfaceV6 : public DSObject +{ +DS_PIMPL_USE_PRIVATE(DSWaylandZxdgSurfaceV6); + +public: + DSWaylandZxdgSurfaceV6(); + virtual ~DSWaylandZxdgSurfaceV6(); + +}; + +} + +#endif // __DS_WAYLAND_ZXDG_SURFACE_V6_H__ + diff --git a/src/DSWaylandServer/DSWaylandZxdgSurfaceV6Private.h b/src/DSWaylandServer/DSWaylandZxdgSurfaceV6Private.h new file mode 100644 index 0000000..d0f37ce --- /dev/null +++ b/src/DSWaylandServer/DSWaylandZxdgSurfaceV6Private.h @@ -0,0 +1,35 @@ +#ifndef __DS_WAYLAND_ZXDG_SURFACE_V6_PRIVATE_H__ +#define __DS_WAYLAND_ZXDG_SURFACE_V6_PRIVATE_H__ + +#include "dswayland-server-xdg-shell-unstable-v6.h" +#include "DSWaylandZxdgSurfaceV6.h" + +namespace display_server +{ + +class DSWaylandZxdgSurfaceV6Private : public DSObjectPrivate, public DSWaylandServer::zxdg_surface_v6 +{ +DS_PIMPL_USE_PUBLIC(DSWaylandZxdgSurfaceV6); + +public: + DSWaylandZxdgSurfaceV6Private() = delete; + DSWaylandZxdgSurfaceV6Private(DSWaylandZxdgSurfaceV6 *p_ptr); + ~DSWaylandZxdgSurfaceV6Private() override; + +protected: + void zxdg_surface_v6_bind_resource(zxdg_surface_v6::Resource *resource) override; + void zxdg_surface_v6_destroy_resource(zxdg_surface_v6::Resource *resource) override; + + void zxdg_surface_v6_destroy(zxdg_surface_v6::Resource *resource) override; + void zxdg_surface_v6_get_toplevel(zxdg_surface_v6::Resource *resource, uint32_t id) override; + void zxdg_surface_v6_get_popup(zxdg_surface_v6::Resource *resource, uint32_t id, struct ::wl_resource *parent, struct ::wl_resource *positioner) override; + void zxdg_surface_v6_set_window_geometry(zxdg_surface_v6::Resource *resource, int32_t x, int32_t y, int32_t width, int32_t height) override; + void zxdg_surface_v6_ack_configure(zxdg_surface_v6::Resource *resource, uint32_t serial) override; + +private: +}; + +} + +#endif // __DS_WAYLAND_ZXDG_SURFACE_V6_PRIVATE_H__ + diff --git a/src/meson.build b/src/meson.build index 408cd08..62f872c 100644 --- a/src/meson.build +++ b/src/meson.build @@ -83,6 +83,9 @@ libds_wayland_srcs = [ 'DSWaylandServer/DSWaylandZxdgPositionerV6.cpp', 'DSWaylandServer/DSWaylandZxdgPositionerV6.h', 'DSWaylandServer/DSWaylandZxdgPositionerV6Private.h', + 'DSWaylandServer/DSWaylandZxdgSurfaceV6.cpp', + 'DSWaylandServer/DSWaylandZxdgSurfaceV6.h', + 'DSWaylandServer/DSWaylandZxdgSurfaceV6Private.h', ] libds_srcs += libds_wayland_srcs diff --git a/tests/DSWaylandZxdgSurfaceV6-test.cpp b/tests/DSWaylandZxdgSurfaceV6-test.cpp new file mode 100644 index 0000000..025c66e --- /dev/null +++ b/tests/DSWaylandZxdgSurfaceV6-test.cpp @@ -0,0 +1,21 @@ +#include "libds-tests.h" +#include "DSWaylandZxdgSurfaceV6.h" + +using namespace display_server; + +class DSWaylandZxdgSurfaceV6Test : public ::testing::Test +{ +public: + void SetUp(void) override + {} + void TearDown(void) override + {} +}; + +TEST_F(DSWaylandZxdgSurfaceV6Test, NewDSWaylandZxdgSurfaceV6) +{ + DSWaylandZxdgSurfaceV6 *zxdgSurface = new DSWaylandZxdgSurfaceV6; + delete zxdgSurface; + EXPECT_TRUE(true); +} + diff --git a/tests/meson.build b/tests/meson.build index e0f61c4..0cd32c7 100644 --- a/tests/meson.build +++ b/tests/meson.build @@ -22,6 +22,7 @@ libds_tests_srcs = [ 'DSWaylandTizenInputDevice-test.cpp', 'DSWaylandZxdgShellV6-test.cpp', 'DSWaylandZxdgPositionerV6-test.cpp', + 'DSWaylandZxdgSurfaceV6-test.cpp', 'DSObject-test.cpp', 'DSEventLoop-test.cpp', ] -- 2.7.4 From dfc762c3ba93c1f50bb53804f61bc42740d48b48 Mon Sep 17 00:00:00 2001 From: "Junseok, Kim" Date: Wed, 8 Jul 2020 18:07:46 +0900 Subject: [PATCH 12/16] zxdg_toplevel_v6: Add ZxdgToplevelV6 skeleton class Change-Id: I9c5aed5dae03b9f0aaf51f763b945dbc2138d622 Signed-off-by: Junseok, Kim --- src/DSWaylandServer/DSWaylandZxdgToplevelV6.cpp | 78 ++++++++++++++++++++++ src/DSWaylandServer/DSWaylandZxdgToplevelV6.h | 24 +++++++ .../DSWaylandZxdgToplevelV6Private.h | 44 ++++++++++++ src/meson.build | 3 + tests/DSWaylandZxdgToplevelV6-test.cpp | 21 ++++++ tests/meson.build | 1 + 6 files changed, 171 insertions(+) create mode 100644 src/DSWaylandServer/DSWaylandZxdgToplevelV6.cpp create mode 100644 src/DSWaylandServer/DSWaylandZxdgToplevelV6.h create mode 100644 src/DSWaylandServer/DSWaylandZxdgToplevelV6Private.h create mode 100644 tests/DSWaylandZxdgToplevelV6-test.cpp diff --git a/src/DSWaylandServer/DSWaylandZxdgToplevelV6.cpp b/src/DSWaylandServer/DSWaylandZxdgToplevelV6.cpp new file mode 100644 index 0000000..6f231be --- /dev/null +++ b/src/DSWaylandServer/DSWaylandZxdgToplevelV6.cpp @@ -0,0 +1,78 @@ +#include "DSWaylandZxdgToplevelV6.h" +#include "DSWaylandZxdgToplevelV6Private.h" + + +namespace display_server +{ + +DSWaylandZxdgToplevelV6::DSWaylandZxdgToplevelV6() + : DSObject(), DS_INIT_PRIVATE_PTR(DSWaylandZxdgToplevelV6) +{ +} + +DSWaylandZxdgToplevelV6::~DSWaylandZxdgToplevelV6() +{ +} + + +DSWaylandZxdgToplevelV6Private::DSWaylandZxdgToplevelV6Private(DSWaylandZxdgToplevelV6 *p_ptr) + : DSObjectPrivate(p_ptr), __p_ptr(p_ptr) +{ +} + +DSWaylandZxdgToplevelV6Private::~DSWaylandZxdgToplevelV6Private() +{ +} + +void DSWaylandZxdgToplevelV6Private::zxdg_toplevel_v6_bind_resource(zxdg_toplevel_v6::Resource *resource) +{ +} +void DSWaylandZxdgToplevelV6Private::zxdg_toplevel_v6_destroy_resource(zxdg_toplevel_v6::Resource *resource) +{ +} + +void DSWaylandZxdgToplevelV6Private::zxdg_toplevel_v6_destroy(zxdg_toplevel_v6::Resource *resource) +{ +} +void DSWaylandZxdgToplevelV6Private::zxdg_toplevel_v6_set_parent(zxdg_toplevel_v6::Resource *resource, struct ::wl_resource *parent) +{ +} +void DSWaylandZxdgToplevelV6Private::zxdg_toplevel_v6_set_title(zxdg_toplevel_v6::Resource *resource, const std::string &title) +{ +} +void DSWaylandZxdgToplevelV6Private::zxdg_toplevel_v6_set_app_id(zxdg_toplevel_v6::Resource *resource, const std::string &app_id) +{ +} +void DSWaylandZxdgToplevelV6Private::zxdg_toplevel_v6_show_window_menu(zxdg_toplevel_v6::Resource *resource, struct ::wl_resource *seat, uint32_t serial, int32_t x, int32_t y) +{ +} +void DSWaylandZxdgToplevelV6Private::zxdg_toplevel_v6_move(zxdg_toplevel_v6::Resource *resource, struct ::wl_resource *seat, uint32_t serial) +{ +} +void DSWaylandZxdgToplevelV6Private::zxdg_toplevel_v6_resize(zxdg_toplevel_v6::Resource *resource, struct ::wl_resource *seat, uint32_t serial, uint32_t edges) +{ +} +void DSWaylandZxdgToplevelV6Private::zxdg_toplevel_v6_set_max_size(zxdg_toplevel_v6::Resource *resource, int32_t width, int32_t height) +{ +} +void DSWaylandZxdgToplevelV6Private::zxdg_toplevel_v6_set_min_size(zxdg_toplevel_v6::Resource *resource, int32_t width, int32_t height) +{ +} +void DSWaylandZxdgToplevelV6Private::zxdg_toplevel_v6_set_maximized(zxdg_toplevel_v6::Resource *resource) +{ +} +void DSWaylandZxdgToplevelV6Private::zxdg_toplevel_v6_unset_maximized(zxdg_toplevel_v6::Resource *resource) +{ +} +void DSWaylandZxdgToplevelV6Private::zxdg_toplevel_v6_set_fullscreen(zxdg_toplevel_v6::Resource *resource, struct ::wl_resource *output) +{ +} +void DSWaylandZxdgToplevelV6Private::zxdg_toplevel_v6_unset_fullscreen(zxdg_toplevel_v6::Resource *resource) +{ +} +void DSWaylandZxdgToplevelV6Private::zxdg_toplevel_v6_set_minimized(zxdg_toplevel_v6::Resource *resource) +{ +} + +} // namespace display_server + diff --git a/src/DSWaylandServer/DSWaylandZxdgToplevelV6.h b/src/DSWaylandServer/DSWaylandZxdgToplevelV6.h new file mode 100644 index 0000000..a315a13 --- /dev/null +++ b/src/DSWaylandServer/DSWaylandZxdgToplevelV6.h @@ -0,0 +1,24 @@ +#ifndef __DS_WAYLAND_ZXDG_TOPLEVEL_V6_H__ +#define __DS_WAYLAND_ZXDG_TOPLEVEL_V6_H__ + +#include "DSCore.h" +#include + +namespace display_server +{ + +class DSWaylandZxdgToplevelV6Private; + +class DSWaylandZxdgToplevelV6 : public DSObject +{ +DS_PIMPL_USE_PRIVATE(DSWaylandZxdgToplevelV6); + +public: + DSWaylandZxdgToplevelV6(); + virtual ~DSWaylandZxdgToplevelV6(); +}; + +} + +#endif // __DS_WAYLAND_ZXDG_TOPLEVEL_V6_H__ + diff --git a/src/DSWaylandServer/DSWaylandZxdgToplevelV6Private.h b/src/DSWaylandServer/DSWaylandZxdgToplevelV6Private.h new file mode 100644 index 0000000..bc5c6b9 --- /dev/null +++ b/src/DSWaylandServer/DSWaylandZxdgToplevelV6Private.h @@ -0,0 +1,44 @@ +#ifndef __DS_WAYLAND_ZXDG_SURFACE_V6_PRIVATE_H__ +#define __DS_WAYLAND_ZXDG_SURFACE_V6_PRIVATE_H__ + +#include "dswayland-server-xdg-shell-unstable-v6.h" +#include "DSWaylandZxdgToplevelV6.h" + +namespace display_server +{ + +class DSWaylandZxdgToplevelV6Private : public DSObjectPrivate, public DSWaylandServer::zxdg_toplevel_v6 +{ +DS_PIMPL_USE_PUBLIC(DSWaylandZxdgToplevelV6); + +public: + DSWaylandZxdgToplevelV6Private() = delete; + DSWaylandZxdgToplevelV6Private(DSWaylandZxdgToplevelV6 *p_ptr); + ~DSWaylandZxdgToplevelV6Private() override; + +protected: + void zxdg_toplevel_v6_bind_resource(zxdg_toplevel_v6::Resource *resource) override; + void zxdg_toplevel_v6_destroy_resource(zxdg_toplevel_v6::Resource *resource) override; + + void zxdg_toplevel_v6_destroy(zxdg_toplevel_v6::Resource *resource) override; + void zxdg_toplevel_v6_set_parent(zxdg_toplevel_v6::Resource *resource, struct ::wl_resource *parent) override; + void zxdg_toplevel_v6_set_title(zxdg_toplevel_v6::Resource *resource, const std::string &title) override; + void zxdg_toplevel_v6_set_app_id(zxdg_toplevel_v6::Resource *resource, const std::string &app_id) override; + void zxdg_toplevel_v6_show_window_menu(zxdg_toplevel_v6::Resource *resource, struct ::wl_resource *seat, uint32_t serial, int32_t x, int32_t y) override; + void zxdg_toplevel_v6_move(zxdg_toplevel_v6::Resource *resource, struct ::wl_resource *seat, uint32_t serial) override; + void zxdg_toplevel_v6_resize(zxdg_toplevel_v6::Resource *resource, struct ::wl_resource *seat, uint32_t serial, uint32_t edges) override; + void zxdg_toplevel_v6_set_max_size(zxdg_toplevel_v6::Resource *resource, int32_t width, int32_t height) override; + void zxdg_toplevel_v6_set_min_size(zxdg_toplevel_v6::Resource *resource, int32_t width, int32_t height) override; + void zxdg_toplevel_v6_set_maximized(zxdg_toplevel_v6::Resource *resource) override; + void zxdg_toplevel_v6_unset_maximized(zxdg_toplevel_v6::Resource *resource) override; + void zxdg_toplevel_v6_set_fullscreen(zxdg_toplevel_v6::Resource *resource, struct ::wl_resource *output) override; + void zxdg_toplevel_v6_unset_fullscreen(zxdg_toplevel_v6::Resource *resource) override; + void zxdg_toplevel_v6_set_minimized(zxdg_toplevel_v6::Resource *resource) override; + +private: +}; + +} + +#endif // __DS_WAYLAND_ZXDG_SURFACE_V6_PRIVATE_H__ + diff --git a/src/meson.build b/src/meson.build index 62f872c..276db99 100644 --- a/src/meson.build +++ b/src/meson.build @@ -86,6 +86,9 @@ libds_wayland_srcs = [ 'DSWaylandServer/DSWaylandZxdgSurfaceV6.cpp', 'DSWaylandServer/DSWaylandZxdgSurfaceV6.h', 'DSWaylandServer/DSWaylandZxdgSurfaceV6Private.h', + 'DSWaylandServer/DSWaylandZxdgToplevelV6.cpp', + 'DSWaylandServer/DSWaylandZxdgToplevelV6.h', + 'DSWaylandServer/DSWaylandZxdgToplevelV6Private.h', ] libds_srcs += libds_wayland_srcs diff --git a/tests/DSWaylandZxdgToplevelV6-test.cpp b/tests/DSWaylandZxdgToplevelV6-test.cpp new file mode 100644 index 0000000..589738f --- /dev/null +++ b/tests/DSWaylandZxdgToplevelV6-test.cpp @@ -0,0 +1,21 @@ +#include "libds-tests.h" +#include "DSWaylandZxdgToplevelV6.h" + +using namespace display_server; + +class DSWaylandZxdgToplevelV6Test : public ::testing::Test +{ +public: + void SetUp(void) override + {} + void TearDown(void) override + {} +}; + +TEST_F(DSWaylandZxdgToplevelV6Test, NewDSWaylandZxdgToplevelV6) +{ + DSWaylandZxdgToplevelV6 *zxdgToplevel = new DSWaylandZxdgToplevelV6; + delete zxdgToplevel; + EXPECT_TRUE(true); +} + diff --git a/tests/meson.build b/tests/meson.build index 0cd32c7..747067a 100644 --- a/tests/meson.build +++ b/tests/meson.build @@ -23,6 +23,7 @@ libds_tests_srcs = [ 'DSWaylandZxdgShellV6-test.cpp', 'DSWaylandZxdgPositionerV6-test.cpp', 'DSWaylandZxdgSurfaceV6-test.cpp', + 'DSWaylandZxdgToplevelV6-test.cpp', 'DSObject-test.cpp', 'DSEventLoop-test.cpp', ] -- 2.7.4 From 07e63dd3e630a00cc94a2586eab31b1424bebd71 Mon Sep 17 00:00:00 2001 From: "Junseok, Kim" Date: Wed, 8 Jul 2020 18:17:39 +0900 Subject: [PATCH 13/16] zxdg_popup_v6: Add ZxdgPopupV6 skeleton class Change-Id: I8199bffe18249fd838b5ce5e56b444da9972550d Signed-off-by: Junseok, Kim --- src/DSWaylandServer/DSWaylandZxdgPopupV6.cpp | 42 +++++++++++++++++++++++ src/DSWaylandServer/DSWaylandZxdgPopupV6.h | 24 +++++++++++++ src/DSWaylandServer/DSWaylandZxdgPopupV6Private.h | 32 +++++++++++++++++ src/meson.build | 3 ++ tests/DSWaylandZxdgPopupV6-test.cpp | 21 ++++++++++++ tests/meson.build | 1 + 6 files changed, 123 insertions(+) create mode 100644 src/DSWaylandServer/DSWaylandZxdgPopupV6.cpp create mode 100644 src/DSWaylandServer/DSWaylandZxdgPopupV6.h create mode 100644 src/DSWaylandServer/DSWaylandZxdgPopupV6Private.h create mode 100644 tests/DSWaylandZxdgPopupV6-test.cpp diff --git a/src/DSWaylandServer/DSWaylandZxdgPopupV6.cpp b/src/DSWaylandServer/DSWaylandZxdgPopupV6.cpp new file mode 100644 index 0000000..b6eed6d --- /dev/null +++ b/src/DSWaylandServer/DSWaylandZxdgPopupV6.cpp @@ -0,0 +1,42 @@ +#include "DSWaylandZxdgPopupV6.h" +#include "DSWaylandZxdgPopupV6Private.h" + + +namespace display_server +{ + +DSWaylandZxdgPopupV6::DSWaylandZxdgPopupV6() + : DSObject(), DS_INIT_PRIVATE_PTR(DSWaylandZxdgPopupV6) +{ +} + +DSWaylandZxdgPopupV6::~DSWaylandZxdgPopupV6() +{ +} + + +DSWaylandZxdgPopupV6Private::DSWaylandZxdgPopupV6Private(DSWaylandZxdgPopupV6 *p_ptr) + : DSObjectPrivate(p_ptr), __p_ptr(p_ptr) +{ +} + +DSWaylandZxdgPopupV6Private::~DSWaylandZxdgPopupV6Private() +{ +} + +void DSWaylandZxdgPopupV6Private::zxdg_popup_v6_bind_resource(zxdg_popup_v6::Resource *resource) +{ +} +void DSWaylandZxdgPopupV6Private::zxdg_popup_v6_destroy_resource(zxdg_popup_v6::Resource *resource) +{ +} + +void DSWaylandZxdgPopupV6Private::zxdg_popup_v6_destroy(zxdg_popup_v6::Resource *resource) +{ +} +void DSWaylandZxdgPopupV6Private::zxdg_popup_v6_grab(zxdg_popup_v6::Resource *resource, struct ::wl_resource *seat, uint32_t serial) +{ +} + +} // namespace display_server + diff --git a/src/DSWaylandServer/DSWaylandZxdgPopupV6.h b/src/DSWaylandServer/DSWaylandZxdgPopupV6.h new file mode 100644 index 0000000..874a7fe --- /dev/null +++ b/src/DSWaylandServer/DSWaylandZxdgPopupV6.h @@ -0,0 +1,24 @@ +#ifndef __DS_WAYLAND_ZXDG_POPUP_V6_H__ +#define __DS_WAYLAND_ZXDG_POPUP_V6_H__ + +#include "DSCore.h" +#include + +namespace display_server +{ + +class DSWaylandZxdgPopupV6Private; + +class DSWaylandZxdgPopupV6 : public DSObject +{ +DS_PIMPL_USE_PRIVATE(DSWaylandZxdgPopupV6); + +public: + DSWaylandZxdgPopupV6(); + virtual ~DSWaylandZxdgPopupV6(); +}; + +} + +#endif // __DS_WAYLAND_ZXDG_POPUP_V6_H__ + diff --git a/src/DSWaylandServer/DSWaylandZxdgPopupV6Private.h b/src/DSWaylandServer/DSWaylandZxdgPopupV6Private.h new file mode 100644 index 0000000..9dbdfca --- /dev/null +++ b/src/DSWaylandServer/DSWaylandZxdgPopupV6Private.h @@ -0,0 +1,32 @@ +#ifndef __DS_WAYLAND_ZXDG_POPUP_V6_PRIVATE_H__ +#define __DS_WAYLAND_ZXDG_POPUP_V6_PRIVATE_H__ + +#include "dswayland-server-xdg-shell-unstable-v6.h" +#include "DSWaylandZxdgPopupV6.h" + +namespace display_server +{ + +class DSWaylandZxdgPopupV6Private : public DSObjectPrivate, public DSWaylandServer::zxdg_popup_v6 +{ +DS_PIMPL_USE_PUBLIC(DSWaylandZxdgPopupV6); + +public: + DSWaylandZxdgPopupV6Private() = delete; + DSWaylandZxdgPopupV6Private(DSWaylandZxdgPopupV6 *p_ptr); + ~DSWaylandZxdgPopupV6Private() override; + +protected: + void zxdg_popup_v6_bind_resource(zxdg_popup_v6::Resource *resource) override; + void zxdg_popup_v6_destroy_resource(zxdg_popup_v6::Resource *resource) override; + + void zxdg_popup_v6_destroy(zxdg_popup_v6::Resource *resource) override; + void zxdg_popup_v6_grab(zxdg_popup_v6::Resource *resource, struct ::wl_resource *seat, uint32_t serial) override; + +private: +}; + +} + +#endif // __DS_WAYLAND_ZXDG_POPUP_V6_PRIVATE_H__ + diff --git a/src/meson.build b/src/meson.build index 276db99..f0370b7 100644 --- a/src/meson.build +++ b/src/meson.build @@ -89,6 +89,9 @@ libds_wayland_srcs = [ 'DSWaylandServer/DSWaylandZxdgToplevelV6.cpp', 'DSWaylandServer/DSWaylandZxdgToplevelV6.h', 'DSWaylandServer/DSWaylandZxdgToplevelV6Private.h', + 'DSWaylandServer/DSWaylandZxdgPopupV6.cpp', + 'DSWaylandServer/DSWaylandZxdgPopupV6.h', + 'DSWaylandServer/DSWaylandZxdgPopupV6Private.h', ] libds_srcs += libds_wayland_srcs diff --git a/tests/DSWaylandZxdgPopupV6-test.cpp b/tests/DSWaylandZxdgPopupV6-test.cpp new file mode 100644 index 0000000..49b7d14 --- /dev/null +++ b/tests/DSWaylandZxdgPopupV6-test.cpp @@ -0,0 +1,21 @@ +#include "libds-tests.h" +#include "DSWaylandZxdgPopupV6.h" + +using namespace display_server; + +class DSWaylandZxdgPopupV6Test : public ::testing::Test +{ +public: + void SetUp(void) override + {} + void TearDown(void) override + {} +}; + +TEST_F(DSWaylandZxdgPopupV6Test, NewDSWaylandZxdgPopupV6) +{ + DSWaylandZxdgPopupV6 *zxdgPopup = new DSWaylandZxdgPopupV6; + delete zxdgPopup; + EXPECT_TRUE(true); +} + diff --git a/tests/meson.build b/tests/meson.build index 747067a..06296a3 100644 --- a/tests/meson.build +++ b/tests/meson.build @@ -24,6 +24,7 @@ libds_tests_srcs = [ 'DSWaylandZxdgPositionerV6-test.cpp', 'DSWaylandZxdgSurfaceV6-test.cpp', 'DSWaylandZxdgToplevelV6-test.cpp', + 'DSWaylandZxdgPopupV6-test.cpp', 'DSObject-test.cpp', 'DSEventLoop-test.cpp', ] -- 2.7.4 From 6575e49613e0795f7206d154f1fe49d205b632ac Mon Sep 17 00:00:00 2001 From: SooChan Lim Date: Fri, 10 Jul 2020 07:37:59 +0900 Subject: [PATCH 14/16] DSCompositor: change _onPrepareCanvas to _onInitialized Change-Id: Id76ac816ca4fd159bb43ddf212b21b7969714c91 --- samples/exampleCompositor.cpp | 2 +- src/DSCompositor/DSCompositor.h | 2 +- tests/DSCompositor-test.cpp | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/samples/exampleCompositor.cpp b/samples/exampleCompositor.cpp index 6fd2a2e..a7650ff 100644 --- a/samples/exampleCompositor.cpp +++ b/samples/exampleCompositor.cpp @@ -53,7 +53,7 @@ public: virtual ~MyCompositor() {} - void _onPrepareCanvas() override + void _onInitialized() override { int width = __displayArea->getWidth(); int height = __displayArea->getHeight(); diff --git a/src/DSCompositor/DSCompositor.h b/src/DSCompositor/DSCompositor.h index 4d9ae43..c85fd81 100644 --- a/src/DSCompositor/DSCompositor.h +++ b/src/DSCompositor/DSCompositor.h @@ -23,7 +23,7 @@ public: bool quit(); protected: - virtual void _onPrepareCanvas() = 0; + virtual void _onInitialized() = 0; virtual void _onOutputAdded(std::shared_ptr output) = 0; virtual void _onOutputRemoved(std::shared_ptr output) = 0; virtual void _onInputAdded(std::shared_ptr input) = 0; diff --git a/tests/DSCompositor-test.cpp b/tests/DSCompositor-test.cpp index 15bf9fc..6ef70cf 100644 --- a/tests/DSCompositor-test.cpp +++ b/tests/DSCompositor-test.cpp @@ -24,7 +24,7 @@ public: MockCompositor() {} ~MockCompositor() {} - void _onPrepareCanvas() override + void _onInitialized() override {} void _onOutputAdded(std::shared_ptr output) override -- 2.7.4 From 77e7fd5933264cf3f31ce8da1d90a9d3fef46039 Mon Sep 17 00:00:00 2001 From: SooChan Lim Date: Fri, 10 Jul 2020 08:19:36 +0900 Subject: [PATCH 15/16] DSCompositor: initialize the Display Device with TDM - initialize the Display Device with TDM - get the Device Ouptuts form Display Device and call the _onOutputAdded() at run() method - After that, call the _onInitialization at run() method Change-Id: I783764547f11cebbbd565f5815bc69163a041c06 --- src/DSCompositor/DSCompositor.cpp | 32 +++++++++++++++++++++++++++++++- src/DSCompositor/DSCompositorPrivate.h | 5 +++++ 2 files changed, 36 insertions(+), 1 deletion(-) diff --git a/src/DSCompositor/DSCompositor.cpp b/src/DSCompositor/DSCompositor.cpp index 8a54e48..6bbbfda 100644 --- a/src/DSCompositor/DSCompositor.cpp +++ b/src/DSCompositor/DSCompositor.cpp @@ -1,6 +1,8 @@ #include "DSCompositor.h" #include "DSCompositorPrivate.h" #include "DSDebugLog.h" +#include "DSDisplayDeviceTDMImpl.h" +#include "DSOutputImpl.h" #include namespace display_server @@ -39,9 +41,12 @@ bool DSCompositor::quit() DSCompositorPrivate::DSCompositorPrivate(DSCompositor *p_ptr) : DSObjectPrivate(p_ptr), - __p_ptr(p_ptr) + __p_ptr(p_ptr), + __displayDevice(nullptr) + { __eventLoop = std::make_unique(); + __displayDevice = std::make_unique(); } DSCompositorPrivate::~DSCompositorPrivate() @@ -49,6 +54,10 @@ DSCompositorPrivate::~DSCompositorPrivate() bool DSCompositorPrivate::run() { + DS_GET_PUB(DSCompositor); + + __initializeOutputs(); + pub->_onInitialized(); if (!__eventLoop->run()) { DSLOG_ERR("Compositor", "__eventLoop->run() fails."); return false; @@ -67,4 +76,25 @@ bool DSCompositorPrivate::quit() return true; } +void DSCompositorPrivate::__initializeOutputs() +{ + DS_GET_PUB(DSCompositor); + + auto displayDeviceOutputList = __displayDevice->getOutputList(); + if (displayDeviceOutputList.empty()) { + DSLOG_INF("Compositor", "displayDeviceOutputList.empty()."); + return; + } + + // make a IDSOutput only when the IDSDisplayDeviceOutput is connected and + // then call the _onOutputAdded() + for (auto displayDeviceOutput : displayDeviceOutputList) { + if (displayDeviceOutput->getConnectState() == IDSDisplayDeviceOutput::STATE_DISCONNECTED) + continue; + + __outputList.push_back(std::make_shared(displayDeviceOutput)); + pub->_onOutputAdded(__outputList.back()); + } +} + } // namespace display_server \ No newline at end of file diff --git a/src/DSCompositor/DSCompositorPrivate.h b/src/DSCompositor/DSCompositorPrivate.h index 797b9cb..e6875d2 100644 --- a/src/DSCompositor/DSCompositorPrivate.h +++ b/src/DSCompositor/DSCompositorPrivate.h @@ -3,6 +3,7 @@ #include "DSCompositor.h" #include "DSEventLoop.h" +#include "IDSDisplayDevice.h" #include namespace display_server @@ -23,6 +24,10 @@ protected: private: std::unique_ptr __eventLoop; + std::unique_ptr __displayDevice; + std::list> __outputList; + + void __initializeOutputs(); }; } -- 2.7.4 From 7ec65c933e63faddd74eb97ed88aae9cd6f7ffae Mon Sep 17 00:00:00 2001 From: SooChan Lim Date: Fri, 10 Jul 2020 08:21:19 +0900 Subject: [PATCH 16/16] DSCanvas: initialize RenderEngine with EcoreEvas implemenation Change-Id: I9cf476b148994c94d231ef9c6691fe65a840334e --- src/DSCanvas/DSCanvas.cpp | 24 +++++++++++++++++++++++- src/DSCanvas/DSCanvasPrivate.h | 2 ++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/src/DSCanvas/DSCanvas.cpp b/src/DSCanvas/DSCanvas.cpp index bc9f066..2552c0e 100644 --- a/src/DSCanvas/DSCanvas.cpp +++ b/src/DSCanvas/DSCanvas.cpp @@ -1,5 +1,7 @@ #include "DSCanvas.h" #include "DSCanvasPrivate.h" +#include "DSOutputImpl.h" +#include "DSRenderEngineEcoreEvasImpl.h" #include "DSDebugLog.h" namespace display_server @@ -36,7 +38,8 @@ DSCanvasPrivate::DSCanvasPrivate(DSCanvas *p_ptr) : DSObjectPrivate(p_ptr), __p_ptr(p_ptr), __policyArea(nullptr), - __displayArea(nullptr) + __displayArea(nullptr), + __RenderEngine(nullptr) {} DSCanvasPrivate::~DSCanvasPrivate() @@ -61,6 +64,25 @@ 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; + } + __displayArea = displayArea; return true; diff --git a/src/DSCanvas/DSCanvasPrivate.h b/src/DSCanvas/DSCanvasPrivate.h index bded0a9..faef7e8 100644 --- a/src/DSCanvas/DSCanvasPrivate.h +++ b/src/DSCanvas/DSCanvasPrivate.h @@ -2,6 +2,7 @@ #define __DS_CANVAS_PRIVATE_H__ #include "DSCanvas.h" +#include "IDSRenderEngine.h" namespace display_server { @@ -20,6 +21,7 @@ public: private: std::shared_ptr __policyArea; std::shared_ptr __displayArea; + std::shared_ptr __RenderEngine; }; } -- 2.7.4