7e420cb6e4
Sway has basic support for drawing tablets, but does not expose properties such as pressure sensitivity. This implements the wlr tablet v2 protocol, providing tablet events to Wayland clients.
115 lines
3.5 KiB
C
115 lines
3.5 KiB
C
#ifndef _SWAY_SERVER_H
|
|
#define _SWAY_SERVER_H
|
|
#include <stdbool.h>
|
|
#include <wayland-server-core.h>
|
|
#include <wlr/backend.h>
|
|
#include <wlr/backend/session.h>
|
|
#include <wlr/render/wlr_renderer.h>
|
|
#include <wlr/types/wlr_compositor.h>
|
|
#include <wlr/types/wlr_data_device.h>
|
|
#include <wlr/types/wlr_layer_shell_v1.h>
|
|
#include <wlr/types/wlr_output_management_v1.h>
|
|
#include <wlr/types/wlr_presentation_time.h>
|
|
#include <wlr/types/wlr_relative_pointer_v1.h>
|
|
#include <wlr/types/wlr_server_decoration.h>
|
|
#include <wlr/types/wlr_xdg_shell.h>
|
|
#include "config.h"
|
|
#include "list.h"
|
|
#if HAVE_XWAYLAND
|
|
#include "sway/xwayland.h"
|
|
#endif
|
|
|
|
struct sway_server {
|
|
struct wl_display *wl_display;
|
|
struct wl_event_loop *wl_event_loop;
|
|
const char *socket;
|
|
|
|
struct wlr_backend *backend;
|
|
struct wlr_backend *noop_backend;
|
|
|
|
struct wlr_compositor *compositor;
|
|
struct wlr_data_device_manager *data_device_manager;
|
|
|
|
struct sway_input_manager *input;
|
|
|
|
struct wl_listener new_output;
|
|
struct wl_listener output_layout_change;
|
|
|
|
struct wlr_idle *idle;
|
|
struct sway_idle_inhibit_manager_v1 *idle_inhibit_manager_v1;
|
|
|
|
struct wlr_layer_shell_v1 *layer_shell;
|
|
struct wl_listener layer_shell_surface;
|
|
|
|
struct wlr_xdg_shell *xdg_shell;
|
|
struct wl_listener xdg_shell_surface;
|
|
|
|
struct wlr_tablet_manager_v2 *tablet_v2;
|
|
|
|
#if HAVE_XWAYLAND
|
|
struct sway_xwayland xwayland;
|
|
struct wl_listener xwayland_surface;
|
|
struct wl_listener xwayland_ready;
|
|
#endif
|
|
|
|
struct wlr_relative_pointer_manager_v1 *relative_pointer_manager;
|
|
|
|
struct wlr_server_decoration_manager *server_decoration_manager;
|
|
struct wl_listener server_decoration;
|
|
struct wl_list decorations; // sway_server_decoration::link
|
|
|
|
struct wlr_xdg_decoration_manager_v1 *xdg_decoration_manager;
|
|
struct wl_listener xdg_decoration;
|
|
struct wl_list xdg_decorations; // sway_xdg_decoration::link
|
|
|
|
struct wlr_presentation *presentation;
|
|
|
|
struct wlr_pointer_constraints_v1 *pointer_constraints;
|
|
struct wl_listener pointer_constraint;
|
|
|
|
struct wlr_output_manager_v1 *output_manager_v1;
|
|
struct wl_listener output_manager_apply;
|
|
struct wl_listener output_manager_test;
|
|
|
|
size_t txn_timeout_ms;
|
|
list_t *transactions;
|
|
list_t *dirty_nodes;
|
|
};
|
|
|
|
struct sway_server server;
|
|
|
|
struct sway_debug {
|
|
bool noatomic; // Ignore atomic layout updates
|
|
bool txn_timings; // Log verbose messages about transactions
|
|
bool txn_wait; // Always wait for the timeout before applying
|
|
|
|
enum {
|
|
DAMAGE_DEFAULT, // Default behaviour
|
|
DAMAGE_HIGHLIGHT, // Highlight regions of the screen being damaged
|
|
DAMAGE_RERENDER, // Render the full output when any damage occurs
|
|
} damage;
|
|
};
|
|
|
|
struct sway_debug debug;
|
|
|
|
/* Prepares an unprivileged server_init by performing all privileged operations in advance */
|
|
bool server_privileged_prepare(struct sway_server *server);
|
|
bool server_init(struct sway_server *server);
|
|
void server_fini(struct sway_server *server);
|
|
bool server_start(struct sway_server *server);
|
|
void server_run(struct sway_server *server);
|
|
|
|
void handle_new_output(struct wl_listener *listener, void *data);
|
|
|
|
void handle_idle_inhibitor_v1(struct wl_listener *listener, void *data);
|
|
void handle_layer_shell_surface(struct wl_listener *listener, void *data);
|
|
void handle_xdg_shell_surface(struct wl_listener *listener, void *data);
|
|
#if HAVE_XWAYLAND
|
|
void handle_xwayland_surface(struct wl_listener *listener, void *data);
|
|
#endif
|
|
void handle_server_decoration(struct wl_listener *listener, void *data);
|
|
void handle_xdg_decoration(struct wl_listener *listener, void *data);
|
|
void handle_pointer_constraint(struct wl_listener *listener, void *data);
|
|
|
|
#endif
|