From d12a1eeb8310f802528e93ae57eb19d3382567e9 Mon Sep 17 00:00:00 2001 From: "Junseok, Kim" Date: Thu, 25 Mar 2021 14:25:29 +0900 Subject: [PATCH] dswayland-server: update latest wayland protocols update following wayland protocols - wayland - tizen-extension - input-method - tzsh Change-Id: I3f605811dbbe73e2c9122440fb4c9f79e9437c88 Signed-off-by: Junseok, Kim --- .../dswayland-server-input-method.cpp | 72 ++-- .../dswayland-server-input-method.h | 20 +- .../dswayland-server-tizen-extension.cpp | 478 ++++++++++++++++++++- .../dswayland-server-tizen-extension.h | 189 ++++++++ src/DSWaylandServer/dswayland-server-tzsh.cpp | 247 +---------- src/DSWaylandServer/dswayland-server-tzsh.h | 116 +---- src/DSWaylandServer/dswayland-server-wayland.h | 5 + 7 files changed, 744 insertions(+), 383 deletions(-) diff --git a/src/DSWaylandServer/dswayland-server-input-method.cpp b/src/DSWaylandServer/dswayland-server-input-method.cpp index b9c41ac..005ffd1 100644 --- a/src/DSWaylandServer/dswayland-server-input-method.cpp +++ b/src/DSWaylandServer/dswayland-server-input-method.cpp @@ -207,7 +207,9 @@ namespace DSWaylandServer { wl_input_method_context::handle_input_panel_event, wl_input_method_context::handle_commit_content, wl_input_method_context::handle_update_candidate_state, - wl_input_method_context::handle_reshow_input_panel + wl_input_method_context::handle_reshow_input_panel, + wl_input_method_context::handle_set_floating_panel, + wl_input_method_context::handle_set_floating_drag_enabled }; void wl_input_method_context::input_method_context_destroy(Resource *) @@ -318,6 +320,14 @@ namespace DSWaylandServer { { } + void wl_input_method_context::input_method_context_set_floating_panel(Resource *, uint32_t ) + { + } + + void wl_input_method_context::input_method_context_set_floating_drag_enabled(Resource *, uint32_t ) + { + } + void wl_input_method_context::handle_destroy( ::wl_client *client, @@ -723,6 +733,30 @@ namespace DSWaylandServer { r); } + void wl_input_method_context::handle_set_floating_panel( + ::wl_client *client, + struct wl_resource *resource, + uint32_t state) + { + DS_UNUSED(client); + Resource *r = Resource::fromResource(resource); + static_cast(r->input_method_context_object)->input_method_context_set_floating_panel( + r, + state); + } + + void wl_input_method_context::handle_set_floating_drag_enabled( + ::wl_client *client, + struct wl_resource *resource, + uint32_t enabled) + { + DS_UNUSED(client); + Resource *r = Resource::fromResource(resource); + static_cast(r->input_method_context_object)->input_method_context_set_floating_drag_enabled( + r, + enabled); + } + void wl_input_method_context::send_reset() { DS_ASSERT_X(m_resource, "wl_input_method_context::reset", "Uninitialised resource"); @@ -1704,9 +1738,7 @@ namespace DSWaylandServer { const struct ::wl_input_panel_surface_interface wl_input_panel_surface::m_wl_input_panel_surface_interface = { wl_input_panel_surface::handle_set_toplevel, wl_input_panel_surface::handle_set_overlay_panel, - wl_input_panel_surface::handle_set_ready, - wl_input_panel_surface::handle_set_floating_panel, - wl_input_panel_surface::handle_set_floating_drag_enabled + wl_input_panel_surface::handle_set_ready }; void wl_input_panel_surface::input_panel_surface_set_toplevel(Resource *, struct ::wl_resource *, uint32_t ) @@ -1721,14 +1753,6 @@ namespace DSWaylandServer { { } - void wl_input_panel_surface::input_panel_surface_set_floating_panel(Resource *, uint32_t ) - { - } - - void wl_input_panel_surface::input_panel_surface_set_floating_drag_enabled(Resource *, uint32_t ) - { - } - void wl_input_panel_surface::handle_set_toplevel( ::wl_client *client, @@ -1766,30 +1790,6 @@ namespace DSWaylandServer { state); } - void wl_input_panel_surface::handle_set_floating_panel( - ::wl_client *client, - struct wl_resource *resource, - uint32_t state) - { - DS_UNUSED(client); - Resource *r = Resource::fromResource(resource); - static_cast(r->input_panel_surface_object)->input_panel_surface_set_floating_panel( - r, - state); - } - - void wl_input_panel_surface::handle_set_floating_drag_enabled( - ::wl_client *client, - struct wl_resource *resource, - uint32_t enabled) - { - DS_UNUSED(client); - Resource *r = Resource::fromResource(resource); - static_cast(r->input_panel_surface_object)->input_panel_surface_set_floating_drag_enabled( - r, - enabled); - } - wl_input_method_manager::wl_input_method_manager(struct ::wl_client *client, uint32_t id, int version) : m_resource_map() , m_resource(NULL) diff --git a/src/DSWaylandServer/dswayland-server-input-method.h b/src/DSWaylandServer/dswayland-server-input-method.h index 0f9a071..03c49a7 100644 --- a/src/DSWaylandServer/dswayland-server-input-method.h +++ b/src/DSWaylandServer/dswayland-server-input-method.h @@ -139,6 +139,8 @@ namespace DSWaylandServer { virtual void input_method_context_commit_content(Resource *resource, uint32_t serial, const std::string &content, const std::string &description, const std::string &mime_types); virtual void input_method_context_update_candidate_state(Resource *resource, uint32_t state); virtual void input_method_context_reshow_input_panel(Resource *resource); + virtual void input_method_context_set_floating_panel(Resource *resource, uint32_t state); + virtual void input_method_context_set_floating_drag_enabled(Resource *resource, uint32_t enabled); private: static void bind_func(struct ::wl_client *client, void *data, uint32_t version, uint32_t id); @@ -298,6 +300,14 @@ namespace DSWaylandServer { static void handle_reshow_input_panel( ::wl_client *client, struct wl_resource *resource); + static void handle_set_floating_panel( + ::wl_client *client, + struct wl_resource *resource, + uint32_t state); + static void handle_set_floating_drag_enabled( + ::wl_client *client, + struct wl_resource *resource, + uint32_t enabled); std::multimap m_resource_map; Resource *m_resource; @@ -538,8 +548,6 @@ namespace DSWaylandServer { virtual void input_panel_surface_set_toplevel(Resource *resource, struct ::wl_resource *output, uint32_t position); virtual void input_panel_surface_set_overlay_panel(Resource *resource); virtual void input_panel_surface_set_ready(Resource *resource, uint32_t state); - virtual void input_panel_surface_set_floating_panel(Resource *resource, uint32_t state); - virtual void input_panel_surface_set_floating_drag_enabled(Resource *resource, uint32_t enabled); private: static void bind_func(struct ::wl_client *client, void *data, uint32_t version, uint32_t id); @@ -563,14 +571,6 @@ namespace DSWaylandServer { ::wl_client *client, struct wl_resource *resource, uint32_t state); - static void handle_set_floating_panel( - ::wl_client *client, - struct wl_resource *resource, - uint32_t state); - static void handle_set_floating_drag_enabled( - ::wl_client *client, - struct wl_resource *resource, - uint32_t enabled); std::multimap m_resource_map; Resource *m_resource; diff --git a/src/DSWaylandServer/dswayland-server-tizen-extension.cpp b/src/DSWaylandServer/dswayland-server-tizen-extension.cpp index 15a014c..3236c91 100644 --- a/src/DSWaylandServer/dswayland-server-tizen-extension.cpp +++ b/src/DSWaylandServer/dswayland-server-tizen-extension.cpp @@ -603,7 +603,9 @@ namespace DSWaylandServer { tizen_policy::handle_ack_conformant_region, tizen_policy::handle_destroy, tizen_policy::handle_has_video, - tizen_policy::handle_set_appid + tizen_policy::handle_set_appid, + tizen_policy::handle_show, + tizen_policy::handle_hide }; void tizen_policy::tizen_policy_get_visibility(Resource *, uint32_t, struct ::wl_resource *) @@ -766,6 +768,14 @@ namespace DSWaylandServer { { } + void tizen_policy::tizen_policy_show(Resource *, struct ::wl_resource *) + { + } + + void tizen_policy::tizen_policy_hide(Resource *, struct ::wl_resource *) + { + } + void tizen_policy::handle_get_visibility( ::wl_client *client, @@ -1293,6 +1303,30 @@ namespace DSWaylandServer { std::string(appid)); } + void tizen_policy::handle_show( + ::wl_client *client, + struct wl_resource *resource, + struct ::wl_resource *surface) + { + DS_UNUSED(client); + Resource *r = Resource::fromResource(resource); + static_cast(r->tizen_policy_object)->tizen_policy_show( + r, + surface); + } + + void tizen_policy::handle_hide( + ::wl_client *client, + struct wl_resource *resource, + struct ::wl_resource *surface) + { + DS_UNUSED(client); + Resource *r = Resource::fromResource(resource); + static_cast(r->tizen_policy_object)->tizen_policy_hide( + r, + surface); + } + void tizen_policy::send_conformant(struct ::wl_resource *surface, uint32_t is_conformant) { DS_ASSERT_X(m_resource, "tizen_policy::conformant", "Uninitialised resource"); @@ -1971,6 +2005,7 @@ namespace DSWaylandServer { y); } + tizen_move_resize::tizen_move_resize(struct ::wl_client *client, uint32_t id, int version) : m_resource_map() , m_resource(NULL) @@ -2201,6 +2236,7 @@ namespace DSWaylandServer { error_state); } + tizen_gesture::tizen_gesture(struct ::wl_client *client, uint32_t id, int version) : m_resource_map() , m_resource(NULL) @@ -2839,6 +2875,7 @@ namespace DSWaylandServer { error); } + tizen_keyrouter::tizen_keyrouter(struct ::wl_client *client, uint32_t id, int version) : m_resource_map() , m_resource(NULL) @@ -3357,6 +3394,7 @@ namespace DSWaylandServer { mode); } + tizen_screenshooter::tizen_screenshooter(struct ::wl_client *client, uint32_t id, int version) : m_resource_map() , m_resource(NULL) @@ -3604,6 +3642,7 @@ namespace DSWaylandServer { noti); } + tizen_screenmirror::tizen_screenmirror(struct ::wl_client *client, uint32_t id, int version) : m_resource_map() , m_resource(NULL) @@ -3914,6 +3953,7 @@ namespace DSWaylandServer { resource); } + tizen_video::tizen_video(struct ::wl_client *client, uint32_t id, int version) : m_resource_map() , m_resource(NULL) @@ -4143,6 +4183,7 @@ namespace DSWaylandServer { format); } + tizen_video_object::tizen_video_object(struct ::wl_client *client, uint32_t id, int version) : m_resource_map() , m_resource(NULL) @@ -4443,6 +4484,7 @@ namespace DSWaylandServer { prefer_align); } + tizen_subsurface_watcher::tizen_subsurface_watcher(struct ::wl_client *client, uint32_t id, int version) : m_resource_map() , m_resource(NULL) @@ -4634,6 +4676,7 @@ namespace DSWaylandServer { value); } + tizen_viewport::tizen_viewport(struct ::wl_client *client, uint32_t id, int version) : m_resource_map() , m_resource(NULL) @@ -5003,6 +5046,7 @@ namespace DSWaylandServer { height); } + tizen_destination_mode::tizen_destination_mode(struct ::wl_client *client, uint32_t id, int version) : m_resource_map() , m_resource(NULL) @@ -5508,6 +5552,7 @@ namespace DSWaylandServer { sock_fd); } + tizen_input_device_manager::tizen_input_device_manager(struct ::wl_client *client, uint32_t id, int version) : m_resource_map() , m_resource(NULL) @@ -5672,7 +5717,8 @@ namespace DSWaylandServer { tizen_input_device_manager::handle_pointer_warp, tizen_input_device_manager::handle_init_generator_with_name, tizen_input_device_manager::handle_destroy, - tizen_input_device_manager::handle_generate_axis + tizen_input_device_manager::handle_generate_axis, + tizen_input_device_manager::handle_set_touch_count }; void tizen_input_device_manager::tizen_input_device_manager_block_events(Resource *, uint32_t , uint32_t , uint32_t ) @@ -5719,6 +5765,11 @@ namespace DSWaylandServer { { } + void tizen_input_device_manager::tizen_input_device_manager_set_touch_count(Resource *, int32_t ) + { + } + + void tizen_input_device_manager::handle_block_events( ::wl_client *client, struct wl_resource *resource, @@ -5875,6 +5926,18 @@ namespace DSWaylandServer { value); } + void tizen_input_device_manager::handle_set_touch_count( + ::wl_client *client, + struct wl_resource *resource, + int32_t max_count) + { + DS_UNUSED(client); + Resource *r = Resource::fromResource(resource); + static_cast(r->tizen_input_device_manager_object)->tizen_input_device_manager_set_touch_count( + r, + max_count); + } + void tizen_input_device_manager::send_device_add(uint32_t serial, const std::string &identifier, struct ::wl_resource *device, struct ::wl_resource *seat) { DS_ASSERT_X(m_resource, "tizen_input_device_manager::device_add", "Uninitialised resource"); @@ -5964,6 +6027,31 @@ namespace DSWaylandServer { resource); } + + void tizen_input_device_manager::send_max_touch_count(uint32_t serial, int32_t max_count, struct ::wl_resource *seat) + { + DS_ASSERT_X(m_resource, "tizen_input_device_manager::max_touch_count", "Uninitialised resource"); + if (DS_UNLIKELY(!m_resource)) { + WRN("could not call tizen_input_device_manager::max_touch_count as it's not initialised"); + return; + } + send_max_touch_count( + m_resource->handle, + serial, + max_count, + seat); + } + + void tizen_input_device_manager::send_max_touch_count(struct ::wl_resource *resource, uint32_t serial, int32_t max_count, struct ::wl_resource *seat) + { + tizen_input_device_manager_send_max_touch_count( + resource, + serial, + max_count, + seat); + } + + tizen_input_device::tizen_input_device(struct ::wl_client *client, uint32_t id, int version) : m_resource_map() , m_resource(NULL) @@ -6224,6 +6312,7 @@ namespace DSWaylandServer { value); } + tizen_launchscreen::tizen_launchscreen(struct ::wl_client *client, uint32_t id, int version) : m_resource_map() , m_resource(NULL) @@ -6874,6 +6963,7 @@ namespace DSWaylandServer { type); } + tizen_display_policy::tizen_display_policy(struct ::wl_client *client, uint32_t id, int version) : m_resource_map() , m_resource(NULL) @@ -7088,6 +7178,7 @@ namespace DSWaylandServer { error_state); } + tizen_indicator::tizen_indicator(struct ::wl_client *client, uint32_t id, int version) : m_resource_map() , m_resource(NULL) @@ -7338,6 +7429,7 @@ namespace DSWaylandServer { type); } + tizen_clipboard::tizen_clipboard(struct ::wl_client *client, uint32_t id, int version) : m_resource_map() , m_resource(NULL) @@ -7600,6 +7692,7 @@ namespace DSWaylandServer { allowed); } + tizen_screen_rotation::tizen_screen_rotation(struct ::wl_client *client, uint32_t id, int version) : m_resource_map() , m_resource(NULL) @@ -7810,5 +7903,386 @@ namespace DSWaylandServer { ignore); } + + tizen_renderer::tizen_renderer(struct ::wl_client *client, uint32_t id, int version) + : m_resource_map() + , m_resource(NULL) + , m_global(NULL) + , m_globalVersion(0) + , m_displayDestroyedListener() + { + init(client, id, version); + } + + tizen_renderer::tizen_renderer(struct ::wl_display *display, int version) + : m_resource_map() + , m_resource(NULL) + , m_global(NULL) + , m_globalVersion(0) + , m_displayDestroyedListener() + { + init(display, version); + } + + tizen_renderer::tizen_renderer(struct ::wl_resource *resource) + : m_resource_map() + , m_resource(NULL) + , m_global(NULL) + , m_globalVersion(0) + , m_displayDestroyedListener() + { + init(resource); + } + + tizen_renderer::tizen_renderer() + : m_resource_map() + , m_resource(NULL) + , m_global(NULL) + , m_globalVersion(0) + , m_displayDestroyedListener() + { + } + + tizen_renderer::~tizen_renderer() + { + std::multimap::iterator it; + for (it = m_resource_map.begin() ; it != m_resource_map.end() ; it++) { + tizen_renderer::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_renderer::init(struct ::wl_client *client, uint32_t id, int version) + { + m_resource = bind(client, id, version); + } + + void tizen_renderer::init(struct ::wl_resource *resource) + { + m_resource = bind(resource); + } + + tizen_renderer::Resource *tizen_renderer::add(struct ::wl_client *client, int version) + { + Resource *resource = bind(client, 0, version); + m_resource_map.insert(std::pair(client, resource)); + return resource; + } + + tizen_renderer::Resource *tizen_renderer::add(struct ::wl_client *client, uint32_t id, int version) + { + Resource *resource = bind(client, id, version); + m_resource_map.insert(std::pair(client, resource)); + return resource; + } + + void tizen_renderer::init(struct ::wl_display *display, int version) + { + m_global = wl_global_create(display, &::tizen_renderer_interface, version, this, bind_func); + m_globalVersion = version; + m_displayDestroyedListener.notify = tizen_renderer::display_destroy_func; + m_displayDestroyedListener.parent = this; + wl_display_add_destroy_listener(display, &m_displayDestroyedListener); + } + + const struct wl_interface *tizen_renderer::interface() + { + return &::tizen_renderer_interface; + } + + tizen_renderer::Resource *tizen_renderer::tizen_renderer_allocate() + { + return new Resource; + } + + void tizen_renderer::tizen_renderer_bind_resource(Resource *) + { + } + + void tizen_renderer::tizen_renderer_destroy_resource(Resource *) + { + } + + void tizen_renderer::bind_func(struct ::wl_client *client, void *data, uint32_t version, uint32_t id) + { + tizen_renderer *that = static_cast(data); + that->add(client, id, std::min(that->m_globalVersion, version)); + } + + void tizen_renderer::display_destroy_func(struct ::wl_listener *listener, void *data) + { + DS_UNUSED(data); + tizen_renderer *that = static_cast(listener)->parent; + that->m_global = NULL; + } + + void tizen_renderer::destroy_func(struct ::wl_resource *client_resource) + { + Resource *resource = Resource::fromResource(client_resource); + DS_ASSERT(resource); + tizen_renderer *that = resource->tizen_renderer_object; + that->m_resource_map.erase(resource->client()); + that->tizen_renderer_destroy_resource(resource); + delete resource; + } + + tizen_renderer::Resource *tizen_renderer::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_renderer_interface, version, id); + return bind(handle); + } + + tizen_renderer::Resource *tizen_renderer::bind(struct ::wl_resource *handle) + { + Resource *resource = tizen_renderer_allocate(); + resource->tizen_renderer_object = this; + + wl_resource_set_implementation(handle, &m_tizen_renderer_interface, resource, destroy_func); + resource->handle = handle; + tizen_renderer_bind_resource(resource); + return resource; + } + tizen_renderer::Resource *tizen_renderer::Resource::fromResource(struct ::wl_resource *resource) + { + if (DS_UNLIKELY(!resource)) + return NULL; + if (wl_resource_instance_of(resource, &::tizen_renderer_interface, &m_tizen_renderer_interface)) + return static_cast(wl_resource_get_user_data(resource)); + return NULL; + } + + const struct ::tizen_renderer_interface tizen_renderer::m_tizen_renderer_interface = { + tizen_renderer::handle_get_renderer_surface, + tizen_renderer::handle_destroy + }; + + void tizen_renderer::tizen_renderer_get_renderer_surface(Resource *, uint32_t, struct ::wl_resource *) + { + } + + void tizen_renderer::tizen_renderer_destroy(Resource *) + { + } + + + void tizen_renderer::handle_get_renderer_surface( + ::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_renderer_object)->tizen_renderer_get_renderer_surface( + r, + id, + surface); + } + + void tizen_renderer::handle_destroy( + ::wl_client *client, + struct wl_resource *resource) + { + DS_UNUSED(client); + Resource *r = Resource::fromResource(resource); + static_cast(r->tizen_renderer_object)->tizen_renderer_destroy( + r); + } + + tizen_renderer_surface::tizen_renderer_surface(struct ::wl_client *client, uint32_t id, int version) + : m_resource_map() + , m_resource(NULL) + , m_global(NULL) + , m_globalVersion(0) + , m_displayDestroyedListener() + { + init(client, id, version); + } + + tizen_renderer_surface::tizen_renderer_surface(struct ::wl_display *display, int version) + : m_resource_map() + , m_resource(NULL) + , m_global(NULL) + , m_globalVersion(0) + , m_displayDestroyedListener() + { + init(display, version); + } + + tizen_renderer_surface::tizen_renderer_surface(struct ::wl_resource *resource) + : m_resource_map() + , m_resource(NULL) + , m_global(NULL) + , m_globalVersion(0) + , m_displayDestroyedListener() + { + init(resource); + } + + tizen_renderer_surface::tizen_renderer_surface() + : m_resource_map() + , m_resource(NULL) + , m_global(NULL) + , m_globalVersion(0) + , m_displayDestroyedListener() + { + } + + tizen_renderer_surface::~tizen_renderer_surface() + { + std::multimap::iterator it; + for (it = m_resource_map.begin() ; it != m_resource_map.end() ; it++) { + tizen_renderer_surface::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_renderer_surface::init(struct ::wl_client *client, uint32_t id, int version) + { + m_resource = bind(client, id, version); + } + + void tizen_renderer_surface::init(struct ::wl_resource *resource) + { + m_resource = bind(resource); + } + + tizen_renderer_surface::Resource *tizen_renderer_surface::add(struct ::wl_client *client, int version) + { + Resource *resource = bind(client, 0, version); + m_resource_map.insert(std::pair(client, resource)); + return resource; + } + + tizen_renderer_surface::Resource *tizen_renderer_surface::add(struct ::wl_client *client, uint32_t id, int version) + { + Resource *resource = bind(client, id, version); + m_resource_map.insert(std::pair(client, resource)); + return resource; + } + + void tizen_renderer_surface::init(struct ::wl_display *display, int version) + { + m_global = wl_global_create(display, &::tizen_renderer_surface_interface, version, this, bind_func); + m_globalVersion = version; + m_displayDestroyedListener.notify = tizen_renderer_surface::display_destroy_func; + m_displayDestroyedListener.parent = this; + wl_display_add_destroy_listener(display, &m_displayDestroyedListener); + } + + const struct wl_interface *tizen_renderer_surface::interface() + { + return &::tizen_renderer_surface_interface; + } + + tizen_renderer_surface::Resource *tizen_renderer_surface::tizen_renderer_surface_allocate() + { + return new Resource; + } + + void tizen_renderer_surface::tizen_renderer_surface_bind_resource(Resource *) + { + } + + void tizen_renderer_surface::tizen_renderer_surface_destroy_resource(Resource *) + { + } + + void tizen_renderer_surface::bind_func(struct ::wl_client *client, void *data, uint32_t version, uint32_t id) + { + tizen_renderer_surface *that = static_cast(data); + that->add(client, id, std::min(that->m_globalVersion, version)); + } + + void tizen_renderer_surface::display_destroy_func(struct ::wl_listener *listener, void *data) + { + DS_UNUSED(data); + tizen_renderer_surface *that = static_cast(listener)->parent; + that->m_global = NULL; + } + + void tizen_renderer_surface::destroy_func(struct ::wl_resource *client_resource) + { + Resource *resource = Resource::fromResource(client_resource); + DS_ASSERT(resource); + tizen_renderer_surface *that = resource->tizen_renderer_surface_object; + that->m_resource_map.erase(resource->client()); + that->tizen_renderer_surface_destroy_resource(resource); + delete resource; + } + + tizen_renderer_surface::Resource *tizen_renderer_surface::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_renderer_surface_interface, version, id); + return bind(handle); + } + + tizen_renderer_surface::Resource *tizen_renderer_surface::bind(struct ::wl_resource *handle) + { + Resource *resource = tizen_renderer_surface_allocate(); + resource->tizen_renderer_surface_object = this; + + wl_resource_set_implementation(handle, &m_tizen_renderer_surface_interface, resource, destroy_func); + resource->handle = handle; + tizen_renderer_surface_bind_resource(resource); + return resource; + } + tizen_renderer_surface::Resource *tizen_renderer_surface::Resource::fromResource(struct ::wl_resource *resource) + { + if (DS_UNLIKELY(!resource)) + return NULL; + if (wl_resource_instance_of(resource, &::tizen_renderer_surface_interface, &m_tizen_renderer_surface_interface)) + return static_cast(wl_resource_get_user_data(resource)); + return NULL; + } + + const struct ::tizen_renderer_surface_interface tizen_renderer_surface::m_tizen_renderer_surface_interface = { + tizen_renderer_surface::handle_destroy + }; + + void tizen_renderer_surface::tizen_renderer_surface_destroy(Resource *) + { + } + + + void tizen_renderer_surface::handle_destroy( + ::wl_client *client, + struct wl_resource *resource) + { + DS_UNUSED(client); + Resource *r = Resource::fromResource(resource); + static_cast(r->tizen_renderer_surface_object)->tizen_renderer_surface_destroy( + r); + } + + void tizen_renderer_surface::send_redraw_request() + { + DS_ASSERT_X(m_resource, "tizen_renderer_surface::redraw_request", "Uninitialised resource"); + if (DS_UNLIKELY(!m_resource)) { + WRN("could not call tizen_renderer_surface::redraw_request as it's not initialised"); + return; + } + send_redraw_request( + m_resource->handle); + } + + void tizen_renderer_surface::send_redraw_request(struct ::wl_resource *resource) + { + tizen_renderer_surface_send_redraw_request( + resource); + } + } /*LCOV_EXCL_STOP*/ diff --git a/src/DSWaylandServer/dswayland-server-tizen-extension.h b/src/DSWaylandServer/dswayland-server-tizen-extension.h index cdc2b1f..26b8301 100644 --- a/src/DSWaylandServer/dswayland-server-tizen-extension.h +++ b/src/DSWaylandServer/dswayland-server-tizen-extension.h @@ -356,6 +356,8 @@ namespace DSWaylandServer { virtual void tizen_policy_destroy(Resource *resource); virtual void tizen_policy_has_video(Resource *resource, struct ::wl_resource *surface, uint32_t has); virtual void tizen_policy_set_appid(Resource *resource, int32_t pid, const std::string &appid); + virtual void tizen_policy_show(Resource *resource, struct ::wl_resource *surface); + virtual void tizen_policy_hide(Resource *resource, struct ::wl_resource *surface); private: static void bind_func(struct ::wl_client *client, void *data, uint32_t version, uint32_t id); @@ -550,6 +552,14 @@ namespace DSWaylandServer { struct wl_resource *resource, int32_t pid, const char *appid); + static void handle_show( + ::wl_client *client, + struct wl_resource *resource, + struct ::wl_resource *surface); + static void handle_hide( + ::wl_client *client, + struct wl_resource *resource, + struct ::wl_resource *surface); std::multimap m_resource_map; Resource *m_resource; @@ -2172,6 +2182,7 @@ namespace DSWaylandServer { error_invalid_parameter = 5, // argument is invalid error_invalid_surface = 6, // the given surface is not visible or pointer is not on the given surface error_no_pointer_available = 7, // there is no pointer available to warp + error_not_allowed = 8, // this request is not allowed in this system }; enum pointer_event_type { @@ -2199,6 +2210,8 @@ namespace DSWaylandServer { void send_error(struct ::wl_resource *resource, uint32_t errorcode); void send_block_expired(); void send_block_expired(struct ::wl_resource *resource); + void send_max_touch_count(uint32_t serial, int32_t max_count, struct ::wl_resource *seat); + void send_max_touch_count(struct ::wl_resource *resource, uint32_t serial, int32_t max_count, struct ::wl_resource *seat); protected: virtual Resource *tizen_input_device_manager_allocate(); @@ -2217,6 +2230,7 @@ namespace DSWaylandServer { virtual void tizen_input_device_manager_init_generator_with_name(Resource *resource, uint32_t clas, const std::string &name); virtual void tizen_input_device_manager_destroy(Resource *resource); virtual void tizen_input_device_manager_generate_axis(Resource *resource, uint32_t type, wl_fixed_t value); + virtual void tizen_input_device_manager_set_touch_count(Resource *resource, int32_t max_count); private: static void bind_func(struct ::wl_client *client, void *data, uint32_t version, uint32_t id); @@ -2284,6 +2298,10 @@ namespace DSWaylandServer { struct wl_resource *resource, uint32_t type, wl_fixed_t value); + static void handle_set_touch_count( + ::wl_client *client, + struct wl_resource *resource, + int32_t max_count); std::multimap m_resource_map; Resource *m_resource; @@ -3114,6 +3132,177 @@ namespace DSWaylandServer { }; DisplayDestroyedListener m_displayDestroyedListener; }; + + class tizen_renderer + { + public: + tizen_renderer(struct ::wl_client *client, uint32_t id, int version); + tizen_renderer(struct ::wl_display *display, int version); + tizen_renderer(struct ::wl_resource *resource); + tizen_renderer(); + + virtual ~tizen_renderer(); + + class Resource + { + public: + Resource() : tizen_renderer_object(NULL), handle(NULL) {} + virtual ~Resource() {} + + tizen_renderer *tizen_renderer_object; + tizen_renderer *object() { return tizen_renderer_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, uint32_t 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, uint32_t id, int version); + Resource *add(struct wl_list *resource_list, struct ::wl_client *client, uint32_t 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; } + + + protected: + virtual Resource *tizen_renderer_allocate(); + + virtual void tizen_renderer_bind_resource(Resource *resource); + virtual void tizen_renderer_destroy_resource(Resource *resource); + + virtual void tizen_renderer_get_renderer_surface(Resource *resource, uint32_t id, struct ::wl_resource *surface); + virtual void tizen_renderer_destroy(Resource *resource); + + 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_renderer_interface m_tizen_renderer_interface; + + static void handle_get_renderer_surface( + ::wl_client *client, + struct wl_resource *resource, + uint32_t id, + struct ::wl_resource *surface); + static void handle_destroy( + ::wl_client *client, + struct wl_resource *resource); + + std::multimap m_resource_map; + Resource *m_resource; + struct ::wl_global *m_global; + uint32_t m_globalVersion; + struct DisplayDestroyedListener : ::wl_listener { + tizen_renderer *parent; + DisplayDestroyedListener(): parent(NULL) {} + }; + DisplayDestroyedListener m_displayDestroyedListener; + }; + + class tizen_renderer_surface + { + public: + tizen_renderer_surface(struct ::wl_client *client, uint32_t id, int version); + tizen_renderer_surface(struct ::wl_display *display, int version); + tizen_renderer_surface(struct ::wl_resource *resource); + tizen_renderer_surface(); + + virtual ~tizen_renderer_surface(); + + class Resource + { + public: + Resource() : tizen_renderer_surface_object(NULL), handle(NULL) {} + virtual ~Resource() {} + + tizen_renderer_surface *tizen_renderer_surface_object; + tizen_renderer_surface *object() { return tizen_renderer_surface_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, uint32_t 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, uint32_t id, int version); + Resource *add(struct wl_list *resource_list, struct ::wl_client *client, uint32_t 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_redraw_request(); + void send_redraw_request(struct ::wl_resource *resource); + + protected: + virtual Resource *tizen_renderer_surface_allocate(); + + virtual void tizen_renderer_surface_bind_resource(Resource *resource); + virtual void tizen_renderer_surface_destroy_resource(Resource *resource); + + virtual void tizen_renderer_surface_destroy(Resource *resource); + + 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_renderer_surface_interface m_tizen_renderer_surface_interface; + + static void handle_destroy( + ::wl_client *client, + struct wl_resource *resource); + + std::multimap m_resource_map; + Resource *m_resource; + struct ::wl_global *m_global; + uint32_t m_globalVersion; + struct DisplayDestroyedListener : ::wl_listener { + tizen_renderer_surface *parent; + DisplayDestroyedListener(): parent(NULL) {} + }; + DisplayDestroyedListener m_displayDestroyedListener; + }; } /*LCOV_EXCL_STOP*/ diff --git a/src/DSWaylandServer/dswayland-server-tzsh.cpp b/src/DSWaylandServer/dswayland-server-tzsh.cpp index ae8c2a1..d6b1d66 100644 --- a/src/DSWaylandServer/dswayland-server-tzsh.cpp +++ b/src/DSWaylandServer/dswayland-server-tzsh.cpp @@ -185,7 +185,6 @@ namespace DSWaylandServer { tizen_ws_shell::handle_service_create, tizen_ws_shell::handle_region_create, tizen_ws_shell::handle_quickpanel_get, - tizen_ws_shell::handle_tvsrv_get, tizen_ws_shell::handle_extension_get, tizen_ws_shell::handle_softkey_get, tizen_ws_shell::handle_shared_widget_launch_get @@ -207,10 +206,6 @@ namespace DSWaylandServer { { } - void tizen_ws_shell::tizen_ws_shell_tvsrv_get(Resource *, uint32_t, uint32_t ) - { - } - void tizen_ws_shell::tizen_ws_shell_extension_get(Resource *, uint32_t, const std::string &) { } @@ -276,20 +271,6 @@ namespace DSWaylandServer { win); } - void tizen_ws_shell::handle_tvsrv_get( - ::wl_client *client, - struct wl_resource *resource, - uint32_t id, - uint32_t win) - { - DS_UNUSED(client); - Resource *r = Resource::fromResource(resource); - static_cast(r->tizen_ws_shell_object)->tizen_ws_shell_tvsrv_get( - r, - id, - win); - } - void tizen_ws_shell::handle_extension_get( ::wl_client *client, struct wl_resource *resource, @@ -719,208 +700,6 @@ namespace DSWaylandServer { } - tws_tvsrv::tws_tvsrv(struct ::wl_client *client, uint32_t id, int version) - : m_resource_map() - , m_resource(NULL) - , m_global(NULL) - , m_globalVersion(0) - , m_displayDestroyedListener() - { - init(client, id, version); - } - - tws_tvsrv::tws_tvsrv(struct ::wl_display *display, int version) - : m_resource_map() - , m_resource(NULL) - , m_global(NULL) - , m_globalVersion(0) - , m_displayDestroyedListener() - { - init(display, version); - } - - tws_tvsrv::tws_tvsrv(struct ::wl_resource *resource) - : m_resource_map() - , m_resource(NULL) - , m_global(NULL) - , m_globalVersion(0) - , m_displayDestroyedListener() - { - init(resource); - } - - tws_tvsrv::tws_tvsrv() - : m_resource_map() - , m_resource(NULL) - , m_global(NULL) - , m_globalVersion(0) - , m_displayDestroyedListener() - { - } - - tws_tvsrv::~tws_tvsrv() - { - std::multimap::iterator it; - for (it = m_resource_map.begin() ; it != m_resource_map.end() ; it++) { - tws_tvsrv::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 tws_tvsrv::init(struct ::wl_client *client, uint32_t id, int version) - { - m_resource = bind(client, id, version); - } - - void tws_tvsrv::init(struct ::wl_resource *resource) - { - m_resource = bind(resource); - } - - tws_tvsrv::Resource *tws_tvsrv::add(struct ::wl_client *client, int version) - { - Resource *resource = bind(client, 0, version); - m_resource_map.insert(std::pair(client, resource)); - return resource; - } - - tws_tvsrv::Resource *tws_tvsrv::add(struct ::wl_client *client, uint32_t id, int version) - { - Resource *resource = bind(client, id, version); - m_resource_map.insert(std::pair(client, resource)); - return resource; - } - - void tws_tvsrv::init(struct ::wl_display *display, int version) - { - m_global = wl_global_create(display, &::tws_tvsrv_interface, version, this, bind_func); - m_globalVersion = version; - m_displayDestroyedListener.notify = tws_tvsrv::display_destroy_func; - m_displayDestroyedListener.parent = this; - wl_display_add_destroy_listener(display, &m_displayDestroyedListener); - } - - const struct wl_interface *tws_tvsrv::interface() - { - return &::tws_tvsrv_interface; - } - - tws_tvsrv::Resource *tws_tvsrv::tws_tvsrv_allocate() - { - return new Resource; - } - - void tws_tvsrv::tws_tvsrv_bind_resource(Resource *) - { - } - - void tws_tvsrv::tws_tvsrv_destroy_resource(Resource *) - { - } - - void tws_tvsrv::bind_func(struct ::wl_client *client, void *data, uint32_t version, uint32_t id) - { - tws_tvsrv *that = static_cast(data); - that->add(client, id, std::min(that->m_globalVersion, version)); - } - - void tws_tvsrv::display_destroy_func(struct ::wl_listener *listener, void *data) - { - DS_UNUSED(data); - tws_tvsrv *that = static_cast(listener)->parent; - that->m_global = NULL; - } - - void tws_tvsrv::destroy_func(struct ::wl_resource *client_resource) - { - Resource *resource = Resource::fromResource(client_resource); - DS_ASSERT(resource); - tws_tvsrv *that = resource->tws_tvsrv_object; - that->m_resource_map.erase(resource->client()); - that->tws_tvsrv_destroy_resource(resource); - delete resource; - } - - tws_tvsrv::Resource *tws_tvsrv::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, &::tws_tvsrv_interface, version, id); - return bind(handle); - } - - tws_tvsrv::Resource *tws_tvsrv::bind(struct ::wl_resource *handle) - { - Resource *resource = tws_tvsrv_allocate(); - resource->tws_tvsrv_object = this; - - wl_resource_set_implementation(handle, &m_tws_tvsrv_interface, resource, destroy_func); - resource->handle = handle; - tws_tvsrv_bind_resource(resource); - return resource; - } - tws_tvsrv::Resource *tws_tvsrv::Resource::fromResource(struct ::wl_resource *resource) - { - if (DS_UNLIKELY(!resource)) - return NULL; - if (wl_resource_instance_of(resource, &::tws_tvsrv_interface, &m_tws_tvsrv_interface)) - return static_cast(wl_resource_get_user_data(resource)); - return NULL; - } - - const struct ::tws_tvsrv_interface tws_tvsrv::m_tws_tvsrv_interface = { - tws_tvsrv::handle_release, - tws_tvsrv::handle_bind, - tws_tvsrv::handle_unbind - }; - - void tws_tvsrv::tws_tvsrv_release(Resource *) - { - } - - void tws_tvsrv::tws_tvsrv_bind(Resource *) - { - } - - void tws_tvsrv::tws_tvsrv_unbind(Resource *) - { - } - - - void tws_tvsrv::handle_release( - ::wl_client *client, - struct wl_resource *resource) - { - DS_UNUSED(client); - Resource *r = Resource::fromResource(resource); - static_cast(r->tws_tvsrv_object)->tws_tvsrv_release( - r); - } - - void tws_tvsrv::handle_bind( - ::wl_client *client, - struct wl_resource *resource) - { - DS_UNUSED(client); - Resource *r = Resource::fromResource(resource); - static_cast(r->tws_tvsrv_object)->tws_tvsrv_bind( - r); - } - - void tws_tvsrv::handle_unbind( - ::wl_client *client, - struct wl_resource *resource) - { - DS_UNUSED(client); - Resource *r = Resource::fromResource(resource); - static_cast(r->tws_tvsrv_object)->tws_tvsrv_unbind( - r); - } - tws_region::tws_region(struct ::wl_client *client, uint32_t id, int version) : m_resource_map() , m_resource(NULL) @@ -2062,7 +1841,7 @@ namespace DSWaylandServer { { } - void tws_service_screensaver_manager::tws_service_screensaver_manager_state_get(Resource *) + void tws_service_screensaver_manager::tws_service_screensaver_manager_state_get(Resource *, uint32_t ) { } @@ -2111,12 +1890,14 @@ namespace DSWaylandServer { void tws_service_screensaver_manager::handle_state_get( ::wl_client *client, - struct wl_resource *resource) + struct wl_resource *resource, + uint32_t state_type) { DS_UNUSED(client); Resource *r = Resource::fromResource(resource); static_cast(r->tws_service_screensaver_manager_object)->tws_service_screensaver_manager_state_get( - r); + r, + state_type); } void tws_service_screensaver_manager::send_idle() @@ -3139,11 +2920,11 @@ namespace DSWaylandServer { { } - void tws_softkey::tws_softkey_state_set(Resource *) + void tws_softkey::tws_softkey_state_set(Resource *, int32_t , int32_t ) { } - void tws_softkey::tws_softkey_state_get(Resource *) + void tws_softkey::tws_softkey_state_get(Resource *, int32_t ) { } @@ -3190,22 +2971,28 @@ namespace DSWaylandServer { void tws_softkey::handle_state_set( ::wl_client *client, - struct wl_resource *resource) + struct wl_resource *resource, + int32_t type, + int32_t val) { DS_UNUSED(client); Resource *r = Resource::fromResource(resource); static_cast(r->tws_softkey_object)->tws_softkey_state_set( - r); + r, + type, + val); } void tws_softkey::handle_state_get( ::wl_client *client, - struct wl_resource *resource) + struct wl_resource *resource, + int32_t type) { DS_UNUSED(client); Resource *r = Resource::fromResource(resource); static_cast(r->tws_softkey_object)->tws_softkey_state_get( - r); + r, + type); } void tws_softkey::send_support_check_done(int32_t support) diff --git a/src/DSWaylandServer/dswayland-server-tzsh.h b/src/DSWaylandServer/dswayland-server-tzsh.h index 3b94e6c..0d347b8 100644 --- a/src/DSWaylandServer/dswayland-server-tzsh.h +++ b/src/DSWaylandServer/dswayland-server-tzsh.h @@ -95,7 +95,6 @@ namespace DSWaylandServer { virtual void tizen_ws_shell_service_create(Resource *resource, uint32_t id, uint32_t win, const std::string &name); virtual void tizen_ws_shell_region_create(Resource *resource, uint32_t id); virtual void tizen_ws_shell_quickpanel_get(Resource *resource, uint32_t id, uint32_t win); - virtual void tizen_ws_shell_tvsrv_get(Resource *resource, uint32_t id, uint32_t win); virtual void tizen_ws_shell_extension_get(Resource *resource, uint32_t id, const std::string &name); virtual void tizen_ws_shell_softkey_get(Resource *resource, uint32_t id, uint32_t win); virtual void tizen_ws_shell_shared_widget_launch_get(Resource *resource, uint32_t id, uint32_t win); @@ -128,11 +127,6 @@ namespace DSWaylandServer { struct wl_resource *resource, uint32_t id, uint32_t win); - static void handle_tvsrv_get( - ::wl_client *client, - struct wl_resource *resource, - uint32_t id, - uint32_t win); static void handle_extension_get( ::wl_client *client, struct wl_resource *resource, @@ -236,6 +230,7 @@ namespace DSWaylandServer { type_value_unknown = 0, type_value_system_default = 1, type_value_context_menu = 2, + type_value_apps_menu = 3, }; void send_state_get_done(int32_t type, int32_t value, uint32_t error_state); @@ -307,99 +302,6 @@ namespace DSWaylandServer { DisplayDestroyedListener m_displayDestroyedListener; }; - class tws_tvsrv - { - public: - tws_tvsrv(struct ::wl_client *client, uint32_t id, int version); - tws_tvsrv(struct ::wl_display *display, int version); - tws_tvsrv(struct ::wl_resource *resource); - tws_tvsrv(); - - virtual ~tws_tvsrv(); - - class Resource - { - public: - Resource() : tws_tvsrv_object(NULL), handle(NULL) {} - virtual ~Resource() {} - - tws_tvsrv *tws_tvsrv_object; - tws_tvsrv *object() { return tws_tvsrv_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, uint32_t 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, uint32_t id, int version); - Resource *add(struct wl_list *resource_list, struct ::wl_client *client, uint32_t 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; } - - - enum error { - error_request_rejected = 0, // given request is denied - }; - - protected: - virtual Resource *tws_tvsrv_allocate(); - - virtual void tws_tvsrv_bind_resource(Resource *resource); - virtual void tws_tvsrv_destroy_resource(Resource *resource); - - virtual void tws_tvsrv_release(Resource *resource); - virtual void tws_tvsrv_bind(Resource *resource); - virtual void tws_tvsrv_unbind(Resource *resource); - - 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 ::tws_tvsrv_interface m_tws_tvsrv_interface; - - static void handle_release( - ::wl_client *client, - struct wl_resource *resource); - static void handle_bind( - ::wl_client *client, - struct wl_resource *resource); - static void handle_unbind( - ::wl_client *client, - struct wl_resource *resource); - - std::multimap m_resource_map; - Resource *m_resource; - struct ::wl_global *m_global; - uint32_t m_globalVersion; - struct DisplayDestroyedListener : ::wl_listener { - tws_tvsrv *parent; - DisplayDestroyedListener(): parent(NULL) {} - }; - DisplayDestroyedListener m_displayDestroyedListener; - }; - class tws_region { public: @@ -893,7 +795,7 @@ namespace DSWaylandServer { virtual void tws_service_screensaver_manager_enable(Resource *resource); virtual void tws_service_screensaver_manager_disable(Resource *resource); virtual void tws_service_screensaver_manager_idle_time_set(Resource *resource, uint32_t id); - virtual void tws_service_screensaver_manager_state_get(Resource *resource); + virtual void tws_service_screensaver_manager_state_get(Resource *resource, uint32_t state_type); private: static void bind_func(struct ::wl_client *client, void *data, uint32_t version, uint32_t id); @@ -920,7 +822,8 @@ namespace DSWaylandServer { uint32_t id); static void handle_state_get( ::wl_client *client, - struct wl_resource *resource); + struct wl_resource *resource, + uint32_t state_type); std::multimap m_resource_map; Resource *m_resource; @@ -1382,8 +1285,8 @@ namespace DSWaylandServer { virtual void tws_softkey_support_check(Resource *resource); virtual void tws_softkey_show(Resource *resource); virtual void tws_softkey_hide(Resource *resource); - virtual void tws_softkey_state_set(Resource *resource); - virtual void tws_softkey_state_get(Resource *resource); + virtual void tws_softkey_state_set(Resource *resource, int32_t type, int32_t val); + virtual void tws_softkey_state_get(Resource *resource, int32_t type); private: static void bind_func(struct ::wl_client *client, void *data, uint32_t version, uint32_t id); @@ -1409,10 +1312,13 @@ namespace DSWaylandServer { struct wl_resource *resource); static void handle_state_set( ::wl_client *client, - struct wl_resource *resource); + struct wl_resource *resource, + int32_t type, + int32_t val); static void handle_state_get( ::wl_client *client, - struct wl_resource *resource); + struct wl_resource *resource, + int32_t type); std::multimap m_resource_map; Resource *m_resource; diff --git a/src/DSWaylandServer/dswayland-server-wayland.h b/src/DSWaylandServer/dswayland-server-wayland.h index 0cdfa52..4bf6c30 100644 --- a/src/DSWaylandServer/dswayland-server-wayland.h +++ b/src/DSWaylandServer/dswayland-server-wayland.h @@ -1300,6 +1300,7 @@ namespace DSWaylandServer { enum error { error_invalid_scale = 0, // buffer scale value is invalid error_invalid_transform = 1, // buffer transform value is invalid + error_invalid_size = 2, // buffer size is invalid }; void send_enter(struct ::wl_resource *output); @@ -1446,6 +1447,10 @@ namespace DSWaylandServer { capability_touch = 4, // the seat has touch devices }; + enum error { + error_missing_capability = 0, // get_pointer, get_keyboard or get_touch called on seat without the matching capability + }; + void send_capabilities(uint32_t capabilities); void send_capabilities(struct ::wl_resource *resource, uint32_t capabilities); void send_name(const std::string &name); -- 2.7.4