void DSDisplayAreaPrivate::__onWindowCreated(std::shared_ptr<DSWindow> window)
{
// make a render view and set to the window.
- auto renderView = __renderEngine->makeRenderView(window);
+ auto renderView = __renderEngine->makeRenderView();
// make a hwc window and set to the window.
auto displayDeviceHWCWindow = __displayDeviceHWC->makeHWCWindow();
window.SetBackgroundColor(Color::TRANSPARENT);
}
-std::shared_ptr<DSRenderView> DSRenderEngineDaliImpl::makeRenderView(std::shared_ptr<DSWindow> window)
+std::shared_ptr<DSRenderView> DSRenderEngineDaliImpl::makeRenderView()
{
- std::shared_ptr<DSRenderView> renderView = std::make_shared<DSRenderViewDaliImpl>(window, __offscreenApplication.GetWindow());
+ std::shared_ptr<DSRenderView> renderView = std::make_shared<DSRenderViewDaliImpl>(__offscreenApplication.GetWindow());
// callbacks
renderView->registerCallbackUpdated(this, std::bind(&DSRenderEngineDaliImpl::__onRenderViewUpdated, this, std::placeholders::_1));
DSRenderEngineDaliImpl(std::shared_ptr<IDSBufferQueue> bufferQueue);
~DSRenderEngineDaliImpl();
- std::shared_ptr<DSRenderView> makeRenderView(std::shared_ptr<DSWindow> window) override;
+ std::shared_ptr<DSRenderView> makeRenderView() override;
bool renderFrame() override;
void onInitialize();
evas_shutdown();
}
-std::shared_ptr<DSRenderView> DSRenderEngineEcoreEvasImpl::makeRenderView(std::shared_ptr<DSWindow> window)
+std::shared_ptr<DSRenderView> DSRenderEngineEcoreEvasImpl::makeRenderView()
{
- std::shared_ptr<DSRenderView> renderView = std::make_shared<DSRenderViewEcoreEvasImpl>(__ee, window);
+ std::shared_ptr<DSRenderView> renderView = std::make_shared<DSRenderViewEcoreEvasImpl>(__ee);
return renderView;
}
DSRenderEngineEcoreEvasImpl(std::shared_ptr<IDSBufferQueue> bufferQueue);
~DSRenderEngineEcoreEvasImpl();
- std::shared_ptr<DSRenderView> makeRenderView(std::shared_ptr<DSWindow> window) override;
+ std::shared_ptr<DSRenderView> makeRenderView() override;
bool renderFrame() override;
private:
#define __DS_RENDER_VIEW_H__
#include "IDSBuffer.h"
-#include "DSWindow.h"
#include "DSObject.h"
#include "DSSignal.h"
virtual ~DSRenderView();
virtual bool setBuffer(std::shared_ptr<IDSBuffer> buffer) = 0;
- virtual std::shared_ptr<DSWindow> getWindow() = 0;
virtual void raiseToTop() = 0;
virtual void lowerToBottom() = 0;
virtual void setPosition(int x, int y) = 0;
return geometry;
}
-DSRenderViewDaliImpl::DSRenderViewDaliImpl(std::shared_ptr<DSWindow> window, Dali::OffscreenWindow offscreenWindow)
- : __window(window),
- __offscreenWindow(offscreenWindow)
+DSRenderViewDaliImpl::DSRenderViewDaliImpl(Dali::OffscreenWindow offscreenWindow)
+ : __offscreenWindow(offscreenWindow)
{
std::string fragmentShader = "#extension GL_OES_EGL_image_external:require\n";
fragmentShader += FRAGMENT_SHADER;
offscreenWindow.Add(__textureViewActor);
- // callbacks
- window->registerCallbackBufferChanged(this, std::bind(&DSRenderViewDaliImpl::__onWindowBufferChanged, this, std::placeholders::_1));
- window->registerCallbackWindowRaiseToTop(this, std::bind(&DSRenderViewDaliImpl::__onWindowRaiseToTopChanged, this, std::placeholders::_1));
- window->registerCallbackWindowLowerToBottom(this, std::bind(&DSRenderViewDaliImpl::__onWindowLowerToBottomChanged, this, std::placeholders::_1));
- window->registerCallbackWindowPositionChanged(this, std::bind(&DSRenderViewDaliImpl::__onWindowPositionChanged, this, std::placeholders::_1));
-
- DSLOG_INF("DSRenderViewDaliImpl", "RenderView created. window(%p)", __window.get());
+ DSLOG_INF("DSRenderViewDaliImpl", "RenderView(%p) created.", this);
}
DSRenderViewDaliImpl::~DSRenderViewDaliImpl()
{
- DSLOG_INF("DSRenderViewDaliImpl", "RenderView destroyed. window(%p)", __window.get());
+ DSLOG_INF("DSRenderViewDaliImpl", "RenderView(%p) destroyed", this);
__textureViewActor.RemoveRenderer(__renderer);
__offscreenWindow.Remove(__textureViewActor);
return true;
}
-std::shared_ptr<DSWindow> DSRenderViewDaliImpl::getWindow()
-{
- return __window;
-}
-
-void DSRenderViewDaliImpl::registerCallbackUpdated(DSObject *slot, std::function<void(void *)> func)
-{
- __updatedSignal.connect(slot, func);
-}
-
void DSRenderViewDaliImpl::raiseToTop()
{
DSLOG_INF("DSRenderViewDaliImpl", "");
__updatedSignal.emit(nullptr);
}
-void DSRenderViewDaliImpl::__onWindowBufferChanged(std::shared_ptr<IDSBuffer> buffer)
-{
- if (buffer) {
- std::shared_ptr<stSize> bufferSize = buffer->getSize();
- DSLOG_INF("DSRenderViewDaliImpl", "Window Buffer changed. buffer(%p) size(%d, %d)", buffer.get(), bufferSize->w, bufferSize->h);
- } else {
- DSLOG_INF("DSRenderViewDaliImpl", "Window Buffer changed. buffer(nullptr)");
- }
-
- if (!setBuffer(buffer)) {
- DSLOG_ERR("DSRenderViewDaliImpl", "setBuffer fails.");
- return;
- }
-}
-
-void DSRenderViewDaliImpl::__onWindowRaiseToTopChanged(void *data)
-{
- DSLOG_INF("DSRenderViewDaliImpl", "__onWindowRaiseToTopChanged.");
-
- __textureViewActor.SetProperty(Actor::Property::VISIBLE, true);
- __textureViewActor.RaiseToTop();
-
- __updatedSignal.emit(nullptr);
-}
-
-void DSRenderViewDaliImpl::__onWindowLowerToBottomChanged(void *data)
-{
- DSLOG_INF("DSRenderViewDaliImpl", "__onWindowLowerToBottomChanged.");
-
- __textureViewActor.SetProperty(Actor::Property::VISIBLE, true);
- __textureViewActor.LowerToBottom();
-
- __updatedSignal.emit(nullptr);
-}
-
-void DSRenderViewDaliImpl::__onWindowPositionChanged(void *data)
+void DSRenderViewDaliImpl::registerCallbackUpdated(DSObject *slot, std::function<void(void *)> func)
{
- DSLOG_INF("DSRenderViewDaliImpl", "__onWindowPositionChanged.");
-
- stPosition pos = __window->getPosition();
-
- __textureViewActor.SetProperty(Actor::Property::VISIBLE, true);
- __textureViewActor.SetProperty(Actor::Property::POSITION, Vector3( pos.x, pos.y, 0.0f ));
-
- __updatedSignal.emit(nullptr);
+ __updatedSignal.connect(slot, func);
}
} // namespace display_server
class DSRenderViewDaliImpl : public DSRenderView, public DSObject
{
public:
- DSRenderViewDaliImpl(std::shared_ptr<DSWindow> window, Dali::OffscreenWindow offscreenWindow);
+ DSRenderViewDaliImpl(Dali::OffscreenWindow offscreenWindow);
~DSRenderViewDaliImpl();
bool setBuffer(std::shared_ptr<IDSBuffer> buffer) override;
- std::shared_ptr<DSWindow> getWindow() override;
void raiseToTop() override;
void lowerToBottom() override;
void setPosition(int x, int y) override;
void __onWindowLowerToBottomChanged(void *data);
void __onWindowPositionChanged(void *data);
- std::shared_ptr<DSWindow> __window;
Dali::OffscreenWindow __offscreenWindow;
Dali::Renderer __renderer;
Dali::Actor __textureViewActor;
namespace display_server
{
-DSRenderViewEcoreEvasImpl::DSRenderViewEcoreEvasImpl(Ecore_Evas *ee, std::shared_ptr<DSWindow> window)
- : __window(window)
+DSRenderViewEcoreEvasImpl::DSRenderViewEcoreEvasImpl(Ecore_Evas *ee)
{
__evasView = evas_object_image_filled_add(ecore_evas_get(ee));
evas_object_image_border_center_fill_set(__evasView, EVAS_BORDER_FILL_SOLID);
evas_object_image_colorspace_set(__evasView, EVAS_COLORSPACE_ARGB8888);
-
- // callbacks
- window->registerCallbackBufferChanged(this, std::bind(&DSRenderViewEcoreEvasImpl::__onWindowBufferChanged, this, std::placeholders::_1));
}
DSRenderViewEcoreEvasImpl::~DSRenderViewEcoreEvasImpl()
ns.type = EVAS_NATIVE_SURFACE_TBM;
ns.version = EVAS_NATIVE_SURFACE_VERSION;
ns.data.tbm.buffer = buffer->getNativeBuffer();
-
evas_object_image_native_surface_set(__evasView, &ns);
- return true;
-}
-
-void DSRenderViewEcoreEvasImpl::__onWindowBufferChanged(std::shared_ptr<IDSBuffer> buffer)
-{
std::shared_ptr<stSize> bufferSize = buffer->getSize();
- DSLOG_INF("DSRenderViewEcoreEvasImpl", "Window Buffer changed. buffer(%p) size(%d, %d)", buffer.get(), bufferSize->w, bufferSize->h);
-
- if (!setBuffer(buffer)) {
- DSLOG_ERR("DSRenderViewEcoreEvasImpl", "setBuffer fails.");
- return;
- }
-
evas_object_image_size_set(__evasView, bufferSize->w, bufferSize->h);
evas_object_image_pixels_dirty_set(__evasView, 1);
evas_object_resize(__evasView, bufferSize->w, bufferSize->h);
evas_object_show(__evasView);
-}
-std::shared_ptr<DSWindow> DSRenderViewEcoreEvasImpl::getWindow()
-{
- return __window;
+ DSLOG_INF("DSRenderViewEcoreEvasImpl", "Window Buffer changed. buffer(%p) size(%d, %d)", buffer.get(), bufferSize->w, bufferSize->h);
+
+ return true;
}
void DSRenderViewEcoreEvasImpl::raiseToTop()
class DSRenderViewEcoreEvasImpl : public DSRenderView, public DSObject
{
public:
- DSRenderViewEcoreEvasImpl(Ecore_Evas *ee, std::shared_ptr<DSWindow> window);
+ DSRenderViewEcoreEvasImpl(Ecore_Evas *ee);
~DSRenderViewEcoreEvasImpl();
bool setBuffer(std::shared_ptr<IDSBuffer> buffer) override;
- std::shared_ptr<DSWindow> getWindow() override;
void raiseToTop() override;
void lowerToBottom() override;
void setPosition(int x, int y) override;
void registerCallbackUpdated(DSObject *slot, std::function<void(void *)> func) override;
private:
- void __onWindowBufferChanged(std::shared_ptr<IDSBuffer> buffer);
-
Evas_Object *__evasView;
- std::shared_ptr<DSWindow> __window;
DSSignal<void *> __updatedSignal;
};
#define __I_DS_RENDER_ENGINE_H_
#include "DSRenderView.h"
-#include "DSWindow.h"
namespace display_server
{
public:
virtual ~IDSRenderEngine() = default;
- virtual std::shared_ptr<DSRenderView> makeRenderView(std::shared_ptr<DSWindow> window) = 0;
+ virtual std::shared_ptr<DSRenderView> makeRenderView() = 0;
virtual bool renderFrame() = 0;
};
EXPECT_TRUE(bufferQueue != nullptr);
auto renderEngine = std::make_unique<DSRenderEngineDaliImpl>(bufferQueue);
EXPECT_TRUE(renderEngine != nullptr);
- auto window = std::make_shared<DSWindow>();
- EXPECT_TRUE(window != nullptr);
- auto renderView = renderEngine->makeRenderView(window);
+ auto renderView = renderEngine->makeRenderView();
EXPECT_TRUE(renderView != nullptr);
}
EXPECT_TRUE(bufferQueue != nullptr);
auto renderEngine = std::make_unique<DSRenderEngineDaliImpl>(bufferQueue);
EXPECT_TRUE(renderEngine != nullptr);
- auto window = std::make_shared<DSWindow>();
- EXPECT_TRUE(window != nullptr);
- auto renderView = renderEngine->makeRenderView(window);
+ auto renderView = renderEngine->makeRenderView();
EXPECT_TRUE(renderView != nullptr);
auto buffer = std::make_shared<DSBufferTBMImpl>(100, 100, IDSBuffer::FORMAT_ARGB8888);
EXPECT_TRUE(renderView->setBuffer(buffer));
EXPECT_TRUE(bufferQueue != nullptr);
auto renderEngine = std::make_unique<DSRenderEngineDaliImpl>(bufferQueue);
EXPECT_TRUE(renderEngine != nullptr);
- auto window = std::make_shared<DSWindow>();
- EXPECT_TRUE(window != nullptr);
- auto renderView = renderEngine->makeRenderView(window);
+ auto renderView = renderEngine->makeRenderView();
EXPECT_TRUE(renderView != nullptr);
auto buffer = std::make_shared<DSBufferTBMImpl> (100, 100, IDSBuffer::FORMAT_ARGB8888);
EXPECT_TRUE(renderView->setBuffer(buffer));
auto renderEngine = std::make_unique<DSRenderEngineDaliImpl>(bufferQueue);
EXPECT_TRUE(renderEngine != nullptr);
- auto window = std::make_shared<DSWindow>();
- EXPECT_TRUE(window != nullptr);
- auto renderView = renderEngine->makeRenderView(window);
+ auto renderView = renderEngine->makeRenderView();
EXPECT_TRUE(renderView != nullptr);
int imgWidth = 500;
}
}
-TEST_F(DSRenderEngineDaliTest, RenderEngine_ComposeTwoWindow)
+TEST_F(DSRenderEngineDaliTest, RenderEngine_ComposeTwoRenderView)
{
std::unique_ptr<IDSDisplayDevice> displayDevice = std::make_unique<DSDisplayDeviceTDMImpl>();
std::list<std::shared_ptr<IDSDisplayDeviceOutput>> outputList = displayDevice->getOutputList();
int imgWidth = 500;
int imgHeight = 500;
- // for 1st window -- begin --
- auto windowA = std::make_shared<DSWindow>();
- EXPECT_TRUE(windowA != nullptr);
- auto renderViewA = renderEngine->makeRenderView(windowA);
+ // for 1st renderView -- begin --
+ auto renderViewA = renderEngine->makeRenderView();
EXPECT_TRUE(renderViewA != nullptr);
// create RED image buffer
EXPECT_TRUE(renderViewA->setBuffer(imageSourceBufferA));
// -- end --
- // for 2nd window -- begin --
- auto windowB = std::make_shared<DSWindow>();
- EXPECT_TRUE(windowB != nullptr);
- auto renderViewB = renderEngine->makeRenderView(windowB);
+ // for 2nd renderView -- begin --
+ auto renderViewB = renderEngine->makeRenderView();
EXPECT_TRUE(renderViewB != nullptr);
- // The buffer size of the second window is half of the first.
+ // The buffer size of the second renderView is half of the first.
// create BLUE image buffer
tbm_surface_h tbmTextureB = DSRenderEngineDaliTest::createTbmTexture(
imgWidth/2, imgHeight/2, 0, 0, 255, 255);
EXPECT_TRUE(renderEngine->renderFrame());
/*
- * Since windowA was created and added before windowB,
- * windowB should be drawn above and windowA below.
+ * Since renderViewA was created and added before renderViewB,
+ * renderViewB should be drawn above and renderViewA below.
*
* ┌──────┬──────┐
* │ B │ │
EXPECT_TRUE(bufferQueue != nullptr);
auto renderEngine = std::make_unique<DSRenderEngineEcoreEvasImpl>(bufferQueue);
EXPECT_TRUE(renderEngine != nullptr);
- auto window = std::make_shared<DSWindow>();
- EXPECT_TRUE(window != nullptr);
- auto renderView = renderEngine->makeRenderView(window);
+ auto renderView = renderEngine->makeRenderView();
EXPECT_TRUE(renderView != nullptr);
}
EXPECT_TRUE(bufferQueue != nullptr);
auto renderEngine = std::make_unique<DSRenderEngineEcoreEvasImpl>(bufferQueue);
EXPECT_TRUE(renderEngine != nullptr);
- auto window = std::make_shared<DSWindow>();
- EXPECT_TRUE(window != nullptr);
- auto renderView = renderEngine->makeRenderView(window);
+ auto renderView = renderEngine->makeRenderView();
EXPECT_TRUE(renderView != nullptr);
auto buffer = std::make_shared<DSBufferTBMImpl> (100, 100, IDSBuffer::FORMAT_ARGB8888);
EXPECT_TRUE(renderView->setBuffer(buffer));
EXPECT_TRUE(bufferQueue != nullptr);
auto renderEngine = std::make_unique<DSRenderEngineEcoreEvasImpl>(bufferQueue);
EXPECT_TRUE(renderEngine != nullptr);
- auto window = std::make_shared<DSWindow>();
- EXPECT_TRUE(window != nullptr);
- auto renderView = renderEngine->makeRenderView(window);
+ auto renderView = renderEngine->makeRenderView();
EXPECT_TRUE(renderView != nullptr);
auto buffer = std::make_shared<DSBufferTBMImpl> (100, 100, IDSBuffer::FORMAT_ARGB8888);
EXPECT_TRUE(renderView->setBuffer(buffer));