From cc4b596f408f43cae0b8bc516d3fb2e452304bfc Mon Sep 17 00:00:00 2001 From: Sung-Jin Park Date: Mon, 29 Jun 2020 12:07:37 +0900 Subject: [PATCH 01/16] DSWaylandServer: update dswayland-server-tizen-extension.cpp/.h files Change-Id: I9416043d5f0d5ad984d179a6537b1f6695730164 Signed-off-by: Sung-Jin Park --- .../dswayland-server-tizen-extension.cpp | 241 +-------------------- .../dswayland-server-tizen-extension.h | 99 --------- 2 files changed, 2 insertions(+), 338 deletions(-) diff --git a/src/DSWaylandServer/dswayland-server-tizen-extension.cpp b/src/DSWaylandServer/dswayland-server-tizen-extension.cpp index 76dd3d7..afa1b4a 100644 --- a/src/DSWaylandServer/dswayland-server-tizen-extension.cpp +++ b/src/DSWaylandServer/dswayland-server-tizen-extension.cpp @@ -4007,8 +4007,7 @@ namespace DSWaylandServer { const struct ::tizen_video_interface tizen_video::m_tizen_video_interface = { tizen_video::handle_get_object, tizen_video::handle_get_viewport, - tizen_video::handle_destroy, - tizen_video::handle_get_surface_provider + tizen_video::handle_destroy }; void tizen_video::tizen_video_get_object(Resource *, uint32_t, struct ::wl_resource *) @@ -4023,10 +4022,6 @@ namespace DSWaylandServer { { } - void tizen_video::tizen_video_get_surface_provider(Resource *, uint32_t, struct ::wl_resource *) - { - } - void tizen_video::handle_get_object( ::wl_client *client, @@ -4066,20 +4061,6 @@ namespace DSWaylandServer { r); } - void tizen_video::handle_get_surface_provider( - ::wl_client *client, - struct wl_resource *resource, - uint32_t id, - struct ::wl_resource *surface) - { - DS_UNUSED(client); - Resource *r = Resource::fromResource(resource); - static_cast(r->tizen_video_object)->tizen_video_get_surface_provider( - r, - id, - surface); - } - void tizen_video::send_format(uint32_t format) { DS_ASSERT_X(m_resource, "tizen_video::format", "Uninitialised resource"); @@ -4100,207 +4081,6 @@ namespace DSWaylandServer { } - tizen_video_surface_provider::tizen_video_surface_provider(struct ::wl_client *client, int id, int version) - : m_resource_map() - , m_resource(NULL) - , m_global(NULL) - { - init(client, id, version); - } - - tizen_video_surface_provider::tizen_video_surface_provider(struct ::wl_display *display, int version) - : m_resource_map() - , m_resource(NULL) - , m_global(NULL) - { - init(display, version); - } - - tizen_video_surface_provider::tizen_video_surface_provider(struct ::wl_resource *resource) - : m_resource_map() - , m_resource(NULL) - , m_global(NULL) - { - init(resource); - } - - tizen_video_surface_provider::tizen_video_surface_provider() - : m_resource_map() - , m_resource(NULL) - , m_global(NULL) - { - } - - tizen_video_surface_provider::~tizen_video_surface_provider() - { - std::multimap::iterator it; - for (it = m_resource_map.begin() ; it != m_resource_map.end() ; it++) { - tizen_video_surface_provider::Resource *resource = (*it).second; - wl_resource_set_implementation(resource->handle, NULL, NULL, NULL); - } - - if (m_global) { - wl_global_destroy(m_global); - wl_list_remove(&m_displayDestroyedListener.link); - } - } - - void tizen_video_surface_provider::init(struct ::wl_client *client, int id, int version) - { - m_resource = bind(client, id, version); - } - - void tizen_video_surface_provider::init(struct ::wl_resource *resource) - { - m_resource = bind(resource); - } - - tizen_video_surface_provider::Resource *tizen_video_surface_provider::add(struct ::wl_client *client, int version) - { - Resource *resource = bind(client, 0, version); - m_resource_map.insert(std::pair(client, resource)); - return resource; - } - - tizen_video_surface_provider::Resource *tizen_video_surface_provider::add(struct ::wl_client *client, int id, int version) - { - Resource *resource = bind(client, id, version); - m_resource_map.insert(std::pair(client, resource)); - return resource; - } - - void tizen_video_surface_provider::init(struct ::wl_display *display, int version) - { - m_global = wl_global_create(display, &::tizen_video_surface_provider_interface, version, this, bind_func); - m_globalVersion = version; - m_displayDestroyedListener.notify = tizen_video_surface_provider::display_destroy_func; - m_displayDestroyedListener.parent = this; - wl_display_add_destroy_listener(display, &m_displayDestroyedListener); - } - - const struct wl_interface *tizen_video_surface_provider::interface() - { - return &::tizen_video_surface_provider_interface; - } - - tizen_video_surface_provider::Resource *tizen_video_surface_provider::tizen_video_surface_provider_allocate() - { - return new Resource; - } - - void tizen_video_surface_provider::tizen_video_surface_provider_bind_resource(Resource *) - { - } - - void tizen_video_surface_provider::tizen_video_surface_provider_destroy_resource(Resource *) - { - } - - void tizen_video_surface_provider::bind_func(struct ::wl_client *client, void *data, uint32_t version, uint32_t id) - { - tizen_video_surface_provider *that = static_cast(data); - that->add(client, id, std::min(that->m_globalVersion, version)); - } - - void tizen_video_surface_provider::display_destroy_func(struct ::wl_listener *listener, void *data) - { - DS_UNUSED(data); - tizen_video_surface_provider *that = static_cast(listener)->parent; - that->m_global = NULL; - } - - void tizen_video_surface_provider::destroy_func(struct ::wl_resource *client_resource) - { - Resource *resource = Resource::fromResource(client_resource); - DS_ASSERT(resource); - tizen_video_surface_provider *that = resource->tizen_video_surface_provider_object; - that->m_resource_map.erase(resource->client()); - that->tizen_video_surface_provider_destroy_resource(resource); - delete resource; - } - - tizen_video_surface_provider::Resource *tizen_video_surface_provider::bind(struct ::wl_client *client, uint32_t id, int version) - { - DS_ASSERT_X(!wl_client_get_object(client, id), "DSWaylandObject bind", "binding to object %u more than once", id); - struct ::wl_resource *handle = wl_resource_create(client, &::tizen_video_surface_provider_interface, version, id); - return bind(handle); - } - - tizen_video_surface_provider::Resource *tizen_video_surface_provider::bind(struct ::wl_resource *handle) - { - Resource *resource = tizen_video_surface_provider_allocate(); - resource->tizen_video_surface_provider_object = this; - - wl_resource_set_implementation(handle, &m_tizen_video_surface_provider_interface, resource, destroy_func); - resource->handle = handle; - tizen_video_surface_provider_bind_resource(resource); - return resource; - } - tizen_video_surface_provider::Resource *tizen_video_surface_provider::Resource::fromResource(struct ::wl_resource *resource) - { - if (DS_UNLIKELY(!resource)) - return NULL; - if (wl_resource_instance_of(resource, &::tizen_video_surface_provider_interface, &m_tizen_video_surface_provider_interface)) - return static_cast(wl_resource_get_user_data(resource)); - return NULL; - } - - const struct ::tizen_video_surface_provider_interface tizen_video_surface_provider::m_tizen_video_surface_provider_interface = { - tizen_video_surface_provider::handle_destroy, - tizen_video_surface_provider::handle_set_sync_serial - }; - - void tizen_video_surface_provider::tizen_video_surface_provider_destroy(Resource *) - { - } - - void tizen_video_surface_provider::tizen_video_surface_provider_set_sync_serial(Resource *, uint32_t ) - { - } - - - void tizen_video_surface_provider::handle_destroy( - ::wl_client *client, - struct wl_resource *resource) - { - DS_UNUSED(client); - Resource *r = Resource::fromResource(resource); - static_cast(r->tizen_video_surface_provider_object)->tizen_video_surface_provider_destroy( - r); - } - - void tizen_video_surface_provider::handle_set_sync_serial( - ::wl_client *client, - struct wl_resource *resource, - uint32_t serial) - { - DS_UNUSED(client); - Resource *r = Resource::fromResource(resource); - static_cast(r->tizen_video_surface_provider_object)->tizen_video_surface_provider_set_sync_serial( - r, - serial); - } - - void tizen_video_surface_provider::send_sync_done(uint32_t serial) - { - DS_ASSERT_X(m_resource, "tizen_video_surface_provider::sync_done", "Uninitialised resource"); - if (DS_UNLIKELY(!m_resource)) { - WRN("could not call tizen_video_surface_provider::sync_done as it's not initialised"); - return; - } - send_sync_done( - m_resource->handle, - serial); - } - - void tizen_video_surface_provider::send_sync_done(struct ::wl_resource *resource, uint32_t serial) - { - tizen_video_surface_provider_send_sync_done( - resource, - serial); - } - - tizen_video_object::tizen_video_object(struct ::wl_client *client, int id, int version) : m_resource_map() , m_resource(NULL) @@ -4452,8 +4232,7 @@ namespace DSWaylandServer { tizen_video_object::handle_follow_topmost_visibility, tizen_video_object::handle_unfollow_topmost_visibility, tizen_video_object::handle_allowed_attribute, - tizen_video_object::handle_disallowed_attribute, - tizen_video_object::handle_set_sync_serial + tizen_video_object::handle_disallowed_attribute }; void tizen_video_object::tizen_video_object_destroy(Resource *) @@ -4480,10 +4259,6 @@ namespace DSWaylandServer { { } - void tizen_video_object::tizen_video_object_set_sync_serial(Resource *, uint32_t ) - { - } - void tizen_video_object::handle_destroy( ::wl_client *client, @@ -4549,18 +4324,6 @@ namespace DSWaylandServer { r); } - void tizen_video_object::handle_set_sync_serial( - ::wl_client *client, - struct wl_resource *resource, - uint32_t serial) - { - DS_UNUSED(client); - Resource *r = Resource::fromResource(resource); - static_cast(r->tizen_video_object_object)->tizen_video_object_set_sync_serial( - r, - serial); - } - void tizen_video_object::send_attribute(const std::string &name, uint32_t value) { DS_ASSERT_X(m_resource, "tizen_video_object::attribute", "Uninitialised resource"); diff --git a/src/DSWaylandServer/dswayland-server-tizen-extension.h b/src/DSWaylandServer/dswayland-server-tizen-extension.h index e605687..58906a5 100644 --- a/src/DSWaylandServer/dswayland-server-tizen-extension.h +++ b/src/DSWaylandServer/dswayland-server-tizen-extension.h @@ -1510,7 +1510,6 @@ namespace DSWaylandServer { virtual void tizen_video_get_object(Resource *resource, uint32_t id, struct ::wl_resource *surface); virtual void tizen_video_get_viewport(Resource *resource, uint32_t id, struct ::wl_resource *surface); virtual void tizen_video_destroy(Resource *resource); - virtual void tizen_video_get_surface_provider(Resource *resource, uint32_t id, struct ::wl_resource *surface); private: static void bind_func(struct ::wl_client *client, void *data, uint32_t version, uint32_t id); @@ -1535,11 +1534,6 @@ namespace DSWaylandServer { static void handle_destroy( ::wl_client *client, struct wl_resource *resource); - static void handle_get_surface_provider( - ::wl_client *client, - struct wl_resource *resource, - uint32_t id, - struct ::wl_resource *surface); std::multimap m_resource_map; Resource *m_resource; @@ -1551,94 +1545,6 @@ namespace DSWaylandServer { DisplayDestroyedListener m_displayDestroyedListener; }; - class tizen_video_surface_provider - { - public: - tizen_video_surface_provider(struct ::wl_client *client, int id, int version); - tizen_video_surface_provider(struct ::wl_display *display, int version); - tizen_video_surface_provider(struct ::wl_resource *resource); - tizen_video_surface_provider(); - - virtual ~tizen_video_surface_provider(); - - class Resource - { - public: - Resource() : tizen_video_surface_provider_object(NULL), handle(NULL) {} - virtual ~Resource() {} - - tizen_video_surface_provider *tizen_video_surface_provider_object; - tizen_video_surface_provider *object() { return tizen_video_surface_provider_object; } - struct ::wl_resource *handle; - - struct ::wl_client *client() const { return wl_resource_get_client(handle); } - int version() const { return wl_resource_get_version(handle); } - - static Resource *fromResource(struct ::wl_resource *resource); - }; - - void init(struct ::wl_client *client, int id, int version); - void init(struct ::wl_display *display, int version); - void init(struct ::wl_resource *resource); - - Resource *add(struct ::wl_client *client, int version); - Resource *add(struct ::wl_client *client, int id, int version); - Resource *add(struct wl_list *resource_list, struct ::wl_client *client, int id, int version); - - Resource *resource() { return m_resource; } - const Resource *resource() const { return m_resource; } - - std::multimap resourceMap() { return m_resource_map; } - const std::multimap resourceMap() const { return m_resource_map; } - - bool isGlobal() const { return m_global != NULL; } - bool isResource() const { return m_resource != NULL; } - - static const struct ::wl_interface *interface(); - static std::string interfaceName() { return interface()->name; } - static int interfaceVersion() { return interface()->version; } - - - void send_sync_done(uint32_t serial); - void send_sync_done(struct ::wl_resource *resource, uint32_t serial); - - protected: - virtual Resource *tizen_video_surface_provider_allocate(); - - virtual void tizen_video_surface_provider_bind_resource(Resource *resource); - virtual void tizen_video_surface_provider_destroy_resource(Resource *resource); - - virtual void tizen_video_surface_provider_destroy(Resource *resource); - virtual void tizen_video_surface_provider_set_sync_serial(Resource *resource, uint32_t serial); - - private: - static void bind_func(struct ::wl_client *client, void *data, uint32_t version, uint32_t id); - static void destroy_func(struct ::wl_resource *client_resource); - static void display_destroy_func(struct ::wl_listener *listener, void *data); - - Resource *bind(struct ::wl_client *client, uint32_t id, int version); - Resource *bind(struct ::wl_resource *handle); - - static const struct ::tizen_video_surface_provider_interface m_tizen_video_surface_provider_interface; - - static void handle_destroy( - ::wl_client *client, - struct wl_resource *resource); - static void handle_set_sync_serial( - ::wl_client *client, - struct wl_resource *resource, - uint32_t serial); - - std::multimap m_resource_map; - Resource *m_resource; - struct ::wl_global *m_global; - uint32_t m_globalVersion; - struct DisplayDestroyedListener : ::wl_listener { - tizen_video_surface_provider *parent; - }; - DisplayDestroyedListener m_displayDestroyedListener; - }; - class tizen_video_object { public: @@ -1704,7 +1610,6 @@ namespace DSWaylandServer { virtual void tizen_video_object_unfollow_topmost_visibility(Resource *resource); virtual void tizen_video_object_allowed_attribute(Resource *resource); virtual void tizen_video_object_disallowed_attribute(Resource *resource); - virtual void tizen_video_object_set_sync_serial(Resource *resource, uint32_t serial); private: static void bind_func(struct ::wl_client *client, void *data, uint32_t version, uint32_t id); @@ -1736,10 +1641,6 @@ namespace DSWaylandServer { static void handle_disallowed_attribute( ::wl_client *client, struct wl_resource *resource); - static void handle_set_sync_serial( - ::wl_client *client, - struct wl_resource *resource, - uint32_t serial); std::multimap m_resource_map; Resource *m_resource; -- 2.7.4 From ebbe7c2bdec68f2b3692d0f11b0ac0e186ca9bd0 Mon Sep 17 00:00:00 2001 From: jeon Date: Fri, 26 Jun 2020 19:03:20 +0900 Subject: [PATCH 02/16] Add default interface listener codes for tizen_input_device Change-Id: I9e1833d478806a14fe25f6ea17b7f0257a48d70b --- src/DSWaylandServer/DSWaylandTizenInputDevice.cpp | 31 ++++++++++ src/DSWaylandServer/DSWaylandTizenInputDevice.h | 20 +++++++ .../DSWaylandTizenInputDeviceManager.cpp | 66 ++++++++++++++++++++++ .../DSWaylandTizenInputDeviceManager.h | 20 +++++++ .../DSWaylandTizenInputDeviceManagerPrivate.h | 38 +++++++++++++ .../DSWaylandTizenInputDevicePrivate.h | 26 +++++++++ src/meson.build | 6 ++ 7 files changed, 207 insertions(+) create mode 100644 src/DSWaylandServer/DSWaylandTizenInputDevice.cpp create mode 100644 src/DSWaylandServer/DSWaylandTizenInputDevice.h create mode 100644 src/DSWaylandServer/DSWaylandTizenInputDeviceManager.cpp create mode 100644 src/DSWaylandServer/DSWaylandTizenInputDeviceManager.h create mode 100644 src/DSWaylandServer/DSWaylandTizenInputDeviceManagerPrivate.h create mode 100644 src/DSWaylandServer/DSWaylandTizenInputDevicePrivate.h diff --git a/src/DSWaylandServer/DSWaylandTizenInputDevice.cpp b/src/DSWaylandServer/DSWaylandTizenInputDevice.cpp new file mode 100644 index 0000000..840a346 --- /dev/null +++ b/src/DSWaylandServer/DSWaylandTizenInputDevice.cpp @@ -0,0 +1,31 @@ +#include "DSWaylandTizenInputDevice.h" +#include "DSWaylandTizenInputDevicePrivate.h" + +namespace display_server +{ +DSWaylandTizenInputDevicePrivate::DSWaylandTizenInputDevicePrivate() +{ +} +DSWaylandTizenInputDevicePrivate::~DSWaylandTizenInputDevicePrivate() +{ +} + +void DSWaylandTizenInputDevicePrivate::tizen_input_device_select_axes(Resource *resource, wl_array *axes) +{ +} + +void DSWaylandTizenInputDevicePrivate::tizen_input_device_release(Resource *resource) +{ +} + + +DSWaylandTizenInputDevice::DSWaylandTizenInputDevice() +{ +} + +DSWaylandTizenInputDevice::~DSWaylandTizenInputDevice() +{ +} + +} // namespace display_server + diff --git a/src/DSWaylandServer/DSWaylandTizenInputDevice.h b/src/DSWaylandServer/DSWaylandTizenInputDevice.h new file mode 100644 index 0000000..a5f2c53 --- /dev/null +++ b/src/DSWaylandServer/DSWaylandTizenInputDevice.h @@ -0,0 +1,20 @@ +#ifndef _DS_WAYLAND_TIZEN_INPUT_DEVICE_H_ +#define _DS_WAYLAND_TIZEN_INPUT_DEVICE_H_ + +namespace display_server +{ + +class DSWaylandTizenInputDevice +{ +public: + DSWaylandTizenInputDevice(); + virtual ~DSWaylandTizenInputDevice(); + +private: + +}; + +} + +#endif + diff --git a/src/DSWaylandServer/DSWaylandTizenInputDeviceManager.cpp b/src/DSWaylandServer/DSWaylandTizenInputDeviceManager.cpp new file mode 100644 index 0000000..b748bf1 --- /dev/null +++ b/src/DSWaylandServer/DSWaylandTizenInputDeviceManager.cpp @@ -0,0 +1,66 @@ +#include "DSWaylandTizenInputDeviceManager.h" +#include "DSWaylandTizenInputDeviceManagerPrivate.h" + + +namespace display_server +{ +DSWaylandTizenInputDeviceManagerPrivate::DSWaylandTizenInputDeviceManagerPrivate() +{ +} +DSWaylandTizenInputDeviceManagerPrivate::~DSWaylandTizenInputDeviceManagerPrivate() +{ +} + +void DSWaylandTizenInputDeviceManagerPrivate::tizen_input_device_manager_bind_resource(tizen_input_device_manager::Resource *resource) +{ +} + +void DSWaylandTizenInputDeviceManagerPrivate::tizen_input_device_manager_destroy_resource(tizen_input_device_manager::Resource *resource) +{ +} + +void DSWaylandTizenInputDeviceManagerPrivate::tizen_input_device_manager_block_events(tizen_input_device_manager::Resource *resource, uint32_t serial, uint32_t clas, uint32_t duration) +{ +} +void DSWaylandTizenInputDeviceManagerPrivate::tizen_input_device_manager_unblock_events(tizen_input_device_manager::Resource *resource, uint32_t serial) +{ +} +void DSWaylandTizenInputDeviceManagerPrivate::tizen_input_device_manager_init_generator(tizen_input_device_manager::Resource *resource, uint32_t clas) +{ +} +void DSWaylandTizenInputDeviceManagerPrivate::tizen_input_device_manager_deinit_generator(tizen_input_device_manager::Resource *resource, uint32_t clas) +{ +} +void DSWaylandTizenInputDeviceManagerPrivate::tizen_input_device_manager_generate_key(tizen_input_device_manager::Resource *resource, const std::string &keyname, uint32_t pressed) +{ +} +void DSWaylandTizenInputDeviceManagerPrivate::tizen_input_device_manager_generate_pointer(tizen_input_device_manager::Resource *resource, uint32_t type, uint32_t x, uint32_t y, uint32_t button) +{ +} +void DSWaylandTizenInputDeviceManagerPrivate::tizen_input_device_manager_generate_touch(tizen_input_device_manager::Resource *resource, uint32_t type, uint32_t x, uint32_t y, uint32_t finger) +{ +} +void DSWaylandTizenInputDeviceManagerPrivate::tizen_input_device_manager_pointer_warp(tizen_input_device_manager::Resource *resource, struct ::wl_resource *surface, wl_fixed_t x, wl_fixed_t y) +{ +} +void DSWaylandTizenInputDeviceManagerPrivate::tizen_input_device_manager_init_generator_with_name(tizen_input_device_manager::Resource *resource, uint32_t clas, const std::string &name) +{ +} +void DSWaylandTizenInputDeviceManagerPrivate::tizen_input_device_manager_destroy(tizen_input_device_manager::Resource *resource) +{ +} +void DSWaylandTizenInputDeviceManagerPrivate::tizen_input_device_manager_generate_axis(tizen_input_device_manager::Resource *resource, uint32_t type, wl_fixed_t value) +{ +} + + +DSWaylandTizenInputDeviceManager::DSWaylandTizenInputDeviceManager() +{ +} + +DSWaylandTizenInputDeviceManager::~DSWaylandTizenInputDeviceManager() +{ +} + +} // namespace display_server + diff --git a/src/DSWaylandServer/DSWaylandTizenInputDeviceManager.h b/src/DSWaylandServer/DSWaylandTizenInputDeviceManager.h new file mode 100644 index 0000000..8c2f3f6 --- /dev/null +++ b/src/DSWaylandServer/DSWaylandTizenInputDeviceManager.h @@ -0,0 +1,20 @@ +#ifndef _DS_WAYLAND_TIZEN_INPUT_DEVICE_MANAGER_H_ +#define _DS_WAYLAND_TIZEN_INPUT_DEVICE_MANAGER_H_ + +namespace display_server +{ + +class DSWaylandTizenInputDeviceManager +{ +public: + DSWaylandTizenInputDeviceManager(); + virtual ~DSWaylandTizenInputDeviceManager(); + +private: + +}; + +} + +#endif + diff --git a/src/DSWaylandServer/DSWaylandTizenInputDeviceManagerPrivate.h b/src/DSWaylandServer/DSWaylandTizenInputDeviceManagerPrivate.h new file mode 100644 index 0000000..0187d10 --- /dev/null +++ b/src/DSWaylandServer/DSWaylandTizenInputDeviceManagerPrivate.h @@ -0,0 +1,38 @@ +#ifndef _DS_WAYLAND_TIZEN_INPUT_DEVICE_MANAGER_PRIVATE_H_ +#define _DS_WAYLAND_TIZEN_INPUT_DEVICE_MANAGER_PRIVATE_H_ + +#include "dswayland-server-tizen-extension.h" + +namespace display_server +{ + +class DSWaylandTizenInputDeviceManagerPrivate : public DSWaylandServer::tizen_input_device_manager +{ +public: + DSWaylandTizenInputDeviceManagerPrivate(); + ~DSWaylandTizenInputDeviceManagerPrivate() override; + +protected: + void tizen_input_device_manager_bind_resource(Resource *resource) override; + void tizen_input_device_manager_destroy_resource(Resource *resource) override; + + void tizen_input_device_manager_block_events(Resource *resource, uint32_t serial, uint32_t clas, uint32_t duration) override; + void tizen_input_device_manager_unblock_events(Resource *resource, uint32_t serial) override; + void tizen_input_device_manager_init_generator(Resource *resource, uint32_t clas) override; + void tizen_input_device_manager_deinit_generator(Resource *resource, uint32_t clas) override; + void tizen_input_device_manager_generate_key(Resource *resource, const std::string &keyname, uint32_t pressed) override; + void tizen_input_device_manager_generate_pointer(Resource *resource, uint32_t type, uint32_t x, uint32_t y, uint32_t button) override; + void tizen_input_device_manager_generate_touch(Resource *resource, uint32_t type, uint32_t x, uint32_t y, uint32_t finger) override; + void tizen_input_device_manager_pointer_warp(Resource *resource, struct ::wl_resource *surface, wl_fixed_t x, wl_fixed_t y) override; + void tizen_input_device_manager_init_generator_with_name(Resource *resource, uint32_t clas, const std::string &name) override; + void tizen_input_device_manager_destroy(Resource *resource) override; + void tizen_input_device_manager_generate_axis(Resource *resource, uint32_t type, wl_fixed_t value) override; + +private: + /* data */ +}; + +} + +#endif + diff --git a/src/DSWaylandServer/DSWaylandTizenInputDevicePrivate.h b/src/DSWaylandServer/DSWaylandTizenInputDevicePrivate.h new file mode 100644 index 0000000..ef06efe --- /dev/null +++ b/src/DSWaylandServer/DSWaylandTizenInputDevicePrivate.h @@ -0,0 +1,26 @@ +#ifndef _DS_WAYLAND_TIZEN_INPUT_DEVICE_PRIVATE_H_ +#define _DS_WAYLAND_TIZEN_INPUT_DEVICE_PRIVATE_H_ + +#include "dswayland-server-tizen-extension.h" + +namespace display_server +{ + +class DSWaylandTizenInputDevicePrivate : public DSWaylandServer::tizen_input_device +{ +public: + DSWaylandTizenInputDevicePrivate(); + ~DSWaylandTizenInputDevicePrivate() override; + +protected: + void tizen_input_device_select_axes(Resource *resource, wl_array *axes) override; + void tizen_input_device_release(Resource *resource) override; + +private: + /* data */ +}; + +} + +#endif + diff --git a/src/meson.build b/src/meson.build index 1587674..224fcf5 100644 --- a/src/meson.build +++ b/src/meson.build @@ -55,6 +55,12 @@ libds_wayland_srcs = [ 'DSWaylandServer/dswayland-server-text.h', 'DSWaylandServer/dswayland-server-tizen-launch.cpp', 'DSWaylandServer/dswayland-server-tizen-launch.h', + 'DSWaylandServer/DSWaylandTizenInputDevice.cpp', + 'DSWaylandServer/DSWaylandTizenInputDevice.h', + 'DSWaylandServer/DSWaylandTizenInputDevicePrivate.h', + 'DSWaylandServer/DSWaylandTizenInputDeviceManager.cpp', + 'DSWaylandServer/DSWaylandTizenInputDeviceManager.h', + 'DSWaylandServer/DSWaylandTizenInputDeviceManagerPrivate.h', ] libds_srcs += libds_wayland_srcs -- 2.7.4 From e86dafbbab4b2e8e5bf8f1195c99bd8402467e9b Mon Sep 17 00:00:00 2001 From: jeon Date: Mon, 29 Jun 2020 14:02:03 +0900 Subject: [PATCH 03/16] DSWaylandServer: imply Pimpl structure to DSWaylandTizenInputDeviceManager Change-Id: I0589c90c9729af4fb9a0f97fc2cf59c61c144554 --- src/DSWaylandServer/DSWaylandTizenInputDevice.cpp | 4 +++- src/DSWaylandServer/DSWaylandTizenInputDevice.h | 16 ++++++++++++++-- .../DSWaylandTizenInputDeviceManager.cpp | 6 +++++- .../DSWaylandTizenInputDeviceManager.h | 16 ++++++++++++++-- .../DSWaylandTizenInputDeviceManagerPrivate.h | 6 ++++-- .../DSWaylandTizenInputDevicePrivate.h | 6 ++++-- tests/DSWaylandTizenInputDevice-test.cpp | 21 +++++++++++++++++++++ tests/DSWaylandTizenInputDeviceManager-test.cpp | 21 +++++++++++++++++++++ tests/meson.build | 2 ++ 9 files changed, 88 insertions(+), 10 deletions(-) create mode 100644 tests/DSWaylandTizenInputDevice-test.cpp create mode 100644 tests/DSWaylandTizenInputDeviceManager-test.cpp diff --git a/src/DSWaylandServer/DSWaylandTizenInputDevice.cpp b/src/DSWaylandServer/DSWaylandTizenInputDevice.cpp index 840a346..90c8e0f 100644 --- a/src/DSWaylandServer/DSWaylandTizenInputDevice.cpp +++ b/src/DSWaylandServer/DSWaylandTizenInputDevice.cpp @@ -3,7 +3,8 @@ namespace display_server { -DSWaylandTizenInputDevicePrivate::DSWaylandTizenInputDevicePrivate() +DSWaylandTizenInputDevicePrivate::DSWaylandTizenInputDevicePrivate(DSWaylandTizenInputDevice *p_ptr) + : DSObjectPrivate(p_ptr) { } DSWaylandTizenInputDevicePrivate::~DSWaylandTizenInputDevicePrivate() @@ -20,6 +21,7 @@ void DSWaylandTizenInputDevicePrivate::tizen_input_device_release(Resource *reso DSWaylandTizenInputDevice::DSWaylandTizenInputDevice() + : DSObject(std::make_unique(this)) { } diff --git a/src/DSWaylandServer/DSWaylandTizenInputDevice.h b/src/DSWaylandServer/DSWaylandTizenInputDevice.h index a5f2c53..2f0060d 100644 --- a/src/DSWaylandServer/DSWaylandTizenInputDevice.h +++ b/src/DSWaylandServer/DSWaylandTizenInputDevice.h @@ -1,17 +1,29 @@ #ifndef _DS_WAYLAND_TIZEN_INPUT_DEVICE_H_ #define _DS_WAYLAND_TIZEN_INPUT_DEVICE_H_ +#include + namespace display_server { -class DSWaylandTizenInputDevice +class DSWaylandTizenInputDevicePrivate; + +class DSWaylandTizenInputDevice : public DSObject { public: DSWaylandTizenInputDevice(); virtual ~DSWaylandTizenInputDevice(); private: - + inline DSWaylandTizenInputDevicePrivate *__d_func() + { + return reinterpret_cast(_d_ptr.get()); + } + inline const DSWaylandTizenInputDevicePrivate *__d_func() const + { + return reinterpret_cast(_d_ptr.get()); + } + friend class DSWaylandTizenInputDevicePrivate; }; } diff --git a/src/DSWaylandServer/DSWaylandTizenInputDeviceManager.cpp b/src/DSWaylandServer/DSWaylandTizenInputDeviceManager.cpp index b748bf1..ec41cc6 100644 --- a/src/DSWaylandServer/DSWaylandTizenInputDeviceManager.cpp +++ b/src/DSWaylandServer/DSWaylandTizenInputDeviceManager.cpp @@ -4,9 +4,12 @@ namespace display_server { -DSWaylandTizenInputDeviceManagerPrivate::DSWaylandTizenInputDeviceManagerPrivate() + +DSWaylandTizenInputDeviceManagerPrivate::DSWaylandTizenInputDeviceManagerPrivate(DSWaylandTizenInputDeviceManager *p_ptr) + : DSObjectPrivate(p_ptr) { } + DSWaylandTizenInputDeviceManagerPrivate::~DSWaylandTizenInputDeviceManagerPrivate() { } @@ -55,6 +58,7 @@ void DSWaylandTizenInputDeviceManagerPrivate::tizen_input_device_manager_generat DSWaylandTizenInputDeviceManager::DSWaylandTizenInputDeviceManager() + : DSObject(std::make_unique(this)) { } diff --git a/src/DSWaylandServer/DSWaylandTizenInputDeviceManager.h b/src/DSWaylandServer/DSWaylandTizenInputDeviceManager.h index 8c2f3f6..36ce7e5 100644 --- a/src/DSWaylandServer/DSWaylandTizenInputDeviceManager.h +++ b/src/DSWaylandServer/DSWaylandTizenInputDeviceManager.h @@ -1,17 +1,29 @@ #ifndef _DS_WAYLAND_TIZEN_INPUT_DEVICE_MANAGER_H_ #define _DS_WAYLAND_TIZEN_INPUT_DEVICE_MANAGER_H_ +#include + namespace display_server { -class DSWaylandTizenInputDeviceManager +class DSWaylandTizenInputDeviceManagerPrivate; + +class DSWaylandTizenInputDeviceManager : public DSObject { public: DSWaylandTizenInputDeviceManager(); virtual ~DSWaylandTizenInputDeviceManager(); private: - + inline DSWaylandTizenInputDeviceManagerPrivate *__d_func() + { + return reinterpret_cast(_d_ptr.get()); + } + inline const DSWaylandTizenInputDeviceManagerPrivate *__d_func() const + { + return reinterpret_cast(_d_ptr.get()); + } + friend class DSWaylandTizenInputDeviceManagerPrivate; }; } diff --git a/src/DSWaylandServer/DSWaylandTizenInputDeviceManagerPrivate.h b/src/DSWaylandServer/DSWaylandTizenInputDeviceManagerPrivate.h index 0187d10..a3cb000 100644 --- a/src/DSWaylandServer/DSWaylandTizenInputDeviceManagerPrivate.h +++ b/src/DSWaylandServer/DSWaylandTizenInputDeviceManagerPrivate.h @@ -2,14 +2,16 @@ #define _DS_WAYLAND_TIZEN_INPUT_DEVICE_MANAGER_PRIVATE_H_ #include "dswayland-server-tizen-extension.h" +#include "DSWaylandTizenInputDeviceManager.h" namespace display_server { -class DSWaylandTizenInputDeviceManagerPrivate : public DSWaylandServer::tizen_input_device_manager +class DSWaylandTizenInputDeviceManagerPrivate : public DSObjectPrivate, public DSWaylandServer::tizen_input_device_manager { public: - DSWaylandTizenInputDeviceManagerPrivate(); + DSWaylandTizenInputDeviceManagerPrivate() = delete; + DSWaylandTizenInputDeviceManagerPrivate(DSWaylandTizenInputDeviceManager *p_ptr); ~DSWaylandTizenInputDeviceManagerPrivate() override; protected: diff --git a/src/DSWaylandServer/DSWaylandTizenInputDevicePrivate.h b/src/DSWaylandServer/DSWaylandTizenInputDevicePrivate.h index ef06efe..eb1efd2 100644 --- a/src/DSWaylandServer/DSWaylandTizenInputDevicePrivate.h +++ b/src/DSWaylandServer/DSWaylandTizenInputDevicePrivate.h @@ -2,14 +2,16 @@ #define _DS_WAYLAND_TIZEN_INPUT_DEVICE_PRIVATE_H_ #include "dswayland-server-tizen-extension.h" +#include "DSWaylandTizenInputDevice.h" namespace display_server { -class DSWaylandTizenInputDevicePrivate : public DSWaylandServer::tizen_input_device +class DSWaylandTizenInputDevicePrivate : public DSObjectPrivate, public DSWaylandServer::tizen_input_device { public: - DSWaylandTizenInputDevicePrivate(); + DSWaylandTizenInputDevicePrivate() = delete; + DSWaylandTizenInputDevicePrivate(DSWaylandTizenInputDevice *p_ptr); ~DSWaylandTizenInputDevicePrivate() override; protected: diff --git a/tests/DSWaylandTizenInputDevice-test.cpp b/tests/DSWaylandTizenInputDevice-test.cpp new file mode 100644 index 0000000..39a28c4 --- /dev/null +++ b/tests/DSWaylandTizenInputDevice-test.cpp @@ -0,0 +1,21 @@ +#include "libds-tests.h" +#include "DSWaylandTizenInputDevice.h" + +using namespace display_server; + +class DSWaylandTizenInputDeviceTest : public ::testing::Test +{ +public: + void SetUp(void) override + {} + void TearDown(void) override + {} +}; + +TEST_F(DSWaylandTizenInputDeviceTest, NewDSWaylandTizenInputDevice) +{ + DSWaylandTizenInputDevice *inputDevice = new DSWaylandTizenInputDevice; + delete inputDevice; + EXPECT_TRUE(true); +} + diff --git a/tests/DSWaylandTizenInputDeviceManager-test.cpp b/tests/DSWaylandTizenInputDeviceManager-test.cpp new file mode 100644 index 0000000..963bb1b --- /dev/null +++ b/tests/DSWaylandTizenInputDeviceManager-test.cpp @@ -0,0 +1,21 @@ +#include "libds-tests.h" +#include "DSWaylandTizenInputDeviceManager.h" + +using namespace display_server; + +class DSWaylandTizenInputDeviceManagerTest : public ::testing::Test +{ +public: + void SetUp(void) override + {} + void TearDown(void) override + {} +}; + +TEST_F(DSWaylandTizenInputDeviceManagerTest, NewDSWaylandTizenInputDeviceManager) +{ + DSWaylandTizenInputDeviceManager *inputDeviceManager = new DSWaylandTizenInputDeviceManager; + delete inputDeviceManager; + EXPECT_TRUE(true); +} + diff --git a/tests/meson.build b/tests/meson.build index 9f9fc8c..06ffc85 100644 --- a/tests/meson.build +++ b/tests/meson.build @@ -15,6 +15,8 @@ libds_tests_srcs = [ 'DSDebugLog-test.cpp', 'DSDisplayDeviceTDMImpl-test.cpp', 'DSSignal-test.cpp', + 'DSWaylandTizenInputDeviceManager-test.cpp', + 'DSWaylandTizenInputDevice-test.cpp', ] gmock_dep = dependency('gmock', method : 'pkg-config') -- 2.7.4 From 9e26fbd320dccefd2684261acf415e253bd9f01d Mon Sep 17 00:00:00 2001 From: SooChan Lim Date: Mon, 29 Jun 2020 19:25:16 +0900 Subject: [PATCH 04/16] samples: build exampleCompositor.cpp exampleCompositor binary cannot execute right now. :) Change-Id: Ib755e65caffbad20076b530b8cea819515d03643 --- samples/meson.build | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/samples/meson.build b/samples/meson.build index 1380272..4371026 100644 --- a/samples/meson.build +++ b/samples/meson.build @@ -18,3 +18,10 @@ executable('exampleProperty', install_dir : libds_prefix_bindir, install : true ) + +executable('exampleCompositor', + 'exampleCompositor.cpp', + dependencies : libds_declared_dep, + install_dir : libds_prefix_bindir, + install : true + ) \ No newline at end of file -- 2.7.4 From b4c09366da023361e03f406b514735e5209ce0f7 Mon Sep 17 00:00:00 2001 From: Sung-Jin Park Date: Tue, 30 Jun 2020 16:01:33 +0900 Subject: [PATCH 05/16] DSCompositor: implements run(), basic functions using ecore APIs Change-Id: I162a30627a19b5e5f23f188f47bf7158f3e545f5 Signed-off-by: Sung-Jin Park --- packaging/libds.spec | 1 + src/DSCompositor/DSCompositor.cpp | 56 +++++++++++++++++++++++++++++++++++++-- src/DSCompositor/DSCompositor.h | 7 +++++ src/meson.build | 3 ++- tests/DSCompositor-test.cpp | 21 ++++++++++++++- tests/meson.build | 3 ++- 6 files changed, 86 insertions(+), 5 deletions(-) diff --git a/packaging/libds.spec b/packaging/libds.spec index 0485e8a..a1f8c84 100644 --- a/packaging/libds.spec +++ b/packaging/libds.spec @@ -19,6 +19,7 @@ BuildRequires: pkgconfig(tizen-launch-server) BuildRequires: pkgconfig(tizen-surface-server) BuildRequires: pkgconfig(xdg-shell-unstable-v6-server) BuildRequires: pkgconfig(xdg-shell-server) +BuildRequires: pkgconfig(ecore) %description diff --git a/src/DSCompositor/DSCompositor.cpp b/src/DSCompositor/DSCompositor.cpp index 81b4dff..10de008 100644 --- a/src/DSCompositor/DSCompositor.cpp +++ b/src/DSCompositor/DSCompositor.cpp @@ -1,17 +1,69 @@ #include "DSCompositor.h" +#include + namespace display_server { DSCompositor::DSCompositor() -{} + : __running(false), + __init(false) +{ + init(); +} DSCompositor::~DSCompositor() {} +bool DSCompositor::isRunning() +{ + return __running; +} + +bool DSCompositor::isInitDone() +{ + return __init; +} + +bool DSCompositor::init() +{ + if (__init) + { + return true; + } + + if (ecore_init()) + { + __init = true; + } + + return __init; +} + + bool DSCompositor::run() { - return false; + if (!__init) + { + return false; + } + + __running = true; + ecore_main_loop_begin(); + __running = false; + + return true; +} + +bool DSCompositor::quit() +{ + if (!__init || !__running) + { + return false; + } + + ecore_main_loop_quit(); + return true; } } // namespace display_server \ No newline at end of file diff --git a/src/DSCompositor/DSCompositor.h b/src/DSCompositor/DSCompositor.h index df25b2a..250484b 100644 --- a/src/DSCompositor/DSCompositor.h +++ b/src/DSCompositor/DSCompositor.h @@ -9,10 +9,17 @@ public: DSCompositor(); virtual ~DSCompositor(); + bool isRunning(); + bool isInitDone(); + + bool init(); bool run(); + bool quit(); private: /* data */ + bool __running; + bool __init; }; } diff --git a/src/meson.build b/src/meson.build index 224fcf5..9ccbde6 100644 --- a/src/meson.build +++ b/src/meson.build @@ -72,6 +72,7 @@ install_headers( ) pkgconfig = import('pkgconfig') +ecore_dep = dependency('ecore') dlog_dep = dependency('dlog') libtdm_dep = dependency('libtdm') wayland_dep = dependency('wayland-server') @@ -112,7 +113,7 @@ libds_include_dirs = include_directories( libds_lib = shared_library( 'libds', libds_srcs, - dependencies : [dlog_dep, libtdm_dep, wayland_dep, tizen_ext_deps], + dependencies : [dlog_dep, libtdm_dep, wayland_dep, tizen_ext_deps, ecore_dep], include_directories : [libds_include_dirs], version : meson.project_version(), install : true diff --git a/tests/DSCompositor-test.cpp b/tests/DSCompositor-test.cpp index 4e50ed2..cfaca5c 100644 --- a/tests/DSCompositor-test.cpp +++ b/tests/DSCompositor-test.cpp @@ -1,5 +1,6 @@ #include "libds-tests.h" #include "DSCompositor.h" +#include using namespace display_server; @@ -23,5 +24,23 @@ TEST_F(DSComopsitorTest, BasicMethods) { DSCompositor compositor; - EXPECT_TRUE(compositor.run() == true); + Ecore_Timer *timer = nullptr; + double delayInSecond = 3.0; + auto cb = [](void *data) -> Eina_Bool { + DSCompositor *comp = (DSCompositor *)data; + + EXPECT_TRUE(comp->isRunning() == true); + + comp->quit(); + return EINA_FALSE; + }; + + timer = ecore_timer_loop_add(delayInSecond, cb, &compositor); + EXPECT_TRUE(timer != nullptr); + + if (timer != nullptr) + { + EXPECT_TRUE(compositor.isInitDone() == true); + EXPECT_TRUE(compositor.run() == true); + } } diff --git a/tests/meson.build b/tests/meson.build index 06ffc85..eca62d1 100644 --- a/tests/meson.build +++ b/tests/meson.build @@ -20,11 +20,12 @@ libds_tests_srcs = [ ] gmock_dep = dependency('gmock', method : 'pkg-config') +ecore_dep = dependency('ecore', method : 'pkg-config') executable( 'libds-tests', libds_tests_srcs, - dependencies : [libds_declared_dep, gmock_dep], + dependencies : [libds_declared_dep, gmock_dep, ecore_dep], install_dir : libds_prefix_bindir, install : true ) -- 2.7.4 From 84ee4db78b5ec528a33ebdf155dcb13ef2c994fb Mon Sep 17 00:00:00 2001 From: Junkyeong Kim Date: Wed, 1 Jul 2020 17:00:33 +0900 Subject: [PATCH 06/16] DSWaylandServer: add wl_output interface related prototype codes Change-Id: I9269b2be415cba8e0ae84d40bb6588231d9f7622 --- src/DSWaylandServer/DSWaylandOutput.cpp | 33 ++++++++++++++++++++++++++++ src/DSWaylandServer/DSWaylandOutput.h | 31 ++++++++++++++++++++++++++ src/DSWaylandServer/DSWaylandOutputPrivate.h | 26 ++++++++++++++++++++++ src/meson.build | 3 +++ tests/DSWaylandOutput-test.cpp | 20 +++++++++++++++++ tests/meson.build | 1 + 6 files changed, 114 insertions(+) create mode 100644 src/DSWaylandServer/DSWaylandOutput.cpp create mode 100644 src/DSWaylandServer/DSWaylandOutput.h create mode 100644 src/DSWaylandServer/DSWaylandOutputPrivate.h create mode 100644 tests/DSWaylandOutput-test.cpp diff --git a/src/DSWaylandServer/DSWaylandOutput.cpp b/src/DSWaylandServer/DSWaylandOutput.cpp new file mode 100644 index 0000000..1d47d49 --- /dev/null +++ b/src/DSWaylandServer/DSWaylandOutput.cpp @@ -0,0 +1,33 @@ +#include "DSWaylandOutput.h" +#include "DSWaylandOutputPrivate.h" + +namespace display_server +{ +DSWaylandOutputPrivate::DSWaylandOutputPrivate(DSWaylandOutput *p_ptr) + : DSObjectPrivate(p_ptr) +{ +} +DSWaylandOutputPrivate::~DSWaylandOutputPrivate() +{ +} + +void DSWaylandOutputPrivate::output_bind_resource(wl_output::Resource *resource) +{ + //To Do + //send scale, geometry, mode, done +} + +void DSWaylandOutputPrivate::output_release(wl_output::Resource *resource) +{ +} + +DSWaylandOutput::DSWaylandOutput() + : DSObject(std::make_unique(this)) +{ +} + +DSWaylandOutput::~DSWaylandOutput() +{ +} + +} // namespace display_server \ No newline at end of file diff --git a/src/DSWaylandServer/DSWaylandOutput.h b/src/DSWaylandServer/DSWaylandOutput.h new file mode 100644 index 0000000..ce93851 --- /dev/null +++ b/src/DSWaylandServer/DSWaylandOutput.h @@ -0,0 +1,31 @@ +#ifndef _DS_WAYLAND_OUTPUT_H_ +#define _DS_WAYLAND_OUTPUT_H_ + +#include + +namespace display_server +{ + +class DSWaylandOutputPrivate; + +class DSWaylandOutput : public DSObject +{ +public: + DSWaylandOutput(); + virtual ~DSWaylandOutput(); + +private: + inline DSWaylandOutputPrivate *__d_func() + { + return reinterpret_cast(_d_ptr.get()); + } + inline const DSWaylandOutputPrivate *__d_func() const + { + return reinterpret_cast(_d_ptr.get()); + } + friend class DSWaylandOutputPrivate; +}; + +} + +#endif diff --git a/src/DSWaylandServer/DSWaylandOutputPrivate.h b/src/DSWaylandServer/DSWaylandOutputPrivate.h new file mode 100644 index 0000000..8dd08e3 --- /dev/null +++ b/src/DSWaylandServer/DSWaylandOutputPrivate.h @@ -0,0 +1,26 @@ +#ifndef _DS_WAYLAND_OUTPUT_PRIVATE_H_ +#define _DS_WAYLAND_OUTPUT_PRIVATE_H_ + +#include "dswayland-server-wayland.h" +#include "DSWaylandOutput.h" + +namespace display_server +{ + +class DSWaylandOutputPrivate : public DSObjectPrivate, public DSWaylandServer::wl_output +{ +public: + DSWaylandOutputPrivate() = delete; + DSWaylandOutputPrivate(DSWaylandOutput *p_ptr); + ~DSWaylandOutputPrivate() override; + +protected: + void output_bind_resource(Resource *resource) override; + void output_release(Resource *resource) override; +private: + /* data */ +}; + +} + +#endif diff --git a/src/meson.build b/src/meson.build index 9ccbde6..db4e54b 100644 --- a/src/meson.build +++ b/src/meson.build @@ -55,6 +55,9 @@ libds_wayland_srcs = [ 'DSWaylandServer/dswayland-server-text.h', 'DSWaylandServer/dswayland-server-tizen-launch.cpp', 'DSWaylandServer/dswayland-server-tizen-launch.h', + 'DSWaylandServer/DSWaylandOutput.cpp', + 'DSWaylandServer/DSWaylandOutput.h', + 'DSWaylandServer/DSWaylandOutputPrivate.h', 'DSWaylandServer/DSWaylandTizenInputDevice.cpp', 'DSWaylandServer/DSWaylandTizenInputDevice.h', 'DSWaylandServer/DSWaylandTizenInputDevicePrivate.h', diff --git a/tests/DSWaylandOutput-test.cpp b/tests/DSWaylandOutput-test.cpp new file mode 100644 index 0000000..3f90d0b --- /dev/null +++ b/tests/DSWaylandOutput-test.cpp @@ -0,0 +1,20 @@ +#include "libds-tests.h" +#include "DSWaylandOutput.h" + +using namespace display_server; + +class DSWaylandOutputTest : public ::testing::Test +{ +public: + void SetUp(void) override + {} + void TearDown(void) override + {} +}; + +TEST_F(DSWaylandOutputTest, NewDSWaylandOutput) +{ + DSWaylandOutput *output = new DSWaylandOutput; + delete output; + EXPECT_TRUE(true); +} diff --git a/tests/meson.build b/tests/meson.build index eca62d1..abf9099 100644 --- a/tests/meson.build +++ b/tests/meson.build @@ -15,6 +15,7 @@ libds_tests_srcs = [ 'DSDebugLog-test.cpp', 'DSDisplayDeviceTDMImpl-test.cpp', 'DSSignal-test.cpp', + 'DSWaylandOutput-test.cpp', 'DSWaylandTizenInputDeviceManager-test.cpp', 'DSWaylandTizenInputDevice-test.cpp', ] -- 2.7.4 From 8e4ed2230676d0af03ffdf6dec45fbaa6a74b78e Mon Sep 17 00:00:00 2001 From: Sung-Jin Park Date: Wed, 1 Jul 2020 16:27:41 +0900 Subject: [PATCH 07/16] DSObject: add/implments setName function Change-Id: I5477271a66685267348a255b539fd82e53d76241 Signed-off-by: Sung-Jin Park --- src/DSObject/DSObject.cpp | 5 +++++ src/DSObject/DSObject.h | 1 + src/DSObject/DSObjectPrivate.cpp | 5 +++++ src/DSObject/DSObjectPrivate.h | 2 ++ 4 files changed, 13 insertions(+) diff --git a/src/DSObject/DSObject.cpp b/src/DSObject/DSObject.cpp index d90bc75..2c0f327 100644 --- a/src/DSObject/DSObject.cpp +++ b/src/DSObject/DSObject.cpp @@ -37,6 +37,11 @@ std::string DSObject::getName(void) return __d_func()->getName(); } +void DSObject::setName(std::string name) +{ + __d_func()->setName(name); +} + DSObject::DSObject(std::unique_ptr ptr) { _d_ptr = std::move(ptr); diff --git a/src/DSObject/DSObject.h b/src/DSObject/DSObject.h index 1ae29d3..1548b3f 100644 --- a/src/DSObject/DSObject.h +++ b/src/DSObject/DSObject.h @@ -22,6 +22,7 @@ public: void setProperty(std::string key, const DSPropertyVariant &data, DSPropertyType type); const DSPropertyVariant &getProperty(std::string key); std::string getName(void); + void setName(std::string name); protected: DSObject(std::unique_ptr ptr); diff --git a/src/DSObject/DSObjectPrivate.cpp b/src/DSObject/DSObjectPrivate.cpp index f33eac5..6dee536 100644 --- a/src/DSObject/DSObjectPrivate.cpp +++ b/src/DSObject/DSObjectPrivate.cpp @@ -56,6 +56,11 @@ namespace display_server return __type_info.name; } + void DSObjectPrivate::setName(std::string name) + { + __type_info.name = name; + } + DSObjectPrivate& DSObjectPrivate::operator=(DSObjectPrivate &&p) { if (__p_ptr) diff --git a/src/DSObject/DSObjectPrivate.h b/src/DSObject/DSObjectPrivate.h index eddbfca..5eb8f58 100644 --- a/src/DSObject/DSObjectPrivate.h +++ b/src/DSObject/DSObjectPrivate.h @@ -25,6 +25,7 @@ public: void setProperty(std::string key, const DSPropertyVariant &data, DSPropertyType type); const DSPropertyVariant &getProperty(std::string key); std::string getName(void); + void setName(std::string name); DSObjectPrivate &operator=(DSObjectPrivate &&p); //move assignment @@ -32,6 +33,7 @@ public: { return __p_ptr; } + private: struct { -- 2.7.4 From f4d8f2c262a89b0f4e64f521b2a4292253706cbf Mon Sep 17 00:00:00 2001 From: Sung-Jin Park Date: Wed, 1 Jul 2020 16:49:11 +0900 Subject: [PATCH 08/16] DSCore: add initial DSCore macros Change-Id: I955425fb4bed59e60253cfb7c4d3774b4095fcdf Signed-off-by: Sung-Jin Park --- src/DSCore/DSCore.h | 40 ++++++++++++++++++++++++++++++++++++++++ src/meson.build | 2 ++ 2 files changed, 42 insertions(+) create mode 100644 src/DSCore/DSCore.h diff --git a/src/DSCore/DSCore.h b/src/DSCore/DSCore.h new file mode 100644 index 0000000..5a99e3b --- /dev/null +++ b/src/DSCore/DSCore.h @@ -0,0 +1,40 @@ +#ifndef __DS_CORE_H__ +#define __DS_CORE_H__ + +/* Macros for visibility */ +#define DS_DECL_EXPORT __attribute__((visibility("default"))) +#define DS_DECL_HIDDEN __attribute__((visibility("hidden"))) + +/* Macros for supporting PImpl(Pointer to implementation) Idiom */ +/* Regarding PImpl Idiom, refer to https://www.geeksforgeeks.org/pimpl-idiom-in-c-with-examples */ +#define DS_DECLARE_PUBLIC(Class) \ + inline Class* p_func() { return static_cast(__p_ptr); } \ + inline const Class* p_func() const { return static_cast(__p_ptr); } \ + friend class Class; + +#define DS_DECLARE_PUBLIC_PTR(Class) \ + Class* __p_ptr; + +#define DS_DECLARE_PRIVATE(Class) \ + inline Class##Private *__d_func() \ + { return reinterpret_cast(_d_ptr.get()); } \ + inline const Class##Private *__d_func() const \ + { return reinterpret_cast(_d_ptr.get()); } \ + friend class Class##Private; + +#define DS_DECLARE_PRIVATE_PTR(Class) \ + std::unique_ptr _d_ptr; \ + inline Class(std::unique_ptr ptr) \ + { _d_ptr = std::move(ptr); } + +#define DS_INIT_PRIVATE_PTR(Class) \ + _d_ptr(std::make_unique(this)) + +#define DS_GET_PRIV(Class) \ + Class##Private* const priv = __d_func() + +#define DS_GET_PUB(Class) \ + Class * const pub = p_func() + +#endif //__DS_CORE_H__ + diff --git a/src/meson.build b/src/meson.build index db4e54b..ccea800 100644 --- a/src/meson.build +++ b/src/meson.build @@ -38,6 +38,7 @@ libds_srcs = [ 'DSSeat/DSSeat.cpp', 'DSSignal/DSSignal.cpp', 'DSSignal/DSSignal.h', + 'DSCore/DSCore.h', ] libds_wayland_srcs = [ @@ -110,6 +111,7 @@ libds_include_dirs = include_directories( './DSRender', './DSSeat', './DSSignal', + './DSCore', './DSWaylandServer', ) -- 2.7.4 From 427ce1ad75048c4a3cdbaa67fa9625ecef4d1f6b Mon Sep 17 00:00:00 2001 From: Sung-Jin Park Date: Wed, 1 Jul 2020 16:59:07 +0900 Subject: [PATCH 09/16] DSObject: add test cases (DSObjectTest.*) Change-Id: I7a273543675a598bef4ad08927d56b0f78300a2e Signed-off-by: Sung-Jin Park --- tests/DSObject-test.cpp | 189 ++++++++++++++++++++++++++++++++++++++++++++++++ tests/meson.build | 1 + 2 files changed, 190 insertions(+) create mode 100644 tests/DSObject-test.cpp diff --git a/tests/DSObject-test.cpp b/tests/DSObject-test.cpp new file mode 100644 index 0000000..eb500da --- /dev/null +++ b/tests/DSObject-test.cpp @@ -0,0 +1,189 @@ +#include "libds-tests.h" +#include "DSCore.h" +#include "DSObject.h" + +using namespace display_server; + +class DSObjectTest : public ::testing::Test +{ +public: + void SetUp(void) override + {} + void TearDown(void) override + {} +}; + +/* Temporary classes for implemting PImpl Idiom based on DSObject/DSObjectPrivate classes */ +class TempObject; +class TempObjectPrivate : public DSObjectPrivate +{ +public: + TempObjectPrivate() = delete; + TempObjectPrivate(TempObject *p_ptr); + ~TempObjectPrivate(); + + unsigned int funcMiddle(void); + +protected: + DS_DECLARE_PUBLIC(TempObject) + +private: + DS_DECLARE_PUBLIC_PTR(TempObject) +}; + +class TempObject : public DSObject +{ +public: + explicit TempObject(); + virtual ~TempObject(); + + unsigned int funcEnter(unsigned int val); + unsigned int funcExit(); + +protected: + DS_DECLARE_PRIVATE_PTR(TempObject) + +private: + unsigned int __val = 0; + + DS_DECLARE_PRIVATE(TempObject) +}; + +TempObjectPrivate::TempObjectPrivate(TempObject *p_ptr) + : DSObjectPrivate(p_ptr), __p_ptr(p_ptr) +{ + ; +} + +TempObjectPrivate::~TempObjectPrivate() +{ + ; +} + +unsigned int TempObjectPrivate::funcMiddle(void) +{ + DS_GET_PUB(TempObject); + + return pub->funcExit(); +} + +TempObject::TempObject() + : DS_INIT_PRIVATE_PTR(TempObject) +{ + __val = 0; +} + +unsigned int TempObject::funcEnter(unsigned int val) +{ + DS_GET_PRIV(TempObject); + __val = val; + return priv->funcMiddle(); +} + +unsigned int TempObject::funcExit() +{ + return __val; +} + +TempObject::~TempObject() +{ + ; +} + +/* Test cases */ +TEST_F(DSObjectTest, NewDSObject) +{ + DSObject *obj = new DSObject; + EXPECT_TRUE(obj != nullptr); + + if (obj) + delete obj; +} + +TEST_F(DSObjectTest, DSObjectSetGetName) +{ + std::string gName; + + DSObject *obj = new DSObject(); + EXPECT_TRUE(obj != nullptr); + + if (obj) + { + obj->setName(std::string{"DSObject"}); + gName = obj->getName(); + EXPECT_TRUE(gName.empty() == false); + EXPECT_TRUE(gName.compare(std::string{"DSObject"}) == 0); + + if (!gName.empty()) + gName.clear(); + + delete obj; + } +} + +TEST_F(DSObjectTest, NewDSObjecPrivate) +{ + DSObject *obj = nullptr; + DSObjectPrivate *objPrivate = nullptr; + + obj = new DSObject(); + EXPECT_TRUE(obj != nullptr); + + if (obj) + { + objPrivate = new DSObjectPrivate(obj); + EXPECT_TRUE(objPrivate != nullptr); + + if (objPrivate) + delete objPrivate; + + delete obj; + } +} + +TEST_F(DSObjectTest, NewTempObject) +{ + TempObject *obj = new TempObject(); + EXPECT_TRUE(obj != nullptr); + + if (obj) + delete obj; +} + +TEST_F(DSObjectTest, DerivedObjectSetGetName) +{ + std::string gName; + + TempObject *obj = new TempObject(); + EXPECT_TRUE(obj != nullptr); + + if (obj) + { + obj->setName(std::string{"TempObject"}); + gName = obj->getName(); + EXPECT_TRUE(gName.empty() == false); + EXPECT_TRUE(gName.compare(std::string{"TempObject"}) == 0); + + if (!gName.empty()) + gName.clear(); + + delete obj; + } +} + +TEST_F(DSObjectTest, DerivedObjectPimpl) +{ + unsigned int vIn = 0xdeadbeaf; + unsigned int vOut = 0; + + TempObject *obj = new TempObject(); + EXPECT_TRUE(obj != nullptr); + + if (obj) + { + vOut = obj->funcEnter(vIn); + EXPECT_TRUE(vOut == vIn); + + delete obj; + } +} diff --git a/tests/meson.build b/tests/meson.build index abf9099..fe400da 100644 --- a/tests/meson.build +++ b/tests/meson.build @@ -18,6 +18,7 @@ libds_tests_srcs = [ 'DSWaylandOutput-test.cpp', 'DSWaylandTizenInputDeviceManager-test.cpp', 'DSWaylandTizenInputDevice-test.cpp', + 'DSObject-test.cpp', ] gmock_dep = dependency('gmock', method : 'pkg-config') -- 2.7.4 From 26b52bdf36e601fe68048d57d5c9228db321f259 Mon Sep 17 00:00:00 2001 From: SooChan Lim Date: Thu, 2 Jul 2020 11:44:21 +0900 Subject: [PATCH 10/16] test: add DSDebugLog.h Change-Id: Iec2a366a99a43a13b63b18ac36a601a9877c788f --- tests/libds-tests.h | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/libds-tests.h b/tests/libds-tests.h index 3c8ff11..6f280b7 100644 --- a/tests/libds-tests.h +++ b/tests/libds-tests.h @@ -31,6 +31,7 @@ #include #include +#include "DSDebugLog.h" using ::testing::TestWithParam; using ::testing::Bool; -- 2.7.4 From c6830d3751a7e8bc4a9b4f8bb5b3ad8cd18df0cb Mon Sep 17 00:00:00 2001 From: SooChan Lim Date: Thu, 2 Jul 2020 12:37:16 +0900 Subject: [PATCH 11/16] DSBuffer: add some method to get the properties of DSBufferQueue int getBufferWidth() int getBufferHeight() void *getNativeBufferQueue() Change-Id: I04bb0a2c4b0bbba40b913f35edd16ca7a3dc55b1 --- src/DSBuffer/DSBufferQueueTBMImpl.cpp | 15 +++++++++++++++ src/DSBuffer/DSBufferQueueTBMImpl.h | 4 ++++ src/DSBuffer/IDSBufferQueue.h | 3 +++ tests/DSBufferTBMImpl-test.cpp | 9 +++++++++ 4 files changed, 31 insertions(+) diff --git a/src/DSBuffer/DSBufferQueueTBMImpl.cpp b/src/DSBuffer/DSBufferQueueTBMImpl.cpp index b1ed14d..2666866 100644 --- a/src/DSBuffer/DSBufferQueueTBMImpl.cpp +++ b/src/DSBuffer/DSBufferQueueTBMImpl.cpp @@ -22,6 +22,21 @@ DSBufferQueueTBMImpl::~DSBufferQueueTBMImpl() tbm_surface_queue_destroy(__tqueue); } +int DSBufferQueueTBMImpl::getBufferWidth() +{ + return __bufferWidth; +} + +int DSBufferQueueTBMImpl::getBufferHeight() +{ + return __bufferHeight; +} + +void *DSBufferQueueTBMImpl::getNativeBufferQueue() +{ + return (void *)__tqueue; +} + IDSBuffer *DSBufferQueueTBMImpl::dequeueBuffer() { // TODO: diff --git a/src/DSBuffer/DSBufferQueueTBMImpl.h b/src/DSBuffer/DSBufferQueueTBMImpl.h index 628f8f6..1a7c118 100644 --- a/src/DSBuffer/DSBufferQueueTBMImpl.h +++ b/src/DSBuffer/DSBufferQueueTBMImpl.h @@ -13,6 +13,10 @@ public: DSBufferQueueTBMImpl(int slotSize, int bufferWidth, int bufferHeight, IDSBuffer::Format format); ~DSBufferQueueTBMImpl(); + int getBufferWidth() override; + int getBufferHeight() override; + void *getNativeBufferQueue() override; + IDSBuffer *dequeueBuffer() override; bool enqueueBuffer(IDSBuffer *buffer) override; IDSBuffer *acquireBuffer() override; diff --git a/src/DSBuffer/IDSBufferQueue.h b/src/DSBuffer/IDSBufferQueue.h index ab3c144..17cc606 100644 --- a/src/DSBuffer/IDSBufferQueue.h +++ b/src/DSBuffer/IDSBufferQueue.h @@ -11,6 +11,9 @@ class IDSBufferQueue public: virtual ~IDSBufferQueue() = default; + virtual int getBufferWidth() = 0; + virtual int getBufferHeight() = 0; + virtual void *getNativeBufferQueue() = 0; virtual IDSBuffer *dequeueBuffer() = 0; virtual bool enqueueBuffer(IDSBuffer *buffer) = 0; virtual IDSBuffer *acquireBuffer() = 0; diff --git a/tests/DSBufferTBMImpl-test.cpp b/tests/DSBufferTBMImpl-test.cpp index 4a6d6a1..efc5a5f 100644 --- a/tests/DSBufferTBMImpl-test.cpp +++ b/tests/DSBufferTBMImpl-test.cpp @@ -26,6 +26,15 @@ TEST_F(DSBufferTBMImplTest, CreateBufferQueue) EXPECT_TRUE(bufferQueue.get() != nullptr); } +TEST_F(DSBufferTBMImplTest, CheckInitialValues) +{ + std::unique_ptr bufferQueue = std::make_unique(3, 100, 100, IDSBuffer::FORMAT_ARGB8888); + EXPECT_TRUE(bufferQueue.get() != nullptr); + EXPECT_TRUE(bufferQueue->getBufferWidth() == 100); + EXPECT_TRUE(bufferQueue->getBufferHeight() == 100); + EXPECT_TRUE(bufferQueue->getNativeBufferQueue() != nullptr); +} + TEST_F(DSBufferTBMImplTest, DequeueBuffer) { std::unique_ptr bufferQueue = std::make_unique(3, 100, 100, IDSBuffer::FORMAT_ARGB8888); -- 2.7.4 From 09d00af8d24dcf6ec528dc8fe63fbd5d66c6f083 Mon Sep 17 00:00:00 2001 From: SooChan Lim Date: Thu, 2 Jul 2020 12:39:35 +0900 Subject: [PATCH 12/16] DSBuffer: add getNativeBuffer on DSBUffer interface Change-Id: I2707aa6043cf1ff3d0e236d5a27e1d81aa5453fe --- src/DSBuffer/DSBufferTBMImpl.cpp | 5 +++++ src/DSBuffer/DSBufferTBMImpl.h | 2 ++ src/DSBuffer/IDSBuffer.h | 2 ++ 3 files changed, 9 insertions(+) diff --git a/src/DSBuffer/DSBufferTBMImpl.cpp b/src/DSBuffer/DSBufferTBMImpl.cpp index 93555d5..00d9ce2 100644 --- a/src/DSBuffer/DSBufferTBMImpl.cpp +++ b/src/DSBuffer/DSBufferTBMImpl.cpp @@ -20,6 +20,11 @@ DSBufferTBMImpl::~DSBufferTBMImpl() tbm_surface_destroy(__tsurface); } +void *DSBufferTBMImpl::getNativeBuffer() +{ + return (void *)__tsurface; +} + tbm_format DSBufferTBMImpl::getTBMFormat(IDSBuffer::Format &format) { tbm_format tformat = 0; // what is the error format? diff --git a/src/DSBuffer/DSBufferTBMImpl.h b/src/DSBuffer/DSBufferTBMImpl.h index ce2a37e..7cba1bc 100644 --- a/src/DSBuffer/DSBufferTBMImpl.h +++ b/src/DSBuffer/DSBufferTBMImpl.h @@ -13,6 +13,8 @@ public: DSBufferTBMImpl(int width, int height, IDSBuffer::Format format); ~DSBufferTBMImpl(); + void *getNativeBuffer() override; + static tbm_format getTBMFormat(IDSBuffer::Format &format); private: int __width; diff --git a/src/DSBuffer/IDSBuffer.h b/src/DSBuffer/IDSBuffer.h index 2e40f4c..d25e281 100644 --- a/src/DSBuffer/IDSBuffer.h +++ b/src/DSBuffer/IDSBuffer.h @@ -13,6 +13,8 @@ public: public: virtual ~IDSBuffer() = default; + + virtual void *getNativeBuffer() = 0; }; } -- 2.7.4 From a41d44dccd63a708340d002f7150e7286a8210f4 Mon Sep 17 00:00:00 2001 From: SooChan Lim Date: Thu, 2 Jul 2020 12:40:44 +0900 Subject: [PATCH 13/16] DSBuffer: add DSBufferTBMImpl constructor with tbm_surface_h as a parameter Change-Id: I74ee3614f46e73cfc125b2d22fa7eef399630613 --- src/DSBuffer/DSBufferTBMImpl.cpp | 7 +++++++ src/DSBuffer/DSBufferTBMImpl.h | 1 + 2 files changed, 8 insertions(+) diff --git a/src/DSBuffer/DSBufferTBMImpl.cpp b/src/DSBuffer/DSBufferTBMImpl.cpp index 00d9ce2..ef9014e 100644 --- a/src/DSBuffer/DSBufferTBMImpl.cpp +++ b/src/DSBuffer/DSBufferTBMImpl.cpp @@ -15,6 +15,13 @@ DSBufferTBMImpl::DSBufferTBMImpl(int width, int height, IDSBuffer::Format format } } +DSBufferTBMImpl::DSBufferTBMImpl(int width, int height, IDSBuffer::Format format, tbm_surface_h tsurface) + : __width{width}, + __height{height}, + __format{format}, + __tsurface{tsurface} +{} + DSBufferTBMImpl::~DSBufferTBMImpl() { tbm_surface_destroy(__tsurface); diff --git a/src/DSBuffer/DSBufferTBMImpl.h b/src/DSBuffer/DSBufferTBMImpl.h index 7cba1bc..5c821af 100644 --- a/src/DSBuffer/DSBufferTBMImpl.h +++ b/src/DSBuffer/DSBufferTBMImpl.h @@ -11,6 +11,7 @@ class DSBufferTBMImpl : public IDSBuffer { public: DSBufferTBMImpl(int width, int height, IDSBuffer::Format format); + DSBufferTBMImpl(int width, int height, IDSBuffer::Format format, tbm_surface_h tsurface); ~DSBufferTBMImpl(); void *getNativeBuffer() override; -- 2.7.4 From b0421ab2fcca321cd537052806c1b38b53e1fc60 Mon Sep 17 00:00:00 2001 From: SooChan Lim Date: Thu, 2 Jul 2020 12:42:40 +0900 Subject: [PATCH 14/16] DSBuffer: implement the DSBufferQueue methods implement dequeue, enqueue, aquire and release. Change-Id: I7e90cf7acbb1b36c528c17586a97b266fa440d03 --- src/DSBuffer/DSBufferQueueTBMImpl.cpp | 79 +++++++++++++++++++++++---- src/DSBuffer/DSBufferQueueTBMImpl.h | 10 ++-- src/DSBuffer/IDSBufferQueue.h | 9 +-- src/DSBuffer/plantuml/IDSBufferQueue.plantuml | 15 ++--- tests/DSBufferTBMImpl-test.cpp | 50 ++++++++++++----- 5 files changed, 122 insertions(+), 41 deletions(-) mode change 100644 => 100755 src/DSBuffer/plantuml/IDSBufferQueue.plantuml diff --git a/src/DSBuffer/DSBufferQueueTBMImpl.cpp b/src/DSBuffer/DSBufferQueueTBMImpl.cpp index 2666866..91d3f70 100644 --- a/src/DSBuffer/DSBufferQueueTBMImpl.cpp +++ b/src/DSBuffer/DSBufferQueueTBMImpl.cpp @@ -1,6 +1,7 @@ #include "DSBufferQueueTBMImpl.h" #include "DSBufferTBMImpl.h" #include "DSDebugLog.h" +#include namespace display_server { @@ -19,6 +20,7 @@ DSBufferQueueTBMImpl::DSBufferQueueTBMImpl(int slotSize, int bufferWidth, int bu DSBufferQueueTBMImpl::~DSBufferQueueTBMImpl() { + __bufferVector.erase(__bufferVector.begin(), __bufferVector.end()); tbm_surface_queue_destroy(__tqueue); } @@ -37,28 +39,81 @@ void *DSBufferQueueTBMImpl::getNativeBufferQueue() return (void *)__tqueue; } -IDSBuffer *DSBufferQueueTBMImpl::dequeueBuffer() +std::shared_ptr DSBufferQueueTBMImpl::dequeueBuffer() { - // TODO: - return nullptr; + tbm_surface_queue_error_e terror = TBM_SURFACE_QUEUE_ERROR_NONE; + tbm_surface_h tsurface; + + terror = tbm_surface_queue_dequeue(__tqueue, &tsurface); + if (terror != TBM_SURFACE_QUEUE_ERROR_NONE) { + DSLOG_ERR("BuffeQueueTBM", "tbm_surface_queue_dequeue fails.\n"); + return nullptr; + } + + auto isMatchFunc = [tsurface](std::shared_ptr buffer) -> bool { + return ((tbm_surface_h)buffer->getNativeBuffer() == tsurface); + }; + + auto iter= std::find_if(__bufferVector.begin(), __bufferVector.end(), isMatchFunc); + if (iter == __bufferVector.end()) { + // create a IDSBuffer with tsurface. + __bufferVector.push_back(std::make_shared(__bufferWidth, __bufferWidth, __format, tsurface)); + + return __bufferVector.back(); + } + + return *iter; } -bool DSBufferQueueTBMImpl::enqueueBuffer(IDSBuffer *buffer) +bool DSBufferQueueTBMImpl::enqueueBuffer(std::shared_ptr buffer) { - // TODO: - return false; + tbm_surface_queue_error_e terror = TBM_SURFACE_QUEUE_ERROR_NONE; + tbm_surface_h tsurface = (tbm_surface_h)buffer->getNativeBuffer(); + + terror = tbm_surface_queue_enqueue(__tqueue, tsurface); + if (terror != TBM_SURFACE_QUEUE_ERROR_NONE) { + DSLOG_ERR("BuffeQueueTBM", "tbm_surface_queue_enqueue fails."); + return false; + } + + return true; } -IDSBuffer *DSBufferQueueTBMImpl::acquireBuffer() +std::shared_ptr DSBufferQueueTBMImpl::acquireBuffer() { - // TODO: - return nullptr; + tbm_surface_queue_error_e terror = TBM_SURFACE_QUEUE_ERROR_NONE; + tbm_surface_h tsurface; + + terror = tbm_surface_queue_acquire(__tqueue, &tsurface); + if (terror != TBM_SURFACE_QUEUE_ERROR_NONE) { + DSLOG_ERR("BuffeQueueTBM", "tbm_surface_queue_enqueue fails."); + return nullptr; + } + + auto isMatchFunc = [tsurface](std::shared_ptr buffer) -> bool { + return ((tbm_surface_h)buffer->getNativeBuffer() == tsurface); + }; + + auto iter= std::find_if(__bufferVector.begin(), __bufferVector.end(), isMatchFunc); + if (iter == __bufferVector.end()) { + DSLOG_ERR("BuffeQueueTBM", "No Buffer in this BufferQueue."); + return nullptr; + } + + return *iter; } -bool DSBufferQueueTBMImpl::releaseBuffer(IDSBuffer *buffer) +bool DSBufferQueueTBMImpl::releaseBuffer(std::shared_ptr buffer) { - // TODO: - return false; + tbm_surface_queue_error_e terror = TBM_SURFACE_QUEUE_ERROR_NONE; + + terror = tbm_surface_queue_release(__tqueue, (tbm_surface_h)buffer->getNativeBuffer()); + if (terror != TBM_SURFACE_QUEUE_ERROR_NONE) { + DSLOG_ERR("BuffeQueueTBM", "tbm_surface_queue_release fails."); + return false; + } + + return true; } } diff --git a/src/DSBuffer/DSBufferQueueTBMImpl.h b/src/DSBuffer/DSBufferQueueTBMImpl.h index 1a7c118..1da8ae0 100644 --- a/src/DSBuffer/DSBufferQueueTBMImpl.h +++ b/src/DSBuffer/DSBufferQueueTBMImpl.h @@ -3,6 +3,7 @@ #include "IDSBufferQueue.h" #include +#include namespace display_server { @@ -17,10 +18,10 @@ public: int getBufferHeight() override; void *getNativeBufferQueue() override; - IDSBuffer *dequeueBuffer() override; - bool enqueueBuffer(IDSBuffer *buffer) override; - IDSBuffer *acquireBuffer() override; - bool releaseBuffer(IDSBuffer *buffer) override; + std::shared_ptr dequeueBuffer() override; + bool enqueueBuffer(std::shared_ptr buffer) override; + std::shared_ptr acquireBuffer() override; + bool releaseBuffer(std::shared_ptr buffer) override; private: int __slotSize; @@ -28,6 +29,7 @@ private: int __bufferHeight; IDSBuffer::Format __format; tbm_surface_queue_h __tqueue; + std::vector> __bufferVector; }; } diff --git a/src/DSBuffer/IDSBufferQueue.h b/src/DSBuffer/IDSBufferQueue.h index 17cc606..a3e719d 100644 --- a/src/DSBuffer/IDSBufferQueue.h +++ b/src/DSBuffer/IDSBufferQueue.h @@ -2,6 +2,7 @@ #define __I_DS_BUFFER_QUEUE_H_ #include "IDSBuffer.h" +#include namespace display_server { @@ -14,10 +15,10 @@ public: virtual int getBufferWidth() = 0; virtual int getBufferHeight() = 0; virtual void *getNativeBufferQueue() = 0; - virtual IDSBuffer *dequeueBuffer() = 0; - virtual bool enqueueBuffer(IDSBuffer *buffer) = 0; - virtual IDSBuffer *acquireBuffer() = 0; - virtual bool releaseBuffer(IDSBuffer *buffer) = 0; + virtual std::shared_ptr dequeueBuffer() = 0; + virtual bool enqueueBuffer(std::shared_ptr ) = 0; + virtual std::shared_ptr acquireBuffer() = 0; + virtual bool releaseBuffer(std::shared_ptr ) = 0; }; } diff --git a/src/DSBuffer/plantuml/IDSBufferQueue.plantuml b/src/DSBuffer/plantuml/IDSBufferQueue.plantuml old mode 100644 new mode 100755 index fec0c13..65fc114 --- a/src/DSBuffer/plantuml/IDSBufferQueue.plantuml +++ b/src/DSBuffer/plantuml/IDSBufferQueue.plantuml @@ -1,3 +1,4 @@ +@startuml class Client { } @@ -7,10 +8,10 @@ Client -[hidden]- IDSBuffer interface IDSBufferQueue { - + virtual bool enqueueBuffer(IDSBuffer *buffer) = 0; - + virtual IDSBuffer *dequeueBuffer() = 0; - + virtual IDSBuffer *acquireBuffer() = 0; - + virtual bool releaseBuffer(IDSBuffer *buffer) = 0; + + virtual bool enqueueBuffer(std::shared_ptr buffer) = 0; + + virtual std::shared_ptr dequeueBuffer() = 0; + + virtual std::shared_ptr acquireBuffer() = 0; + + virtual bool releaseBuffer(std::shared_ptr buffer) = 0; } IDSBuffer "0..*" *-up- "1" DSBufferQueueTBMImpl @@ -28,10 +29,10 @@ class DSBufferQueueTBMImpl + DSBufferQueueTBMImpl(int slotSize, int bufferWidth, int bufferHeight, IDSBuffer::Format format); + ~DSBufferQueueTBMImpl(); - + bool enqueueBuffer(IDSBuffer *buffer) override; + + bool enqueueBuffer(std::shared_ptr buffer) override; + IDSBuffer *dequeueBuffer() override; + IDSBuffer *acquireBuffer() override; - + bool releaseBuffer(IDSBuffer *buffer) override; + + bool releaseBuffer(std::shared_ptr buffer) override; - int __slotSize; - int __bufferWidth; @@ -42,5 +43,5 @@ class DSBufferQueueTBMImpl IDSBuffer <|-down-- DSBufferTBMImpl IDSBuffer <|-down-- DSBufferSHMImpl - +@enduml diff --git a/tests/DSBufferTBMImpl-test.cpp b/tests/DSBufferTBMImpl-test.cpp index efc5a5f..f2758e8 100644 --- a/tests/DSBufferTBMImpl-test.cpp +++ b/tests/DSBufferTBMImpl-test.cpp @@ -40,7 +40,7 @@ TEST_F(DSBufferTBMImplTest, DequeueBuffer) std::unique_ptr bufferQueue = std::make_unique(3, 100, 100, IDSBuffer::FORMAT_ARGB8888); EXPECT_TRUE(bufferQueue.get() != nullptr); - IDSBuffer *buffer = bufferQueue->dequeueBuffer(); + std::shared_ptr buffer = bufferQueue->dequeueBuffer(); EXPECT_TRUE(buffer != nullptr); } @@ -49,10 +49,9 @@ TEST_F(DSBufferTBMImplTest, EnqueueBuffer) std::unique_ptr bufferQueue = std::make_unique(3, 100, 100, IDSBuffer::FORMAT_ARGB8888); EXPECT_TRUE(bufferQueue.get() != nullptr); - IDSBuffer *buffer = bufferQueue->dequeueBuffer(); + std::shared_ptr buffer = bufferQueue->dequeueBuffer(); EXPECT_TRUE(buffer != nullptr); - bool ret = bufferQueue->enqueueBuffer(buffer); - EXPECT_TRUE(ret); + EXPECT_TRUE(bufferQueue->enqueueBuffer(buffer)); } TEST_F(DSBufferTBMImplTest, AcquireBuffer) @@ -60,11 +59,10 @@ TEST_F(DSBufferTBMImplTest, AcquireBuffer) std::unique_ptr bufferQueue = std::make_unique(3, 100, 100, IDSBuffer::FORMAT_ARGB8888); EXPECT_TRUE(bufferQueue.get() != nullptr); - IDSBuffer *buffer1 = bufferQueue->dequeueBuffer(); + std::shared_ptr buffer1 = bufferQueue->dequeueBuffer(); EXPECT_TRUE(buffer1 != nullptr); - bool ret1 = bufferQueue->enqueueBuffer(buffer1); - EXPECT_TRUE(ret1); - IDSBuffer *buffer2 = bufferQueue->acquireBuffer(); + EXPECT_TRUE(bufferQueue->enqueueBuffer(buffer1)); + std::shared_ptr buffer2 = bufferQueue->acquireBuffer(); EXPECT_TRUE(buffer2 != nullptr); } @@ -73,12 +71,36 @@ TEST_F(DSBufferTBMImplTest, ReleaseBuffer) std::unique_ptr bufferQueue = std::make_unique(3, 100, 100, IDSBuffer::FORMAT_ARGB8888); EXPECT_TRUE(bufferQueue.get() != nullptr); - IDSBuffer *buffer1 = bufferQueue->dequeueBuffer(); + std::shared_ptr buffer1 = bufferQueue->dequeueBuffer(); EXPECT_TRUE(buffer1 != nullptr); - bool ret1 = bufferQueue->enqueueBuffer(buffer1); - EXPECT_TRUE(ret1); - IDSBuffer *buffer2 = bufferQueue->acquireBuffer(); + EXPECT_TRUE(bufferQueue->enqueueBuffer(buffer1)); + std::shared_ptr buffer2 = bufferQueue->acquireBuffer(); EXPECT_TRUE(buffer2 != nullptr); - bool ret2 = bufferQueue->releaseBuffer(buffer2); - EXPECT_TRUE(ret2); + EXPECT_TRUE(bufferQueue->releaseBuffer(buffer2)); +} + +TEST_F(DSBufferTBMImplTest, DequeueBuffer_4Times) +{ + std::unique_ptr bufferQueue = std::make_unique(3, 100, 100, IDSBuffer::FORMAT_ARGB8888); + EXPECT_TRUE(bufferQueue.get() != nullptr); + + std::shared_ptr buffer1 = bufferQueue->dequeueBuffer(); + EXPECT_TRUE(buffer1 != nullptr); + std::shared_ptr buffer2 = bufferQueue->dequeueBuffer(); + EXPECT_TRUE(buffer2 != nullptr); + std::shared_ptr buffer3 = bufferQueue->dequeueBuffer(); + EXPECT_TRUE(buffer3 != nullptr); + EXPECT_TRUE(bufferQueue->releaseBuffer(buffer1)); + EXPECT_TRUE(bufferQueue->releaseBuffer(buffer2)); + EXPECT_TRUE(bufferQueue->releaseBuffer(buffer3)); + + std::shared_ptr buffer4 = bufferQueue->dequeueBuffer(); + EXPECT_TRUE(buffer1.get() == buffer4.get()); + std::shared_ptr buffer5 = bufferQueue->dequeueBuffer(); + EXPECT_TRUE(buffer2.get() == buffer5.get()); + std::shared_ptr buffer6 = bufferQueue->dequeueBuffer(); + EXPECT_TRUE(buffer3.get() == buffer6.get()); + EXPECT_TRUE(bufferQueue->releaseBuffer(buffer4)); + EXPECT_TRUE(bufferQueue->releaseBuffer(buffer5)); + EXPECT_TRUE(bufferQueue->releaseBuffer(buffer6)); } \ No newline at end of file -- 2.7.4 From 6e9e287b023e56932f50310bdd573d584ca49575 Mon Sep 17 00:00:00 2001 From: SooChan Lim Date: Thu, 2 Jul 2020 14:17:09 +0900 Subject: [PATCH 15/16] DSRender: redesign DSRender - simplify the DSRender design with two resources which are DSRenderEngine and DSRenderView. - implement DSRenderEngineEcoreEvasImpl and DSRenderViewEcoreEvasImpl Change-Id: I35e61e596e9ec6d5c6c73d16b4094ac23bbb887d --- packaging/libds.spec | 1 + src/DSRender/DSRenderEngine.cpp | 12 ---- src/DSRender/DSRenderEngine.h | 19 ------ src/DSRender/DSRenderEngineDaliImpl.cpp | 17 +++++- src/DSRender/DSRenderEngineDaliImpl.h | 12 ++-- src/DSRender/DSRenderEngineEcoreEvasImpl.cpp | 55 ++++++++++++++++- src/DSRender/DSRenderEngineEcoreEvasImpl.h | 19 ++++-- src/DSRender/DSRenderFactoryDaliImpl.cpp | 30 --------- src/DSRender/DSRenderFactoryDaliImpl.h | 27 --------- src/DSRender/DSRenderFactoryEcoreEvasImpl.cpp | 30 --------- src/DSRender/DSRenderFactoryEcoreEvasImpl.h | 27 --------- src/DSRender/DSRenderSurface.cpp | 12 ---- src/DSRender/DSRenderSurface.h | 18 ------ src/DSRender/DSRenderSurfaceDaliImpl.cpp | 12 ---- src/DSRender/DSRenderSurfaceDaliImpl.h | 21 ------- src/DSRender/DSRenderSurfaceEcoreEvasImpl.cpp | 12 ---- src/DSRender/DSRenderSurfaceEcoreEvasImpl.h | 20 ------ src/DSRender/DSRenderView.cpp | 2 +- src/DSRender/DSRenderView.h | 7 ++- src/DSRender/DSRenderViewDaliImpl.cpp | 7 ++- src/DSRender/DSRenderViewDaliImpl.h | 4 +- src/DSRender/DSRenderViewEcoreEvasImpl.cpp | 26 +++++++- src/DSRender/DSRenderViewEcoreEvasImpl.h | 8 ++- src/DSRender/IDSRenderEngine.h | 21 +++++++ src/DSRender/IDSRenderFactory.h | 21 ------- src/DSRender/plantuml/IDSRenderEngine.plantuml | 33 ++++++++++ src/meson.build | 9 +-- tests/DSRenderEngineDaliImpl-test.cpp | 52 ++++++++++++++++ tests/DSRenderEngineEcoreEvasImpl-test.cpp | 60 ++++++++++++++++++ tests/DSRenderFactoryDaliImpl-test.cpp | 84 -------------------------- tests/DSRenderFactoryEcoreEvasImpl-test.cpp | 84 -------------------------- tests/meson.build | 6 +- 32 files changed, 307 insertions(+), 461 deletions(-) delete mode 100644 src/DSRender/DSRenderEngine.cpp delete mode 100644 src/DSRender/DSRenderEngine.h delete mode 100644 src/DSRender/DSRenderFactoryDaliImpl.cpp delete mode 100644 src/DSRender/DSRenderFactoryDaliImpl.h delete mode 100644 src/DSRender/DSRenderFactoryEcoreEvasImpl.cpp delete mode 100644 src/DSRender/DSRenderFactoryEcoreEvasImpl.h delete mode 100644 src/DSRender/DSRenderSurface.cpp delete mode 100644 src/DSRender/DSRenderSurface.h delete mode 100644 src/DSRender/DSRenderSurfaceDaliImpl.cpp delete mode 100644 src/DSRender/DSRenderSurfaceDaliImpl.h delete mode 100644 src/DSRender/DSRenderSurfaceEcoreEvasImpl.cpp delete mode 100644 src/DSRender/DSRenderSurfaceEcoreEvasImpl.h create mode 100644 src/DSRender/IDSRenderEngine.h delete mode 100644 src/DSRender/IDSRenderFactory.h create mode 100644 src/DSRender/plantuml/IDSRenderEngine.plantuml create mode 100644 tests/DSRenderEngineDaliImpl-test.cpp create mode 100644 tests/DSRenderEngineEcoreEvasImpl-test.cpp delete mode 100644 tests/DSRenderFactoryDaliImpl-test.cpp delete mode 100644 tests/DSRenderFactoryEcoreEvasImpl-test.cpp diff --git a/packaging/libds.spec b/packaging/libds.spec index a1f8c84..d775ad1 100644 --- a/packaging/libds.spec +++ b/packaging/libds.spec @@ -20,6 +20,7 @@ BuildRequires: pkgconfig(tizen-surface-server) BuildRequires: pkgconfig(xdg-shell-unstable-v6-server) BuildRequires: pkgconfig(xdg-shell-server) BuildRequires: pkgconfig(ecore) +BuildRequires: pkgconfig(ecore-evas) %description diff --git a/src/DSRender/DSRenderEngine.cpp b/src/DSRender/DSRenderEngine.cpp deleted file mode 100644 index cd35ad0..0000000 --- a/src/DSRender/DSRenderEngine.cpp +++ /dev/null @@ -1,12 +0,0 @@ -#include "DSRenderEngine.h" - -namespace display_server -{ - -DSRenderEngine::DSRenderEngine(/* args */) -{} - -DSRenderEngine::~DSRenderEngine() -{} - -} // namespace display_server diff --git a/src/DSRender/DSRenderEngine.h b/src/DSRender/DSRenderEngine.h deleted file mode 100644 index 14ce3f0..0000000 --- a/src/DSRender/DSRenderEngine.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef __DS_RENDER_ENGINE_H_ -#define __DS_RENDER_ENGINE_H_ - -namespace display_server -{ - -class DSRenderEngine -{ -public: - DSRenderEngine(/* args */); - virtual ~DSRenderEngine(); - -private: - /* data */ -}; - -} - -#endif diff --git a/src/DSRender/DSRenderEngineDaliImpl.cpp b/src/DSRender/DSRenderEngineDaliImpl.cpp index e56f877..3bf7990 100644 --- a/src/DSRender/DSRenderEngineDaliImpl.cpp +++ b/src/DSRender/DSRenderEngineDaliImpl.cpp @@ -1,12 +1,27 @@ #include "DSRenderEngineDaliImpl.h" +#include "DSRenderViewDaliImpl.h" +#include "DSDebugLog.h" namespace display_server { -DSRenderEngineDaliImpl::DSRenderEngineDaliImpl(/* args */) +DSRenderEngineDaliImpl::DSRenderEngineDaliImpl(std::shared_ptr bufferQueue) + : __bufferQueue{bufferQueue} {} DSRenderEngineDaliImpl::~DSRenderEngineDaliImpl() {} +std::shared_ptr DSRenderEngineDaliImpl::makeRenderView() +{ + std::shared_ptr renderView = std::make_shared(); + + return renderView; +} + +bool DSRenderEngineDaliImpl::renderFrame() +{ + return false; +} + } // namespace display_server diff --git a/src/DSRender/DSRenderEngineDaliImpl.h b/src/DSRender/DSRenderEngineDaliImpl.h index 7b7375d..d50ac49 100644 --- a/src/DSRender/DSRenderEngineDaliImpl.h +++ b/src/DSRender/DSRenderEngineDaliImpl.h @@ -1,19 +1,23 @@ #ifndef __DS_RENDER_ENGINE_DALI_IMPL_H_ #define __DS_RENDER_ENGINE_DALI_IMPL_H_ -#include "DSRenderEngine.h" +#include "IDSRenderEngine.h" +#include "IDSBufferQueue.h" namespace display_server { -class DSRenderEngineDaliImpl : public DSRenderEngine +class DSRenderEngineDaliImpl : public IDSRenderEngine { public: - DSRenderEngineDaliImpl(/* args */); + DSRenderEngineDaliImpl(std::shared_ptr bufferQueue); ~DSRenderEngineDaliImpl(); + std::shared_ptr makeRenderView() override; + bool renderFrame() override; + private: - /* data */ + std::shared_ptr __bufferQueue; }; } diff --git a/src/DSRender/DSRenderEngineEcoreEvasImpl.cpp b/src/DSRender/DSRenderEngineEcoreEvasImpl.cpp index 8a0f920..dc4551e 100644 --- a/src/DSRender/DSRenderEngineEcoreEvasImpl.cpp +++ b/src/DSRender/DSRenderEngineEcoreEvasImpl.cpp @@ -1,12 +1,61 @@ #include "DSRenderEngineEcoreEvasImpl.h" +#include "DSRenderViewEcoreEvasImpl.h" +#include "DSDebugLog.h" namespace display_server { -DSRenderEngineEcoreEvasImpl::DSRenderEngineEcoreEvasImpl(/* args */) -{} +DSRenderEngineEcoreEvasImpl::DSRenderEngineEcoreEvasImpl(std::shared_ptr bufferQueue) + : __bufferQueue(bufferQueue), + __bufferWidth{bufferQueue->getBufferWidth()}, + __bufferHeight{bufferQueue->getBufferHeight()}, + __ee{nullptr} +{ + if (!evas_init()) { + DSLOG_ERR("RENDER_ENGINE_ECORE_EVAS", "evas_init fails\n"); + } + + if (!ecore_evas_init()) { + DSLOG_ERR("RENDER_ENGINE_ECORE_EVAS", "ecore_evas_init fails\n"); + } + + auto alloc_func = [](void *data, int w, int h) -> void * { + IDSBufferQueue *bufferQueue = static_cast(data); + void *nativeBufferQueue = bufferQueue->getNativeBufferQueue(); + + return nativeBufferQueue; + }; + + auto free_func = [](void *data, void *tqueue) -> void {}; + + __ee = ecore_evas_tbm_allocfunc_new("gl_tbm", __bufferWidth, __bufferHeight, alloc_func, free_func, (void *)bufferQueue.get()); + if (!__ee) { + DSLOG_ERR("RENDER_ENGINE_ECORE_EVAS", "ecore_evas_tbm_allocfunc_new fails.\n"); + } + + ecore_evas_manual_render_set(__ee, 1); + ecore_evas_show(__ee); +} DSRenderEngineEcoreEvasImpl::~DSRenderEngineEcoreEvasImpl() -{} +{ + ecore_evas_free(__ee); + ecore_evas_shutdown(); + evas_shutdown(); +} + +std::shared_ptr DSRenderEngineEcoreEvasImpl::makeRenderView() +{ + std::shared_ptr renderView = std::make_shared(__ee); + + return renderView; +} + +bool DSRenderEngineEcoreEvasImpl::renderFrame() +{ + ecore_evas_manual_render(__ee); + + return true; +} } // namespace display_server diff --git a/src/DSRender/DSRenderEngineEcoreEvasImpl.h b/src/DSRender/DSRenderEngineEcoreEvasImpl.h index a3368f3..163c7f2 100644 --- a/src/DSRender/DSRenderEngineEcoreEvasImpl.h +++ b/src/DSRender/DSRenderEngineEcoreEvasImpl.h @@ -1,18 +1,27 @@ #ifndef __DS_RENDER_ENGINE_ECORE_EVAS_IMPL_H_ #define __DS_RENDER_ENGINE_ECORE_EVAS_IMPL_H_ -#include "DSRenderEngine.h" +#include "IDSRenderEngine.h" +#include "IDSBufferQueue.h" +#include namespace display_server { -class DSRenderEngineEcoreEvasImpl : public DSRenderEngine +class DSRenderEngineEcoreEvasImpl : public IDSRenderEngine { -private: - /* data */ public: - DSRenderEngineEcoreEvasImpl(/* args */); + DSRenderEngineEcoreEvasImpl(std::shared_ptr bufferQueue); ~DSRenderEngineEcoreEvasImpl(); + + std::shared_ptr makeRenderView() override; + bool renderFrame() override; + +private: + std::shared_ptr __bufferQueue; + int __bufferWidth; + int __bufferHeight; + Ecore_Evas *__ee; }; } diff --git a/src/DSRender/DSRenderFactoryDaliImpl.cpp b/src/DSRender/DSRenderFactoryDaliImpl.cpp deleted file mode 100644 index bffb7d7..0000000 --- a/src/DSRender/DSRenderFactoryDaliImpl.cpp +++ /dev/null @@ -1,30 +0,0 @@ -#include "DSRenderFactoryDaliImpl.h" - -namespace display_server -{ - -DSRenderFactoryDaliImpl::DSRenderFactoryDaliImpl(/* args */) -{} - -DSRenderFactoryDaliImpl::~DSRenderFactoryDaliImpl() -{} - -DSRenderEngine *DSRenderFactoryDaliImpl::createDSRenderEngine() -{ - DSRenderEngine *renderer = new DSRenderEngineDaliImpl; - return renderer; -} - -DSRenderSurface *DSRenderFactoryDaliImpl::createDSRenderSurface() -{ - DSRenderSurface *renderSurface = new DSRenderSurfaceDaliImpl; - return renderSurface; -} - -DSRenderView *DSRenderFactoryDaliImpl::createDSRenderView() -{ - DSRenderView *renderView = new DSRenderViewDaliImpl; - return renderView; -} - -} // namespace display_server diff --git a/src/DSRender/DSRenderFactoryDaliImpl.h b/src/DSRender/DSRenderFactoryDaliImpl.h deleted file mode 100644 index c315f99..0000000 --- a/src/DSRender/DSRenderFactoryDaliImpl.h +++ /dev/null @@ -1,27 +0,0 @@ -#ifndef __DS_RENDER_FACTORY_DALI_IMPL_H_ -#define __DS_RENDER_FACTORY_DALI_IMPL_H_ - -#include "IDSRenderFactory.h" -#include "DSRenderEngineDaliImpl.h" -#include "DSRenderSurfaceDaliImpl.h" -#include "DSRenderViewDaliImpl.h" - -namespace display_server -{ -class DSRenderFactoryDaliImpl : public IDSRenderFactory -{ - -private: - /* data */ -public: - DSRenderFactoryDaliImpl(/* args */); - ~DSRenderFactoryDaliImpl(); - - DSRenderEngine *createDSRenderEngine() override; - DSRenderSurface *createDSRenderSurface() override; - DSRenderView *createDSRenderView() override; -}; - -} - -#endif diff --git a/src/DSRender/DSRenderFactoryEcoreEvasImpl.cpp b/src/DSRender/DSRenderFactoryEcoreEvasImpl.cpp deleted file mode 100644 index a9399fb..0000000 --- a/src/DSRender/DSRenderFactoryEcoreEvasImpl.cpp +++ /dev/null @@ -1,30 +0,0 @@ -#include "DSRenderFactoryEcoreEvasImpl.h" - -namespace display_server -{ - -DSRenderFactoryEcoreEvasImpl::DSRenderFactoryEcoreEvasImpl(/* args */) -{} - -DSRenderFactoryEcoreEvasImpl::~DSRenderFactoryEcoreEvasImpl() -{} - -DSRenderEngine *DSRenderFactoryEcoreEvasImpl::createDSRenderEngine() -{ - DSRenderEngine *renderer = new DSRenderEngineEcoreEvasImpl; - return renderer; -} - -DSRenderSurface *DSRenderFactoryEcoreEvasImpl::createDSRenderSurface() -{ - DSRenderSurface *renderSurface = new DSRenderSurfaceEcoreEvasImpl; - return renderSurface; -} - -DSRenderView *DSRenderFactoryEcoreEvasImpl::createDSRenderView() -{ - DSRenderView *renderView = new DSRenderViewEcoreEvasImpl; - return renderView; -} - -} // namespace display_server diff --git a/src/DSRender/DSRenderFactoryEcoreEvasImpl.h b/src/DSRender/DSRenderFactoryEcoreEvasImpl.h deleted file mode 100644 index ef25280..0000000 --- a/src/DSRender/DSRenderFactoryEcoreEvasImpl.h +++ /dev/null @@ -1,27 +0,0 @@ -#ifndef __DS_RENDER_FACTORY_ECORE_EVAS__IMPL_H_ -#define __DS_RENDER_FACTORY_ECORE_EVAS__IMPL_H_ - -#include "IDSRenderFactory.h" -#include "DSRenderEngineEcoreEvasImpl.h" -#include "DSRenderSurfaceEcoreEvasImpl.h" -#include "DSRenderViewEcoreEvasImpl.h" - -namespace display_server -{ - -class DSRenderFactoryEcoreEvasImpl : public IDSRenderFactory -{ -private: - /* data */ -public: - DSRenderFactoryEcoreEvasImpl(/* args */); - ~DSRenderFactoryEcoreEvasImpl(); - - DSRenderEngine *createDSRenderEngine() override; - DSRenderSurface *createDSRenderSurface() override; - DSRenderView *createDSRenderView() override; -}; - -} - -#endif diff --git a/src/DSRender/DSRenderSurface.cpp b/src/DSRender/DSRenderSurface.cpp deleted file mode 100644 index 4ff8d83..0000000 --- a/src/DSRender/DSRenderSurface.cpp +++ /dev/null @@ -1,12 +0,0 @@ -#include "DSRenderSurface.h" - -namespace display_server -{ - -DSRenderSurface::DSRenderSurface(/* args */) -{} - -DSRenderSurface::~DSRenderSurface() -{} - -} // namespace display_server diff --git a/src/DSRender/DSRenderSurface.h b/src/DSRender/DSRenderSurface.h deleted file mode 100644 index 6dfca68..0000000 --- a/src/DSRender/DSRenderSurface.h +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef __DS_RENDER_SURFACE_H_ -#define __DS_RENDER_SURFACE_H_ - -namespace display_server -{ - -class DSRenderSurface -{ -private: - /* data */ -public: - DSRenderSurface(/* args */); - virtual ~DSRenderSurface(); -}; - -} - -#endif diff --git a/src/DSRender/DSRenderSurfaceDaliImpl.cpp b/src/DSRender/DSRenderSurfaceDaliImpl.cpp deleted file mode 100644 index 736d5ca..0000000 --- a/src/DSRender/DSRenderSurfaceDaliImpl.cpp +++ /dev/null @@ -1,12 +0,0 @@ -#include "DSRenderSurfaceDaliImpl.h" - -namespace display_server -{ - -DSRenderSurfaceDaliImpl::DSRenderSurfaceDaliImpl(/* args */) -{} - -DSRenderSurfaceDaliImpl::~DSRenderSurfaceDaliImpl() -{} - -} // namespace display_server diff --git a/src/DSRender/DSRenderSurfaceDaliImpl.h b/src/DSRender/DSRenderSurfaceDaliImpl.h deleted file mode 100644 index 8242f16..0000000 --- a/src/DSRender/DSRenderSurfaceDaliImpl.h +++ /dev/null @@ -1,21 +0,0 @@ -#ifndef __DS_RENDER_SURFACE_DALI_IMPL_H_ -#define __DS_RENDER_SURFACE_DALI_IMPL_H_ - -#include "DSRenderSurface.h" - -namespace display_server -{ - -class DSRenderSurfaceDaliImpl : public DSRenderSurface -{ -public: - DSRenderSurfaceDaliImpl(/* args */); - ~DSRenderSurfaceDaliImpl(); - -private: - /* data */ -}; - -} - -#endif diff --git a/src/DSRender/DSRenderSurfaceEcoreEvasImpl.cpp b/src/DSRender/DSRenderSurfaceEcoreEvasImpl.cpp deleted file mode 100644 index 59946da..0000000 --- a/src/DSRender/DSRenderSurfaceEcoreEvasImpl.cpp +++ /dev/null @@ -1,12 +0,0 @@ -#include "DSRenderSurfaceEcoreEvasImpl.h" - -namespace display_server -{ - -DSRenderSurfaceEcoreEvasImpl::DSRenderSurfaceEcoreEvasImpl(/* args */) -{} - -DSRenderSurfaceEcoreEvasImpl::~DSRenderSurfaceEcoreEvasImpl() -{} - -} // namespace display_server diff --git a/src/DSRender/DSRenderSurfaceEcoreEvasImpl.h b/src/DSRender/DSRenderSurfaceEcoreEvasImpl.h deleted file mode 100644 index ade3baf..0000000 --- a/src/DSRender/DSRenderSurfaceEcoreEvasImpl.h +++ /dev/null @@ -1,20 +0,0 @@ -#ifndef __DS_RENDER_SURFACE_ECORE_EVAS_IMPL_H_ -#define __DS_RENDER_SURFACE_ECORE_EVAS_IMPL_H_ - -#include "DSRenderSurface.h" - -namespace display_server -{ - -class DSRenderSurfaceEcoreEvasImpl : public DSRenderSurface -{ -public: - DSRenderSurfaceEcoreEvasImpl(/* args */); - ~DSRenderSurfaceEcoreEvasImpl(); - -private: - /* data */ -}; -} - -#endif diff --git a/src/DSRender/DSRenderView.cpp b/src/DSRender/DSRenderView.cpp index 4bae2af..7dd282d 100644 --- a/src/DSRender/DSRenderView.cpp +++ b/src/DSRender/DSRenderView.cpp @@ -3,7 +3,7 @@ namespace display_server { -DSRenderView::DSRenderView(/* args */) +DSRenderView::DSRenderView() {} DSRenderView::~DSRenderView() diff --git a/src/DSRender/DSRenderView.h b/src/DSRender/DSRenderView.h index c3f4065..a76eaa2 100644 --- a/src/DSRender/DSRenderView.h +++ b/src/DSRender/DSRenderView.h @@ -1,15 +1,20 @@ #ifndef __DS_RENDER_VIEW_H_ #define __DS_RENDER_VIEW_H_ +#include "IDSBuffer.h" +#include + namespace display_server { class DSRenderView { public: - DSRenderView(/* args */); + DSRenderView(); virtual ~DSRenderView(); + virtual bool setBuffer(std::shared_ptr buffer) = 0; + private: /* data */ }; diff --git a/src/DSRender/DSRenderViewDaliImpl.cpp b/src/DSRender/DSRenderViewDaliImpl.cpp index 6008a3c..5b83e3a 100644 --- a/src/DSRender/DSRenderViewDaliImpl.cpp +++ b/src/DSRender/DSRenderViewDaliImpl.cpp @@ -3,10 +3,15 @@ namespace display_server { -DSRenderViewDaliImpl::DSRenderViewDaliImpl(/* args */) +DSRenderViewDaliImpl::DSRenderViewDaliImpl() {} DSRenderViewDaliImpl::~DSRenderViewDaliImpl() {} +bool DSRenderViewDaliImpl::setBuffer(std::shared_ptr buffer) +{ + return false; +} + } // namespace display_server diff --git a/src/DSRender/DSRenderViewDaliImpl.h b/src/DSRender/DSRenderViewDaliImpl.h index e80ab8d..36990f1 100644 --- a/src/DSRender/DSRenderViewDaliImpl.h +++ b/src/DSRender/DSRenderViewDaliImpl.h @@ -9,9 +9,11 @@ namespace display_server class DSRenderViewDaliImpl : public DSRenderView { public: - DSRenderViewDaliImpl(/* args */); + DSRenderViewDaliImpl(); ~DSRenderViewDaliImpl(); + bool setBuffer(std::shared_ptr buffer) override; + private: /* data */ }; diff --git a/src/DSRender/DSRenderViewEcoreEvasImpl.cpp b/src/DSRender/DSRenderViewEcoreEvasImpl.cpp index 3231ce3..8ce49be 100644 --- a/src/DSRender/DSRenderViewEcoreEvasImpl.cpp +++ b/src/DSRender/DSRenderViewEcoreEvasImpl.cpp @@ -1,12 +1,32 @@ #include "DSRenderViewEcoreEvasImpl.h" +#include "DSDebugLog.h" namespace display_server { -DSRenderViewEcoreEvasImpl::DSRenderViewEcoreEvasImpl(/* args */) -{} +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); +} DSRenderViewEcoreEvasImpl::~DSRenderViewEcoreEvasImpl() -{} +{ + evas_object_del(__evasView); +} + +bool DSRenderViewEcoreEvasImpl::setBuffer(std::shared_ptr buffer) +{ + Evas_Native_Surface ns; + + 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; +} } // namespace display_server diff --git a/src/DSRender/DSRenderViewEcoreEvasImpl.h b/src/DSRender/DSRenderViewEcoreEvasImpl.h index 9aac180..eca50a7 100644 --- a/src/DSRender/DSRenderViewEcoreEvasImpl.h +++ b/src/DSRender/DSRenderViewEcoreEvasImpl.h @@ -2,6 +2,7 @@ #define __DS_RENDER_VIEW_ECORE_EVAS_IMPL_H_ #include "DSRenderView.h" +#include namespace display_server { @@ -9,13 +10,16 @@ namespace display_server class DSRenderViewEcoreEvasImpl : public DSRenderView { public: - DSRenderViewEcoreEvasImpl(/* args */); + DSRenderViewEcoreEvasImpl(Ecore_Evas *ee); ~DSRenderViewEcoreEvasImpl(); + bool setBuffer(std::shared_ptr buffer) override; + private: - /* data */ + Evas_Object *__evasView; }; + } #endif diff --git a/src/DSRender/IDSRenderEngine.h b/src/DSRender/IDSRenderEngine.h new file mode 100644 index 0000000..17d32cc --- /dev/null +++ b/src/DSRender/IDSRenderEngine.h @@ -0,0 +1,21 @@ +#ifndef __I_DS_RENDER_ENGINE_H_ +#define __I_DS_RENDER_ENGINE_H_ + +#include "DSRenderView.h" +#include + +namespace display_server +{ + +class IDSRenderEngine +{ +public: + virtual ~IDSRenderEngine() = default; + + virtual std::shared_ptr makeRenderView() = 0; + virtual bool renderFrame() = 0; +}; + +} + +#endif diff --git a/src/DSRender/IDSRenderFactory.h b/src/DSRender/IDSRenderFactory.h deleted file mode 100644 index 3a3b4f3..0000000 --- a/src/DSRender/IDSRenderFactory.h +++ /dev/null @@ -1,21 +0,0 @@ -#ifndef __DS_RENDER_FACTORY_H_ -#define __DS_RENDER_FACTORY_H_ - -#include "DSRenderEngine.h" -#include "DSRenderSurface.h" -#include "DSRenderView.h" - -namespace display_server -{ -class IDSRenderFactory -{ -public: - virtual ~IDSRenderFactory() = default; - - virtual DSRenderEngine *createDSRenderEngine() = 0; - virtual DSRenderSurface *createDSRenderSurface() = 0; - virtual DSRenderView *createDSRenderView() = 0; -}; -} - -#endif diff --git a/src/DSRender/plantuml/IDSRenderEngine.plantuml b/src/DSRender/plantuml/IDSRenderEngine.plantuml new file mode 100644 index 0000000..f991b17 --- /dev/null +++ b/src/DSRender/plantuml/IDSRenderEngine.plantuml @@ -0,0 +1,33 @@ +class Client +{ +} + +interface IDSRenderEngine +{ + + virtual std::shared_ptr makeRenderView() = 0; + + virtual bool renderFrame() = 0; +} + +Client "1" o-right- "0..*" IDSRenderEngine + +DSRenderEngineEcoreEvasImpl -up..|> IDSRenderEngine +DSRenderEngineDaliImpl -up..|> IDSRenderEngine + +class DSRenderEngineEcoreEvasImpl +{ +} + +class DSRenderEngineDaliImpl +{ +} + +abstract class DSRenderView +{ + + virtual bool setBuffer(std::shared_ptr buffer) = 0; +} + +DSRenderView <|-down-- DSRenderViewEcoreEvasImpl +DSRenderView <|-down-- DSRenderViewDaliImpl + + + diff --git a/src/meson.build b/src/meson.build index ccea800..45d2051 100644 --- a/src/meson.build +++ b/src/meson.build @@ -24,17 +24,11 @@ libds_srcs = [ 'DSProperty/DSProperty.h', 'DSProperty/DSPropertyPrivate.cpp', 'DSProperty/DSPropertyPrivate.h', - 'DSRender/DSRenderEngine.cpp', 'DSRender/DSRenderEngineEcoreEvasImpl.cpp', 'DSRender/DSRenderEngineDaliImpl.cpp', - 'DSRender/DSRenderSurface.cpp', - 'DSRender/DSRenderSurfaceEcoreEvasImpl.cpp', - 'DSRender/DSRenderSurfaceDaliImpl.cpp', 'DSRender/DSRenderView.cpp', 'DSRender/DSRenderViewEcoreEvasImpl.cpp', 'DSRender/DSRenderViewDaliImpl.cpp', - 'DSRender/DSRenderFactoryEcoreEvasImpl.cpp', - 'DSRender/DSRenderFactoryDaliImpl.cpp', 'DSSeat/DSSeat.cpp', 'DSSignal/DSSignal.cpp', 'DSSignal/DSSignal.h', @@ -77,6 +71,7 @@ install_headers( pkgconfig = import('pkgconfig') ecore_dep = dependency('ecore') +ecore_evas_dep = dependency('ecore-evas') dlog_dep = dependency('dlog') libtdm_dep = dependency('libtdm') wayland_dep = dependency('wayland-server') @@ -118,7 +113,7 @@ libds_include_dirs = include_directories( libds_lib = shared_library( 'libds', libds_srcs, - dependencies : [dlog_dep, libtdm_dep, wayland_dep, tizen_ext_deps, ecore_dep], + dependencies : [dlog_dep, libtdm_dep, wayland_dep, tizen_ext_deps, ecore_dep, ecore_evas_dep], include_directories : [libds_include_dirs], version : meson.project_version(), install : true diff --git a/tests/DSRenderEngineDaliImpl-test.cpp b/tests/DSRenderEngineDaliImpl-test.cpp new file mode 100644 index 0000000..2dca108 --- /dev/null +++ b/tests/DSRenderEngineDaliImpl-test.cpp @@ -0,0 +1,52 @@ +#include "libds-tests.h" +#include "DSRenderEngineDaliImpl.h" +#include "DSBufferQueueTBMImpl.h" +#include "DSBufferTBMImpl.h" + + +using namespace display_server; + +class DSRenderEngineDaliTest : public ::testing::Test +{ +public: + void SetUp(void) override + {} + void TearDown(void) override + {} +}; + +TEST_F(DSRenderEngineDaliTest, RenderEngine_Create) +{ + std::shared_ptr bufferQueue = std::make_shared(3, 100, 100, IDSBuffer::FORMAT_ARGB8888); + EXPECT_TRUE(bufferQueue != nullptr); + + std::unique_ptr renderEngine = std::make_unique(bufferQueue); + EXPECT_TRUE(renderEngine != nullptr); +} + +TEST_F(DSRenderEngineDaliTest, RenderEngine_CreateRenderView) +{ + std::shared_ptr bufferQueue = std::make_shared(3, 100, 100, IDSBuffer::FORMAT_ARGB8888); + EXPECT_TRUE(bufferQueue != nullptr); + + std::unique_ptr renderEngine = std::make_unique(bufferQueue); + EXPECT_TRUE(renderEngine != nullptr); + + std::shared_ptr renderView = renderEngine->makeRenderView(); + EXPECT_TRUE(renderView != nullptr); +} + +TEST_F(DSRenderEngineDaliTest, RenderView_SetBuffer) +{ + std::shared_ptr bufferQueue = std::make_shared(3, 100, 100, IDSBuffer::FORMAT_ARGB8888); + EXPECT_TRUE(bufferQueue != nullptr); + + std::unique_ptr renderEngine = std::make_unique(bufferQueue); + EXPECT_TRUE(renderEngine != nullptr); + + std::shared_ptr renderView = renderEngine->makeRenderView(); + EXPECT_TRUE(renderView != nullptr); + + std::shared_ptr buffer = std::make_shared(100, 100, IDSBuffer::FORMAT_ARGB8888); + EXPECT_TRUE(renderView->setBuffer(buffer)); +} \ No newline at end of file diff --git a/tests/DSRenderEngineEcoreEvasImpl-test.cpp b/tests/DSRenderEngineEcoreEvasImpl-test.cpp new file mode 100644 index 0000000..1aaaf67 --- /dev/null +++ b/tests/DSRenderEngineEcoreEvasImpl-test.cpp @@ -0,0 +1,60 @@ +#include "libds-tests.h" +#include "DSRenderEngineEcoreEvasImpl.h" +#include "DSBufferQueueTBMImpl.h" +#include "DSBufferTBMImpl.h" + +using namespace display_server; + +class DSRenderEngineEcoreEvasTest : public ::testing::Test +{ +public: + void SetUp(void) override + {} + void TearDown(void) override + {} +}; + +TEST_F(DSRenderEngineEcoreEvasTest, RenderEngine_Create) +{ + std::shared_ptr bufferQueue = std::make_shared(3, 100, 100, IDSBuffer::FORMAT_ARGB8888); + EXPECT_TRUE(bufferQueue != nullptr); + std::unique_ptr renderEngine = std::make_unique(bufferQueue); + EXPECT_TRUE(renderEngine != nullptr); +} + +#if 0 // There is a crash issue on evas_shutdown(). I am waiting for fixing it. +TEST_F(DSRenderEngineEcoreEvasTest, RenderEngine_MakeRenderView) +{ + std::shared_ptr bufferQueue = std::make_shared(3, 100, 100, IDSBuffer::FORMAT_ARGB8888); + EXPECT_TRUE(bufferQueue != nullptr); + std::unique_ptr renderEngine = std::make_unique(bufferQueue); + EXPECT_TRUE(renderEngine != nullptr); + std::shared_ptr renderView = renderEngine->makeRenderView(); + EXPECT_TRUE(renderView != nullptr); +} + +TEST_F(DSRenderEngineEcoreEvasTest, RenderView_SetBuffer) +{ + std::shared_ptr bufferQueue = std::make_shared(3, 100, 100, IDSBuffer::FORMAT_ARGB8888); + EXPECT_TRUE(bufferQueue != nullptr); + std::unique_ptr renderEngine = std::make_unique(bufferQueue); + EXPECT_TRUE(renderEngine != nullptr); + std::shared_ptr renderView = renderEngine->makeRenderView(); + EXPECT_TRUE(renderView != nullptr); + std::shared_ptr buffer = std::make_shared (100, 100, IDSBuffer::FORMAT_ARGB8888); + EXPECT_TRUE(renderView->setBuffer(buffer)); +} + +TEST_F(DSRenderEngineEcoreEvasTest, RenderEngine_RenderFrame) +{ + std::shared_ptr bufferQueue = std::make_shared(3, 100, 100, IDSBuffer::FORMAT_ARGB8888); + EXPECT_TRUE(bufferQueue != nullptr); + std::unique_ptr renderEngine = std::make_unique(bufferQueue); + EXPECT_TRUE(renderEngine != nullptr); + std::shared_ptr renderView = renderEngine->makeRenderView(); + EXPECT_TRUE(renderView != nullptr); + std::shared_ptr buffer = std::make_shared (100, 100, IDSBuffer::FORMAT_ARGB8888); + EXPECT_TRUE(renderView->setBuffer(buffer)); + EXPECT_TRUE(renderEngine->renderFrame()); +} +#endif \ No newline at end of file diff --git a/tests/DSRenderFactoryDaliImpl-test.cpp b/tests/DSRenderFactoryDaliImpl-test.cpp deleted file mode 100644 index 01a0058..0000000 --- a/tests/DSRenderFactoryDaliImpl-test.cpp +++ /dev/null @@ -1,84 +0,0 @@ -#include "libds-tests.h" -#include "DSRenderFactoryDaliImpl.h" - -using namespace display_server; - -class DSRenderFactoryDaliTest : public ::testing::Test -{ -public: - void SetUp(void) override - {} - void TearDown(void) override - {} -}; - -class DSBufferQueueMock -{ -public: - DSBufferQueueMock() {}; - ~DSBufferQueueMock() {}; - //MOCK_METHOD(ReturnType, MethodName, (Args...)); - //MOCK_METHOD(ReturnType, MethodName, (Args...), (Specs...)); -}; - -TEST_F(DSRenderFactoryDaliTest, CreateRenderFactoryDali) -{ - IDSRenderFactory *renderFactory = new DSRenderFactoryDaliImpl; - EXPECT_TRUE(renderFactory != nullptr); - - delete renderFactory; -} - -TEST_F(DSRenderFactoryDaliTest, createDSRenderEngine) -{ - IDSRenderFactory *renderFactory = new DSRenderFactoryDaliImpl; - EXPECT_TRUE(renderFactory != nullptr); - - DSRenderEngine *renderEngine = renderFactory->createDSRenderEngine(); - EXPECT_TRUE(renderEngine != nullptr); - - delete renderEngine; - delete renderFactory; -} - -TEST_F(DSRenderFactoryDaliTest, createDSRenderSurface) -{ - IDSRenderFactory *renderFactory = new DSRenderFactoryDaliImpl; - EXPECT_TRUE(renderFactory != nullptr); - - DSRenderSurface *renderSurface = renderFactory->createDSRenderSurface(); - EXPECT_TRUE(renderSurface != nullptr); - - delete renderSurface; - delete renderFactory; -} - -TEST_F(DSRenderFactoryDaliTest, createDSRenderView) -{ - IDSRenderFactory *renderFactory = new DSRenderFactoryDaliImpl; - EXPECT_TRUE(renderFactory != nullptr); - - DSRenderView *renderView = renderFactory->createDSRenderView(); - EXPECT_TRUE(renderView != nullptr); - - delete renderView; - delete renderFactory; -} - -TEST_F(DSRenderFactoryDaliTest, CreateRenderFactoryDaliAll) -{ - IDSRenderFactory *renderFactory = new DSRenderFactoryDaliImpl; - EXPECT_TRUE(renderFactory != nullptr); - - DSRenderEngine *renderEngine = renderFactory->createDSRenderEngine(); - EXPECT_TRUE(renderEngine != nullptr); - DSRenderSurface *renderSurface = renderFactory->createDSRenderSurface(); - EXPECT_TRUE(renderSurface != nullptr); - DSRenderView *renderView = renderFactory->createDSRenderView(); - EXPECT_TRUE(renderView != nullptr); - - delete renderView; - delete renderSurface; - delete renderEngine; - delete renderFactory; -} diff --git a/tests/DSRenderFactoryEcoreEvasImpl-test.cpp b/tests/DSRenderFactoryEcoreEvasImpl-test.cpp deleted file mode 100644 index 1e8d50b..0000000 --- a/tests/DSRenderFactoryEcoreEvasImpl-test.cpp +++ /dev/null @@ -1,84 +0,0 @@ -#include "libds-tests.h" -#include "DSRenderFactoryEcoreEvasImpl.h" - -using namespace display_server; - -class DSRenderFactoryEcoreEvasTest : public ::testing::Test -{ -public: - void SetUp(void) override - {} - void TearDown(void) override - {} -}; - -class DSBufferQueueMock -{ -public: - DSBufferQueueMock() {}; - ~DSBufferQueueMock() {}; - //MOCK_METHOD(ReturnType, MethodName, (Args...)); - //MOCK_METHOD(ReturnType, MethodName, (Args...), (Specs...)); -}; - -TEST_F(DSRenderFactoryEcoreEvasTest, CreateRenderFactoryEcoreEvas) -{ - IDSRenderFactory *renderFactory = new DSRenderFactoryEcoreEvasImpl; - EXPECT_TRUE(renderFactory != nullptr); - - delete renderFactory; -} - -TEST_F(DSRenderFactoryEcoreEvasTest, createDSRenderEngine) -{ - IDSRenderFactory *renderFactory = new DSRenderFactoryEcoreEvasImpl; - EXPECT_TRUE(renderFactory != nullptr); - - DSRenderEngine *renderEngine = renderFactory->createDSRenderEngine(); - EXPECT_TRUE(renderEngine != nullptr); - - delete renderEngine; - delete renderFactory; -} - -TEST_F(DSRenderFactoryEcoreEvasTest, createDSRenderSurface) -{ - IDSRenderFactory *renderFactory = new DSRenderFactoryEcoreEvasImpl; - EXPECT_TRUE(renderFactory != nullptr); - - DSRenderSurface *renderSurface = renderFactory->createDSRenderSurface(); - EXPECT_TRUE(renderSurface != nullptr); - - delete renderSurface; - delete renderFactory; -} - -TEST_F(DSRenderFactoryEcoreEvasTest, createDSRenderView) -{ - IDSRenderFactory *renderFactory = new DSRenderFactoryEcoreEvasImpl; - EXPECT_TRUE(renderFactory != nullptr); - - DSRenderView *renderView = renderFactory->createDSRenderView(); - EXPECT_TRUE(renderView != nullptr); - - delete renderView; - delete renderFactory; -} - -TEST_F(DSRenderFactoryEcoreEvasTest, CreateRenderFactoryEcoreEvasAll) -{ - IDSRenderFactory *renderFactory = new DSRenderFactoryEcoreEvasImpl; - EXPECT_TRUE(renderFactory != nullptr); - - DSRenderEngine *renderEngine = renderFactory->createDSRenderEngine(); - EXPECT_TRUE(renderEngine != nullptr); - DSRenderSurface *renderSurface = renderFactory->createDSRenderSurface(); - EXPECT_TRUE(renderSurface != nullptr); - DSRenderView *renderView = renderFactory->createDSRenderView(); - EXPECT_TRUE(renderView != nullptr); - - delete renderView; - delete renderSurface; - delete renderEngine; - delete renderFactory; -} diff --git a/tests/meson.build b/tests/meson.build index fe400da..f09eed5 100644 --- a/tests/meson.build +++ b/tests/meson.build @@ -3,8 +3,8 @@ libds_tests_srcs = [ 'DSRefBase-test.cpp', 'DSProperty-test.cpp', 'DSBufferTBMImpl-test.cpp', - 'DSRenderFactoryEcoreEvasImpl-test.cpp', - 'DSRenderFactoryDaliImpl-test.cpp', + 'DSRenderEngineEcoreEvasImpl-test.cpp', + 'DSRenderEngineDaliImpl-test.cpp', 'DSCompositor-test.cpp', 'DSOutput-test.cpp', 'DSInput-test.cpp', @@ -27,7 +27,7 @@ ecore_dep = dependency('ecore', method : 'pkg-config') executable( 'libds-tests', libds_tests_srcs, - dependencies : [libds_declared_dep, gmock_dep, ecore_dep], + dependencies : [libds_declared_dep, gmock_dep, ecore_dep, ecore_evas_dep], install_dir : libds_prefix_bindir, install : true ) -- 2.7.4 From dd3e7d2cd0aa1fa20c43ab552df18b37f2df1c82 Mon Sep 17 00:00:00 2001 From: SooChan Lim Date: Thu, 2 Jul 2020 18:03:10 +0900 Subject: [PATCH 16/16] DSDisplay: create the DSDisplayDeviceOutputTDMImpl at DSDisplayDeviceTDMImpl constructor. Change-Id: Ic5a6cfa0787bff6f8ab0d9cbd4d901b88fad9279 --- src/DSDisplayDevice/DSDisplayDeviceTDMImpl.cpp | 29 +++++++++++--------------- 1 file changed, 12 insertions(+), 17 deletions(-) diff --git a/src/DSDisplayDevice/DSDisplayDeviceTDMImpl.cpp b/src/DSDisplayDevice/DSDisplayDeviceTDMImpl.cpp index 66e35e5..2255542 100644 --- a/src/DSDisplayDevice/DSDisplayDeviceTDMImpl.cpp +++ b/src/DSDisplayDevice/DSDisplayDeviceTDMImpl.cpp @@ -9,43 +9,38 @@ DSDisplayDeviceTDMImpl::DSDisplayDeviceTDMImpl() : __numOutputs(0) { tdm_error terror; + tdm_output *toutput; + IDSDisplayDeviceOutput *deviceOutput; __tdisplay = tdm_display_init(&terror); if (terror != TDM_ERROR_NONE) { DSLOG_ERR("TDM DEVICE", "tdm_display_init fails.\n"); } -} - -DSDisplayDeviceTDMImpl::~DSDisplayDeviceTDMImpl() -{ - tdm_display_deinit(__tdisplay); -} - -std::list DSDisplayDeviceTDMImpl::getOutputList() -{ - tdm_error terror; - tdm_output *toutput; - IDSDisplayDeviceOutput *deviceOutput; terror = tdm_display_get_output_count(__tdisplay, &__numOutputs); if (__numOutputs <= 0) { DSLOG_ERR("TDM DEVICE", "tdm_display_get_output_count fails.\n"); - return __outputList; + return; } for (int i = 0; i < __numOutputs; ++i) { toutput = tdm_display_get_output(__tdisplay, i, &terror); if (terror != TDM_ERROR_NONE) { DSLOG_ERR("TDM DEVICE", "tdm_display_get_output fails.(output num: %d)\n", i); - return __outputList; + return; } deviceOutput = new DSDisplayDeviceOutputTDMImpl(toutput); __outputList.emplace_back(deviceOutput); - - // emit the output added signal - this->__outputAddedSignal.emit(deviceOutput); } +} +DSDisplayDeviceTDMImpl::~DSDisplayDeviceTDMImpl() +{ + tdm_display_deinit(__tdisplay); +} + +std::list DSDisplayDeviceTDMImpl::getOutputList() +{ return __outputList; } -- 2.7.4