/* * Copyright (C) 2019 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "host/libs/wayland/wayland_shell.h" #include #include #include #include namespace wayland { namespace { void zxdg_positioner_v6_destroy(wl_client*, wl_resource* positioner) { LOG(VERBOSE) << __FUNCTION__ << " positioner=" << positioner; wl_resource_destroy(positioner); } void zxdg_positioner_v6_set_size(wl_client*, wl_resource* positioner, int32_t w, int32_t h) { LOG(VERBOSE) << __FUNCTION__ << " positioner=" << positioner << " w=" << w << " h=" << h; } void zxdg_positioner_v6_set_anchor_rect(wl_client*, wl_resource* positioner, int32_t x, int32_t y, int32_t w, int32_t h) { LOG(VERBOSE) << __FUNCTION__ << " positioner=" << positioner << " x=" << x << " y=" << y << " w=" << w << " h=" << h; } void zxdg_positioner_v6_set_anchor(wl_client*, wl_resource* positioner, uint32_t anchor) { LOG(VERBOSE) << __FUNCTION__ << " positioner=" << positioner << " anchor=" << anchor; } void zxdg_positioner_v6_set_gravity(wl_client*, wl_resource* positioner, uint32_t gravity) { LOG(VERBOSE) << __FUNCTION__ << " positioner=" << positioner << " gravity=" << gravity; } void zxdg_positioner_v6_set_constraint_adjustment(wl_client*, wl_resource* positioner, uint32_t adjustment) { LOG(VERBOSE) << __FUNCTION__ << " positioner=" << positioner << " adjustment=" << adjustment; } void zxdg_positioner_v6_set_offset(wl_client*, wl_resource* positioner, int32_t x, int32_t y) { LOG(VERBOSE) << __FUNCTION__ << " positioner=" << positioner << " x=" << x << " y=" << y; } const struct zxdg_positioner_v6_interface zxdg_positioner_v6_implementation = { .destroy = zxdg_positioner_v6_destroy, .set_size = zxdg_positioner_v6_set_size, .set_anchor_rect = zxdg_positioner_v6_set_anchor_rect, .set_anchor = zxdg_positioner_v6_set_anchor, .set_gravity = zxdg_positioner_v6_set_gravity, .set_constraint_adjustment = zxdg_positioner_v6_set_constraint_adjustment, .set_offset = zxdg_positioner_v6_set_offset}; void zxdg_toplevel_v6_destroy(wl_client*, wl_resource* toplevel) { LOG(VERBOSE) << __FUNCTION__ << " toplevel=" << toplevel; wl_resource_destroy(toplevel); } void zxdg_toplevel_v6_set_parent(wl_client*, wl_resource* toplevel, wl_resource* parent_toplevel) { LOG(VERBOSE) << __FUNCTION__ << " toplevel=" << toplevel << " parent_toplevel=" << parent_toplevel; } void zxdg_toplevel_v6_set_title(wl_client*, wl_resource* toplevel, const char* title) { LOG(VERBOSE) << __FUNCTION__ << " toplevel=" << toplevel << " title=" << title; } void zxdg_toplevel_v6_set_app_id(wl_client*, wl_resource* toplevel, const char* app) { LOG(VERBOSE) << __FUNCTION__ << " toplevel=" << toplevel << " app=" << app; } void zxdg_toplevel_v6_show_window_menu(wl_client*, wl_resource* toplevel, wl_resource* seat, uint32_t serial, int32_t x, int32_t y) { LOG(VERBOSE) << __FUNCTION__ << " toplevel=" << toplevel << " seat=" << seat << " serial=" << serial << " x=" << x << " y=" << y; } void zxdg_toplevel_v6_move(wl_client*, wl_resource* toplevel, wl_resource* seat, uint32_t serial) { LOG(VERBOSE) << __FUNCTION__ << " toplevel=" << toplevel << " seat=" << seat << " serial=" << serial; } void zxdg_toplevel_v6_resize(wl_client*, wl_resource* toplevel, wl_resource* seat, uint32_t serial, uint32_t edges) { LOG(VERBOSE) << __FUNCTION__ << " toplevel=" << toplevel << " seat=" << seat << " serial=" << serial << " edges=" << edges; } void zxdg_toplevel_v6_set_max_size(wl_client*, wl_resource* toplevel, int32_t w, int32_t h) { LOG(VERBOSE) << __FUNCTION__ << " toplevel=" << toplevel << " w=" << w << " h=" << h; } void zxdg_toplevel_v6_set_min_size(wl_client*, wl_resource* toplevel, int32_t w, int32_t h) { LOG(VERBOSE) << __FUNCTION__ << " toplevel=" << toplevel << " w=" << w << " h=" << h; } void zxdg_toplevel_v6_set_maximized(wl_client*, wl_resource* toplevel) { LOG(VERBOSE) << __FUNCTION__ << " toplevel=" << toplevel; } void zxdg_toplevel_v6_unset_maximized(wl_client*, wl_resource* toplevel) { LOG(VERBOSE) << __FUNCTION__ << " toplevel=" << toplevel; } void zxdg_toplevel_v6_set_fullscreen(wl_client*, wl_resource* toplevel, wl_resource*) { LOG(VERBOSE) << __FUNCTION__ << " toplevel=" << toplevel; } void zxdg_toplevel_v6_unset_fullscreen(wl_client*, wl_resource* toplevel) { LOG(VERBOSE) << __FUNCTION__ << " toplevel=" << toplevel; } void zxdg_toplevel_v6_set_minimized(wl_client*, wl_resource* toplevel) { LOG(VERBOSE) << __FUNCTION__ << " toplevel=" << toplevel; } const struct zxdg_toplevel_v6_interface zxdg_toplevel_v6_implementation = { .destroy = zxdg_toplevel_v6_destroy, .set_parent = zxdg_toplevel_v6_set_parent, .set_title = zxdg_toplevel_v6_set_title, .set_app_id = zxdg_toplevel_v6_set_app_id, .show_window_menu = zxdg_toplevel_v6_show_window_menu, .move = zxdg_toplevel_v6_move, .resize = zxdg_toplevel_v6_resize, .set_max_size = zxdg_toplevel_v6_set_max_size, .set_min_size = zxdg_toplevel_v6_set_min_size, .set_maximized = zxdg_toplevel_v6_set_maximized, .unset_maximized = zxdg_toplevel_v6_unset_maximized, .set_fullscreen = zxdg_toplevel_v6_set_fullscreen, .unset_fullscreen = zxdg_toplevel_v6_unset_fullscreen, .set_minimized = zxdg_toplevel_v6_set_minimized }; void zxdg_popup_v6_destroy(wl_client*, wl_resource* popup) { LOG(VERBOSE) << __FUNCTION__ << " popup=" << popup; wl_resource_destroy(popup); } void zxdg_popup_v6_grab(wl_client*, wl_resource* popup, wl_resource* seat, uint32_t serial) { LOG(VERBOSE) << __FUNCTION__ << " popup=" << popup << " seat=" << seat << " serial=" << serial; } const struct zxdg_popup_v6_interface zxdg_popup_v6_implementation = { .destroy = zxdg_popup_v6_destroy, .grab = zxdg_popup_v6_grab }; void zxdg_surface_v6_destroy(wl_client*, wl_resource* surface) { LOG(VERBOSE) << __FUNCTION__ << " surface=" << surface; wl_resource_destroy(surface); } void toplevel_destroy_resource_callback(struct wl_resource*) {} void zxdg_surface_v6_get_toplevel(wl_client* client, wl_resource* surface, uint32_t id) { LOG(VERBOSE) << __FUNCTION__ << " surface=" << surface << " id=" << id; wl_resource* xdg_toplevel_resource = wl_resource_create(client, &zxdg_toplevel_v6_interface, 1, id); wl_resource_set_implementation(xdg_toplevel_resource, &zxdg_toplevel_v6_implementation, nullptr, toplevel_destroy_resource_callback); } void popup_destroy_resource_callback(struct wl_resource*) {} void zxdg_surface_v6_get_popup(wl_client* client, wl_resource* surface, uint32_t id, wl_resource* parent_surface, wl_resource* positioner) { LOG(VERBOSE) << __FUNCTION__ << " surface=" << surface << " id=" << id << " parent_surface=" << parent_surface << " positioner=" << positioner; wl_resource* xdg_popup_resource = wl_resource_create(client, &zxdg_popup_v6_interface, 1, id); wl_resource_set_implementation(xdg_popup_resource, &zxdg_popup_v6_implementation, nullptr, popup_destroy_resource_callback); } void zxdg_surface_v6_set_window_geometry(wl_client*, wl_resource* surface, int32_t x, int32_t y, int32_t w, int32_t h) { LOG(VERBOSE) << __FUNCTION__ << " surface=" << surface << " x=" << x << " y=" << y << " w=" << w << " h=" << h; } void zxdg_surface_v6_ack_configure(wl_client*, wl_resource* surface, uint32_t serial) { LOG(VERBOSE) << __FUNCTION__ << " surface=" << surface << " serial=" << serial; } const struct zxdg_surface_v6_interface zxdg_surface_v6_implementation = { .destroy = zxdg_surface_v6_destroy, .get_toplevel = zxdg_surface_v6_get_toplevel, .get_popup = zxdg_surface_v6_get_popup, .set_window_geometry = zxdg_surface_v6_set_window_geometry, .ack_configure = zxdg_surface_v6_ack_configure }; void zxdg_shell_v6_destroy(wl_client*, wl_resource* shell) { LOG(VERBOSE) << __FUNCTION__ << " shell=" << shell; wl_resource_destroy(shell); } void positioner_destroy_resource_callback(struct wl_resource*) {} void zxdg_shell_v6_create_positioner(wl_client* client, wl_resource* shell, uint32_t id) { LOG(VERBOSE) << __FUNCTION__ << " shell=" << shell << " id=" << id; wl_resource* positioner_resource = wl_resource_create(client, &zxdg_positioner_v6_interface, 1, id); wl_resource_set_implementation(positioner_resource, &zxdg_positioner_v6_implementation, nullptr, positioner_destroy_resource_callback); } void surface_destroy_resource_callback(struct wl_resource*) {} void zxdg_shell_v6_get_xdg_surface(wl_client* client, wl_resource* shell, uint32_t id, wl_resource* surface) { LOG(VERBOSE) << __FUNCTION__ << " shell=" << shell << " id=" << id << " surface=" << surface; wl_resource* surface_resource = wl_resource_create(client, &zxdg_surface_v6_interface, 1, id); wl_resource_set_implementation(surface_resource, &zxdg_surface_v6_implementation, nullptr, surface_destroy_resource_callback); } void zxdg_shell_v6_pong(wl_client*, wl_resource* shell, uint32_t serial) { LOG(VERBOSE) << __FUNCTION__ << " shell=" << shell << " serial=" << serial; } const struct zxdg_shell_v6_interface zxdg_shell_v6_implementation = { .destroy = zxdg_shell_v6_destroy, .create_positioner = zxdg_shell_v6_create_positioner, .get_xdg_surface = zxdg_shell_v6_get_xdg_surface, .pong = zxdg_shell_v6_pong }; void bind_shell(wl_client* client, void* data, uint32_t version, uint32_t id) { wl_resource* shell_resource = wl_resource_create(client, &zxdg_shell_v6_interface, version, id); wl_resource_set_implementation(shell_resource, &zxdg_shell_v6_implementation, data, nullptr); } } // namespace void BindShellInterface(wl_display* display) { wl_global_create(display, &zxdg_shell_v6_interface, 1, nullptr, bind_shell); } } // namespace wayland