DSCanvas: initialize RenderEngine with EcoreEvas implemenation 02/241602/1
authorSooChan Lim <sc1.lim@samsung.com>
Thu, 9 Jul 2020 23:21:19 +0000 (08:21 +0900)
committerSung-Jin Park <sj76.park@samsung.com>
Thu, 20 Aug 2020 09:46:20 +0000 (18:46 +0900)
Change-Id: I9cf476b148994c94d231ef9c6691fe65a840334e

src/DSCanvas/DSCanvas.cpp
src/DSCanvas/DSCanvasPrivate.h

index bc9f066..2552c0e 100644 (file)
@@ -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<DSDisplayArea> displayAr
                return false;
        }
 
+       auto output = displayArea->getOutput();
+       if (!output) {
+               DSLOG_ERR("DSCanvasPrivate", "output is null.");
+               return false;
+       }
+
+       auto outputImpl = std::dynamic_pointer_cast<DSOutputImpl>(output); // down-casting of std::shared_ptr
+       auto bufferQueue = outputImpl->getDisplayBufferQueue();
+       if (!bufferQueue) {
+               DSLOG_ERR("DSCanvasPrivate", "bufferQueue is null.");
+               return false;
+       }
+
+       __RenderEngine = std::make_shared<DSRenderEngineEcoreEvasImpl>(bufferQueue);
+       if (!__RenderEngine) {
+               DSLOG_ERR("DSCanvasPrivate", "__RenderEngine is null.");
+               return false;
+       }
+
        __displayArea = displayArea;
 
        return true;
index bded0a9..faef7e8 100644 (file)
@@ -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<DSPolicyArea> __policyArea;
        std::shared_ptr<DSDisplayArea> __displayArea;
+       std::shared_ptr<IDSRenderEngine> __RenderEngine;
 };
 
 }