Blender  V3.3
Classes | Macros | Variables
GHOST_SystemWayland.cpp File Reference
#include "GHOST_SystemWayland.h"
#include "GHOST_Event.h"
#include "GHOST_EventButton.h"
#include "GHOST_EventCursor.h"
#include "GHOST_EventDragnDrop.h"
#include "GHOST_EventKey.h"
#include "GHOST_EventWheel.h"
#include "GHOST_TimerManager.h"
#include "GHOST_WindowManager.h"
#include "GHOST_utildefines.h"
#include "GHOST_ContextEGL.h"
#include <EGL/egl.h>
#include <wayland-egl.h>
#include <algorithm>
#include <atomic>
#include <stdexcept>
#include <thread>
#include <unordered_map>
#include <unordered_set>
#include <wayland-cursor.h>
#include "GHOST_WaylandCursorSettings.h"
#include <xkbcommon/xkbcommon.h>
#include <pointer-constraints-unstable-v1-client-protocol.h>
#include <relative-pointer-unstable-v1-client-protocol.h>
#include <tablet-unstable-v2-client-protocol.h>
#include <xdg-output-unstable-v1-client-protocol.h>
#include <fcntl.h>
#include <sys/mman.h>
#include <unistd.h>
#include <cstring>
#include <mutex>
#include "CLG_log.h"

Go to the source code of this file.

Classes

struct  cursor_t
 
struct  tablet_tool_input_t
 
struct  data_offer_t
 
struct  data_source_t
 
struct  key_repeat_payload_t
 
struct  input_grab_state_t
 
struct  input_state_pointer_t
 
struct  input_state_keyboard_t
 
struct  input_t
 
struct  display_t
 

Macros

#define USE_GNOME_CONFINE_HACK
 
#define GXMAP(k, x, y)
 
#define SURFACE_CLEAR_PTR(surface_test)
 
Inline Event Codes

Selected input event code defines from linux/input-event-codes.h We include some of the button input event codes here, since the header is only available in more recent kernel versions.

#define BTN_LEFT   0x110
 
#define BTN_RIGHT   0x111
 
#define BTN_MIDDLE   0x112
 
#define BTN_SIDE   0x113
 
#define BTN_EXTRA   0x114
 
#define BTN_FORWARD   0x115
 
#define BTN_BACK   0x116
 
#define BTN_STYLUS   0x14b /* Use as right-mouse. */
 
#define BTN_STYLUS2   0x14c /* Use as middle-mouse. */
 
#define BTN_STYLUS3   0x149
 
#define KEY_GRAVE   41
 
Private Types & Defines
#define EVDEV_OFFSET   8
 

Functions

Public WAYLAND Query Access
struct output_tghost_wl_output_user_data (struct wl_output *wl_output)
 
GHOST_WindowWaylandghost_wl_surface_user_data (struct wl_surface *surface)
 

Variables

static bool use_gnome_confine_hack = false
 

Listener (Registry), #wl_registry_listener

#define LOG   (&LOG_WL_RELATIVE_POINTER)
 
#define LOG   (&LOG_WL_DATA_SOURCE)
 
#define LOG   (&LOG_WL_DATA_OFFER)
 
#define LOG   (&LOG_WL_DATA_DEVICE)
 
#define LOG   (&LOG_WL_CURSOR_BUFFER)
 
#define LOG   (&LOG_WL_CURSOR_SURFACE)
 
#define LOG   (&LOG_WL_POINTER)
 
#define LOG   (&LOG_WL_TABLET_TOOL)
 
#define LOG   (&LOG_WL_TABLET_SEAT)
 
#define LOG   (&LOG_WL_KEYBOARD)
 
#define LOG   (&LOG_WL_SEAT)
 
#define LOG   (&LOG_WL_XDG_OUTPUT)
 
#define LOG   (&LOG_WL_OUTPUT)
 
#define LOG   (&LOG_WL_XDG_WM_BASE)
 
#define LOG   (&LOG_WL_REGISTRY)
 
static CLG_LogRef LOG_WL_REGISTRY = {"ghost.wl.handle.registry"}
 
static const struct wl_registry_listener registry_listener
 
static void global_handle_add (void *data, struct wl_registry *wl_registry, const uint32_t name, const char *interface, const uint32_t version)
 
static void global_handle_remove (void *, struct wl_registry *, const uint32_t name)
 

GHOST Implementation

WAYLAND specific implementation of the GHOST_System interface.

enum  eCursorSetMode { CURSOR_VISIBLE_ALWAYS_SET = 1 , CURSOR_VISIBLE_ONLY_HIDE , CURSOR_VISIBLE_ONLY_SHOW }
 
static GHOST_TSuccess getCursorPositionClientRelative_impl (const input_state_pointer_t *input_state, const GHOST_WindowWayland *win, int32_t &x, int32_t &y)
 
static GHOST_TSuccess setCursorPositionClientRelative_impl (input_t *input, GHOST_WindowWayland *win, const int32_t x, const int32_t y)
 
static GHOST_ContextcreateOffscreenContext_impl (GHOST_SystemWayland *system, struct wl_display *wl_display, wl_egl_window *egl_window)
 
static void cursor_buffer_show (const input_t *input)
 
static void cursor_buffer_hide (const input_t *input)
 
static int cursor_buffer_compatible_scale_from_image (const struct wl_cursor_image *wl_image, int scale)
 
static void cursor_buffer_set_surface_impl (const input_t *input, wl_buffer *buffer, struct wl_surface *wl_surface, const int scale)
 
static void cursor_buffer_set (const input_t *input, wl_buffer *buffer)
 
static void cursor_visible_set (input_t *input, const bool visible, const bool is_hardware, const enum eCursorSetMode set_mode)
 
static bool cursor_is_software (const GHOST_TGrabCursorMode mode, const bool use_software_confine)
 
static bool setCursorGrab_use_software_confine (const GHOST_TGrabCursorMode mode, wl_surface *surface)
 
static input_grab_state_t input_grab_state_from_mode (const GHOST_TGrabCursorMode mode, const bool use_software_confine)
 

Private Utility Functions

static GHOST_WindowManagerwindow_manager = nullptr
 
static std::mutex system_selection_mutex
 
static const int default_cursor_size = 24
 
static const std::unordered_map< GHOST_TStandardCursor, const char * > cursors
 
static constexpr const char * mime_text_plain = "text/plain"
 
static constexpr const char * mime_text_utf8 = "text/plain;charset=utf-8"
 
static constexpr const char * mime_text_uri = "text/uri-list"
 
static const std::unordered_map< std::string, GHOST_TDragnDropTypesmime_dnd
 
static const std::vector< std::string > mime_preference_order
 
static const std::vector< std::string > mime_send
 
static void ghost_wayland_log_handler (const char *msg, va_list arg)
 
static input_state_pointer_tinput_state_pointer_active (input_t *input)
 
static input_state_pointer_tinput_state_pointer_from_cursor_surface (input_t *input, const wl_surface *wl_surface)
 
static void display_destroy (display_t *d)
 
static GHOST_TKey xkb_map_gkey (const xkb_keysym_t sym)
 
static GHOST_TKey xkb_map_gkey_or_scan_code (const xkb_keysym_t sym, const uint32_t key)
 
static GHOST_TTabletMode tablet_tool_map_type (enum zwp_tablet_tool_v2_type wl_tablet_tool_type)
 
static int memfd_create_sealed (const char *name)
 
static size_t ghost_wl_shm_format_as_size (enum wl_shm_format format)
 
static wl_buffer * ghost_wl_buffer_create_for_image (struct wl_shm *shm, const int32_t size_xy[2], enum wl_shm_format format, void **r_buffer_data, size_t *r_buffer_data_size)
 

Listener (Relative Motion), #zwp_relative_pointer_v1_listener

These callbacks are registered for Wayland interfaces and called when an event is received from the compositor.

static CLG_LogRef LOG_WL_RELATIVE_POINTER = {"ghost.wl.handle.relative_pointer"}
 
static const zwp_relative_pointer_v1_listener relative_pointer_listener
 
static void relative_pointer_handle_relative_motion_impl (input_t *input, GHOST_WindowWayland *win, const wl_fixed_t xy[2])
 
static void relative_pointer_handle_relative_motion (void *data, struct zwp_relative_pointer_v1 *, const uint32_t, const uint32_t, const wl_fixed_t dx, const wl_fixed_t dy, const wl_fixed_t, const wl_fixed_t)
 

Listener (Data Source), #wl_data_source_listener

static CLG_LogRef LOG_WL_DATA_SOURCE = {"ghost.wl.handle.data_source"}
 
static const struct wl_data_source_listener data_source_listener
 
static void dnd_events (const input_t *const input, const GHOST_TEventType event)
 
static std::string read_pipe (data_offer_t *data_offer, const std::string mime_receive, std::mutex *mutex)
 
static void data_source_handle_target (void *, struct wl_data_source *, const char *)
 
static void data_source_handle_send (void *data, struct wl_data_source *, const char *, const int32_t fd)
 
static void data_source_handle_cancelled (void *, struct wl_data_source *wl_data_source)
 
static void data_source_handle_dnd_drop_performed (void *, struct wl_data_source *)
 
static void data_source_handle_dnd_finished (void *, struct wl_data_source *)
 
static void data_source_handle_action (void *, struct wl_data_source *, const uint32_t dnd_action)
 

Listener (Data Offer), #wl_data_offer_listener

static CLG_LogRef LOG_WL_DATA_OFFER = {"ghost.wl.handle.data_offer"}
 
static const struct wl_data_offer_listener data_offer_listener
 
static void data_offer_handle_offer (void *data, struct wl_data_offer *, const char *mime_type)
 
static void data_offer_handle_source_actions (void *data, struct wl_data_offer *, const uint32_t source_actions)
 
static void data_offer_handle_action (void *data, struct wl_data_offer *, const uint32_t dnd_action)
 

Listener (Data Device), #wl_data_device_listener

static CLG_LogRef LOG_WL_DATA_DEVICE = {"ghost.wl.handle.data_device"}
 
static const struct wl_data_device_listener data_device_listener
 
static void data_device_handle_data_offer (void *, struct wl_data_device *, struct wl_data_offer *id)
 
static void data_device_handle_enter (void *data, struct wl_data_device *, const uint32_t serial, struct wl_surface *surface, const wl_fixed_t x, const wl_fixed_t y, struct wl_data_offer *id)
 
static void data_device_handle_leave (void *data, struct wl_data_device *)
 
static void data_device_handle_motion (void *data, struct wl_data_device *, const uint32_t, const wl_fixed_t x, const wl_fixed_t y)
 
static void data_device_handle_drop (void *data, struct wl_data_device *)
 
static void data_device_handle_selection (void *data, struct wl_data_device *, struct wl_data_offer *id)
 

Listener (Buffer), #wl_buffer_listener

static CLG_LogRef LOG_WL_CURSOR_BUFFER = {"ghost.wl.handle.cursor_buffer"}
 
static const struct wl_buffer_listener cursor_buffer_listener
 
static void cursor_buffer_handle_release (void *data, struct wl_buffer *wl_buffer)
 

Listener (Surface), #wl_surface_listener

static CLG_LogRef LOG_WL_CURSOR_SURFACE = {"ghost.wl.handle.cursor_surface"}
 
static const struct wl_surface_listener cursor_surface_listener
 
static bool update_cursor_scale (cursor_t &cursor, wl_shm *shm, input_state_pointer_t *input_state, wl_surface *cursor_surface)
 
static void cursor_surface_handle_enter (void *data, struct wl_surface *wl_surface, struct wl_output *output)
 
static void cursor_surface_handle_leave (void *data, struct wl_surface *wl_surface, struct wl_output *output)
 

Listener (Pointer), #wl_pointer_listener

static CLG_LogRef LOG_WL_POINTER = {"ghost.wl.handle.pointer"}
 
static const struct wl_pointer_listener pointer_listener
 
static void pointer_handle_enter (void *data, struct wl_pointer *, const uint32_t serial, struct wl_surface *surface, const wl_fixed_t surface_x, const wl_fixed_t surface_y)
 
static void pointer_handle_leave (void *data, struct wl_pointer *, const uint32_t, struct wl_surface *surface)
 
static void pointer_handle_motion (void *data, struct wl_pointer *, const uint32_t, const wl_fixed_t surface_x, const wl_fixed_t surface_y)
 
static void pointer_handle_button (void *data, struct wl_pointer *, const uint32_t serial, const uint32_t, const uint32_t button, const uint32_t state)
 
static void pointer_handle_axis (void *, struct wl_pointer *, const uint32_t, const uint32_t axis, const wl_fixed_t value)
 
static void pointer_handle_frame (void *, struct wl_pointer *)
 
static void pointer_handle_axis_source (void *, struct wl_pointer *, uint32_t axis_source)
 
static void pointer_handle_axis_stop (void *, struct wl_pointer *, uint32_t, uint32_t axis)
 
static void pointer_handle_axis_discrete (void *data, struct wl_pointer *, uint32_t axis, int32_t discrete)
 

Listener (Tablet Tool), #zwp_tablet_tool_v2_listener

static CLG_LogRef LOG_WL_TABLET_TOOL = {"ghost.wl.handle.tablet_tool"}
 
static const struct zwp_tablet_tool_v2_listener tablet_tool_listner
 
static void tablet_tool_handle_type (void *data, struct zwp_tablet_tool_v2 *, const uint32_t tool_type)
 
static void tablet_tool_handle_hardware_serial (void *, struct zwp_tablet_tool_v2 *, const uint32_t, const uint32_t)
 
static void tablet_tool_handle_hardware_id_wacom (void *, struct zwp_tablet_tool_v2 *, const uint32_t, const uint32_t)
 
static void tablet_tool_handle_capability (void *, struct zwp_tablet_tool_v2 *, const uint32_t capability)
 
static void tablet_tool_handle_done (void *, struct zwp_tablet_tool_v2 *)
 
static void tablet_tool_handle_removed (void *data, struct zwp_tablet_tool_v2 *zwp_tablet_tool_v2)
 
static void tablet_tool_handle_proximity_in (void *data, struct zwp_tablet_tool_v2 *, const uint32_t serial, struct zwp_tablet_v2 *, struct wl_surface *surface)
 
static void tablet_tool_handle_proximity_out (void *data, struct zwp_tablet_tool_v2 *)
 
static void tablet_tool_handle_down (void *data, struct zwp_tablet_tool_v2 *, const uint32_t serial)
 
static void tablet_tool_handle_up (void *data, struct zwp_tablet_tool_v2 *)
 
static void tablet_tool_handle_motion (void *data, struct zwp_tablet_tool_v2 *, const wl_fixed_t x, const wl_fixed_t y)
 
static void tablet_tool_handle_pressure (void *data, struct zwp_tablet_tool_v2 *, const uint32_t pressure)
 
static void tablet_tool_handle_distance (void *, struct zwp_tablet_tool_v2 *, const uint32_t distance)
 
static void tablet_tool_handle_tilt (void *data, struct zwp_tablet_tool_v2 *, const wl_fixed_t tilt_x, const wl_fixed_t tilt_y)
 
static void tablet_tool_handle_rotation (void *, struct zwp_tablet_tool_v2 *, const wl_fixed_t degrees)
 
static void tablet_tool_handle_slider (void *, struct zwp_tablet_tool_v2 *, const int32_t position)
 
static void tablet_tool_handle_wheel (void *data, struct zwp_tablet_tool_v2 *, const wl_fixed_t, const int32_t clicks)
 
static void tablet_tool_handle_button (void *data, struct zwp_tablet_tool_v2 *, const uint32_t serial, const uint32_t button, const uint32_t state)
 
static void tablet_tool_handle_frame (void *data, struct zwp_tablet_tool_v2 *, const uint32_t)
 

Listener (Table Seat), #zwp_tablet_seat_v2_listener

static CLG_LogRef LOG_WL_TABLET_SEAT = {"ghost.wl.handle.tablet_seat"}
 
static const struct zwp_tablet_seat_v2_listener tablet_seat_listener
 
static void tablet_seat_handle_tablet_added (void *, struct zwp_tablet_seat_v2 *, struct zwp_tablet_v2 *id)
 
static void tablet_seat_handle_tool_added (void *data, struct zwp_tablet_seat_v2 *, struct zwp_tablet_tool_v2 *id)
 
static void tablet_seat_handle_pad_added (void *, struct zwp_tablet_seat_v2 *, struct zwp_tablet_pad_v2 *id)
 

Listener (Keyboard), #wl_keyboard_listener

static CLG_LogRef LOG_WL_KEYBOARD = {"ghost.wl.handle.keyboard"}
 
static const struct wl_keyboard_listener keyboard_listener
 
static void keyboard_handle_key_repeat_cancel (struct input_t *input)
 
static void keyboard_handle_keymap (void *data, struct wl_keyboard *, const uint32_t format, const int32_t fd, const uint32_t size)
 
static void keyboard_handle_enter (void *data, struct wl_keyboard *, const uint32_t serial, struct wl_surface *surface, struct wl_array *)
 
static void keyboard_handle_leave (void *data, struct wl_keyboard *, const uint32_t, struct wl_surface *surface)
 
static xkb_keysym_t xkb_state_key_get_one_sym_without_modifiers (struct xkb_state *xkb_state_empty, struct xkb_state *xkb_state_empty_with_numlock, const xkb_keycode_t key)
 
static void keyboard_handle_key_repeat_reset (input_t *input, const bool use_delay)
 
static void keyboard_handle_key (void *data, struct wl_keyboard *, const uint32_t serial, const uint32_t, const uint32_t key, const uint32_t state)
 
static void keyboard_handle_modifiers (void *data, struct wl_keyboard *, const uint32_t, const uint32_t mods_depressed, const uint32_t mods_latched, const uint32_t mods_locked, const uint32_t group)
 
static void keyboard_repeat_handle_info (void *data, struct wl_keyboard *, const int32_t rate, const int32_t delay)
 

Listener (Seat), #wl_seat_listener

static CLG_LogRef LOG_WL_SEAT = {"ghost.wl.handle.seat"}
 
static const struct wl_seat_listener seat_listener
 
static void seat_handle_capabilities (void *data, struct wl_seat *wl_seat, const uint32_t capabilities)
 
static void seat_handle_name (void *data, struct wl_seat *, const char *name)
 

Listener (XDG Output), #zxdg_output_v1_listener

static CLG_LogRef LOG_WL_XDG_OUTPUT = {"ghost.wl.handle.xdg_output"}
 
static const struct zxdg_output_v1_listener xdg_output_listener
 
static void xdg_output_handle_logical_position (void *data, struct zxdg_output_v1 *, const int32_t x, const int32_t y)
 
static void xdg_output_handle_logical_size (void *data, struct zxdg_output_v1 *, const int32_t width, const int32_t height)
 
static void xdg_output_handle_done (void *data, struct zxdg_output_v1 *)
 
static void xdg_output_handle_name (void *, struct zxdg_output_v1 *, const char *name)
 
static void xdg_output_handle_description (void *, struct zxdg_output_v1 *, const char *description)
 

Listener (Output), #wl_output_listener

static CLG_LogRef LOG_WL_OUTPUT = {"ghost.wl.handle.output"}
 
static const struct wl_output_listener output_listener
 
static void output_handle_done (void *data, struct wl_output *wl_output)
 
static void output_handle_geometry (void *data, struct wl_output *, const int32_t, const int32_t, const int32_t physical_width, const int32_t physical_height, const int32_t, const char *make, const char *model, const int32_t transform)
 
static void output_handle_mode (void *data, struct wl_output *, const uint32_t flags, const int32_t width, const int32_t height, const int32_t)
 
static void output_handle_scale (void *data, struct wl_output *, const int32_t factor)
 

Listener (XDG WM Base), #xdg_wm_base_listener

static CLG_LogRef LOG_WL_XDG_WM_BASE = {"ghost.wl.handle.output"}
 
static const struct xdg_wm_base_listener shell_listener
 
static void shell_handle_ping (void *, struct xdg_wm_base *xdg_wm_base, const uint32_t serial)
 

Public WAYLAND Proxy Ownership API

static const char * ghost_wl_output_tag_id = "GHOST-output"
 
static const char * ghost_wl_surface_tag_id = "GHOST-window"
 
static const char * ghost_wl_surface_cursor_pointer_tag_id = "GHOST-cursor-pointer"
 
static const char * ghost_wl_surface_cursor_tablet_tag_id = "GHOST-cursor-tablet"
 
bool ghost_wl_output_own (const struct wl_output *output)
 
bool ghost_wl_surface_own (const struct wl_surface *surface)
 
bool ghost_wl_surface_own_cursor_pointer (const struct wl_surface *surface)
 
bool ghost_wl_surface_own_cursor_tablet (const struct wl_surface *surface)
 
void ghost_wl_output_tag (struct wl_output *output)
 
void ghost_wl_surface_tag (struct wl_surface *surface)
 
void ghost_wl_surface_tag_cursor_pointer (struct wl_surface *surface)
 
void ghost_wl_surface_tag_cursor_tablet (struct wl_surface *surface)
 

Macro Definition Documentation

◆ BTN_BACK

#define BTN_BACK   0x116

Definition at line 103 of file GHOST_SystemWayland.cpp.

◆ BTN_EXTRA

#define BTN_EXTRA   0x114

Definition at line 101 of file GHOST_SystemWayland.cpp.

◆ BTN_FORWARD

#define BTN_FORWARD   0x115

Definition at line 102 of file GHOST_SystemWayland.cpp.

◆ BTN_LEFT

#define BTN_LEFT   0x110

The event codes are used to to differentiate from which mouse button an event comes from.

Definition at line 97 of file GHOST_SystemWayland.cpp.

◆ BTN_MIDDLE

#define BTN_MIDDLE   0x112

Definition at line 99 of file GHOST_SystemWayland.cpp.

◆ BTN_RIGHT

#define BTN_RIGHT   0x111

Definition at line 98 of file GHOST_SystemWayland.cpp.

◆ BTN_SIDE

#define BTN_SIDE   0x113

Definition at line 100 of file GHOST_SystemWayland.cpp.

◆ BTN_STYLUS

#define BTN_STYLUS   0x14b /* Use as right-mouse. */

Tablet events.

Definition at line 109 of file GHOST_SystemWayland.cpp.

◆ BTN_STYLUS2

#define BTN_STYLUS2   0x14c /* Use as middle-mouse. */

Definition at line 110 of file GHOST_SystemWayland.cpp.

◆ BTN_STYLUS3

#define BTN_STYLUS3   0x149

Definition at line 112 of file GHOST_SystemWayland.cpp.

◆ EVDEV_OFFSET

#define EVDEV_OFFSET   8

From XKB internals, use for converting a scan-code from WAYLAND to a #xkb_keycode_t. Ideally this wouldn't need a local define.

Definition at line 129 of file GHOST_SystemWayland.cpp.

◆ GXMAP

#define GXMAP (   k,
  x,
  y 
)
Value:
case x: \
k = y; \
break
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint y

◆ KEY_GRAVE

#define KEY_GRAVE   41

Keyboard scan-codes.

Definition at line 117 of file GHOST_SystemWayland.cpp.

◆ LOG [1/15]

Definition at line 2716 of file GHOST_SystemWayland.cpp.

◆ LOG [2/15]

#define LOG   (&LOG_WL_DATA_SOURCE)

Definition at line 2716 of file GHOST_SystemWayland.cpp.

◆ LOG [3/15]

#define LOG   (&LOG_WL_DATA_OFFER)

Definition at line 2716 of file GHOST_SystemWayland.cpp.

◆ LOG [4/15]

#define LOG   (&LOG_WL_DATA_DEVICE)

Definition at line 2716 of file GHOST_SystemWayland.cpp.

◆ LOG [5/15]

Definition at line 2716 of file GHOST_SystemWayland.cpp.

◆ LOG [6/15]

Definition at line 2716 of file GHOST_SystemWayland.cpp.

◆ LOG [7/15]

#define LOG   (&LOG_WL_POINTER)

Definition at line 2716 of file GHOST_SystemWayland.cpp.

◆ LOG [8/15]

#define LOG   (&LOG_WL_TABLET_TOOL)

Definition at line 2716 of file GHOST_SystemWayland.cpp.

◆ LOG [9/15]

#define LOG   (&LOG_WL_TABLET_SEAT)

Definition at line 2716 of file GHOST_SystemWayland.cpp.

◆ LOG [10/15]

#define LOG   (&LOG_WL_KEYBOARD)

Definition at line 2716 of file GHOST_SystemWayland.cpp.

◆ LOG [11/15]

#define LOG   (&LOG_WL_SEAT)

Definition at line 2716 of file GHOST_SystemWayland.cpp.

◆ LOG [12/15]

#define LOG   (&LOG_WL_XDG_OUTPUT)

Definition at line 2716 of file GHOST_SystemWayland.cpp.

◆ LOG [13/15]

#define LOG   (&LOG_WL_OUTPUT)

Definition at line 2716 of file GHOST_SystemWayland.cpp.

◆ LOG [14/15]

#define LOG   (&LOG_WL_XDG_WM_BASE)

Definition at line 2716 of file GHOST_SystemWayland.cpp.

◆ LOG [15/15]

#define LOG   (&LOG_WL_REGISTRY)

Definition at line 2716 of file GHOST_SystemWayland.cpp.

◆ SURFACE_CLEAR_PTR

#define SURFACE_CLEAR_PTR (   surface_test)
Value:
if (surface_test == surface) { \
surface_test = nullptr; \
} \
((void)0);
SyclQueue void void size_t num_bytes void
struct @211::@212 surface

◆ USE_GNOME_CONFINE_HACK

#define USE_GNOME_CONFINE_HACK

GNOME (mutter 42.2 had a bug with confine not respecting scale - Hi-DPI), See: T98793. Even though this has been fixed, at time of writing it's not yet in a release. Workaround the problem by implementing confine with a software cursor. While this isn't ideal, it's not adding a lot of overhead as software cursors are already used for warping (which WAYLAND doesn't support).

Definition at line 74 of file GHOST_SystemWayland.cpp.

Enumeration Type Documentation

◆ eCursorSetMode

Enumerator
CURSOR_VISIBLE_ALWAYS_SET 
CURSOR_VISIBLE_ONLY_HIDE 
CURSOR_VISIBLE_ONLY_SHOW 

Definition at line 3391 of file GHOST_SystemWayland.cpp.

Function Documentation

◆ createOffscreenContext_impl()

static GHOST_Context* createOffscreenContext_impl ( GHOST_SystemWayland system,
struct wl_display *  wl_display,
wl_egl_window *  egl_window 
)
static

◆ cursor_buffer_compatible_scale_from_image()

static int cursor_buffer_compatible_scale_from_image ( const struct wl_cursor_image *  wl_image,
int  scale 
)
static

Needed to ensure the cursor size is always a multiple of scale.

Definition at line 3320 of file GHOST_SystemWayland.cpp.

Referenced by cursor_buffer_set().

◆ cursor_buffer_handle_release()

static void cursor_buffer_handle_release ( void data,
struct wl_buffer *  wl_buffer 
)
static

Definition at line 1348 of file GHOST_SystemWayland.cpp.

References CLOG_INFO, data, LOG, and cursor_t::wl_buffer.

◆ cursor_buffer_hide()

static void cursor_buffer_hide ( const input_t input)
static

Hide the buffer defined by cursor_buffer_set without changing anything else, so cursor_buffer_show can be used to display it again.

The caller is responsible for setting input->cursor.visible.

Definition at line 3309 of file GHOST_SystemWayland.cpp.

References input.

Referenced by cursor_visible_set().

◆ cursor_buffer_set()

static void cursor_buffer_set ( const input_t input,
wl_buffer *  buffer 
)
static

◆ cursor_buffer_set_surface_impl()

static void cursor_buffer_set_surface_impl ( const input_t input,
wl_buffer *  buffer,
struct wl_surface *  wl_surface,
const int  scale 
)
static

Definition at line 3334 of file GHOST_SystemWayland.cpp.

References buffer, GHOST_ASSERT, and input.

Referenced by cursor_buffer_set().

◆ cursor_buffer_show()

static void cursor_buffer_show ( const input_t input)
static

Show the buffer defined by cursor_buffer_set without changing anything else, so cursor_buffer_hide can be used to display it again.

The caller is responsible for setting input->cursor.visible.

Definition at line 3273 of file GHOST_SystemWayland.cpp.

References Freestyle::c, tablet_tool_input_t::cursor_surface, and input.

Referenced by cursor_visible_set().

◆ cursor_is_software()

static bool cursor_is_software ( const GHOST_TGrabCursorMode  mode,
const bool  use_software_confine 
)
static

◆ cursor_surface_handle_enter()

static void cursor_surface_handle_enter ( void data,
struct wl_surface *  wl_surface,
struct wl_output *  output 
)
static

◆ cursor_surface_handle_leave()

static void cursor_surface_handle_leave ( void data,
struct wl_surface *  wl_surface,
struct wl_output *  output 
)
static

◆ cursor_visible_set()

static void cursor_visible_set ( input_t input,
const bool  visible,
const bool  is_hardware,
const enum eCursorSetMode  set_mode 
)
static

◆ data_device_handle_data_offer()

static void data_device_handle_data_offer ( void ,
struct wl_data_device *  ,
struct wl_data_offer *  id 
)
static

Definition at line 1113 of file GHOST_SystemWayland.cpp.

References CLOG_INFO, data_offer_listener, data_offer_t::id, id, and LOG.

◆ data_device_handle_drop()

static void data_device_handle_drop ( void data,
struct wl_data_device *   
)
static

◆ data_device_handle_enter()

static void data_device_handle_enter ( void data,
struct wl_data_device *  ,
const uint32_t  serial,
struct wl_surface *  surface,
const wl_fixed_t  x,
const wl_fixed_t  y,
struct wl_data_offer *  id 
)
static

◆ data_device_handle_leave()

static void data_device_handle_leave ( void data,
struct wl_data_device *   
)
static

Definition at line 1161 of file GHOST_SystemWayland.cpp.

References CLOG_INFO, data, dnd_events(), GHOST_kEventDraggingExited, input, lock, and LOG.

◆ data_device_handle_motion()

static void data_device_handle_motion ( void data,
struct wl_data_device *  ,
const uint32_t  ,
const wl_fixed_t  x,
const wl_fixed_t  y 
)
static

Definition at line 1178 of file GHOST_SystemWayland.cpp.

References CLOG_INFO, data, dnd_events(), GHOST_kEventDraggingUpdated, input, lock, LOG, x, and y.

◆ data_device_handle_selection()

static void data_device_handle_selection ( void data,
struct wl_data_device *  ,
struct wl_data_offer *  id 
)
static

◆ data_offer_handle_action()

static void data_offer_handle_action ( void data,
struct wl_data_offer *  ,
const uint32_t  dnd_action 
)
static

Definition at line 1088 of file GHOST_SystemWayland.cpp.

References CLOG_INFO, data, and LOG.

◆ data_offer_handle_offer()

static void data_offer_handle_offer ( void data,
struct wl_data_offer *  ,
const char *  mime_type 
)
static

Definition at line 1072 of file GHOST_SystemWayland.cpp.

References CLOG_INFO, data, LOG, and types.

◆ data_offer_handle_source_actions()

static void data_offer_handle_source_actions ( void data,
struct wl_data_offer *  ,
const uint32_t  source_actions 
)
static

Definition at line 1080 of file GHOST_SystemWayland.cpp.

References CLOG_INFO, data, and LOG.

◆ data_source_handle_action()

static void data_source_handle_action ( void ,
struct wl_data_source *  ,
const uint32_t  dnd_action 
)
static

Notify the selected action.

This event indicates the action selected by the compositor after matching the source/destination side actions. Only one action (or none) will be offered here.

Definition at line 1045 of file GHOST_SystemWayland.cpp.

References CLOG_INFO, and LOG.

◆ data_source_handle_cancelled()

static void data_source_handle_cancelled ( void ,
struct wl_data_source *  wl_data_source 
)
static

Definition at line 1006 of file GHOST_SystemWayland.cpp.

References CLOG_INFO, and LOG.

◆ data_source_handle_dnd_drop_performed()

static void data_source_handle_dnd_drop_performed ( void ,
struct wl_data_source *   
)
static

The drag-and-drop operation physically finished.

The user performed the drop action. This event does not indicate acceptance, #wl_data_source.cancelled may still be emitted afterwards if the drop destination does not accept any mime type.

Definition at line 1019 of file GHOST_SystemWayland.cpp.

References CLOG_INFO, and LOG.

◆ data_source_handle_dnd_finished()

static void data_source_handle_dnd_finished ( void ,
struct wl_data_source *   
)
static

The drag-and-drop operation concluded.

The drop destination finished interoperating with this data source, so the client is now free to destroy this data source and free all associated data.

Definition at line 1032 of file GHOST_SystemWayland.cpp.

References CLOG_INFO, and LOG.

◆ data_source_handle_send()

static void data_source_handle_send ( void data,
struct wl_data_source *  ,
const char *  ,
const int32_t  fd 
)
static

Definition at line 989 of file GHOST_SystemWayland.cpp.

References buffer, CLOG_INFO, data, GHOST_PRINT, input, lock, and LOG.

◆ data_source_handle_target()

static void data_source_handle_target ( void ,
struct wl_data_source *  ,
const char *   
)
static

A target accepts an offered mime type.

Sent when a target accepts pointer_focus or motion events. If a target does not accept any of the offered types, type is nullptr.

Definition at line 982 of file GHOST_SystemWayland.cpp.

References CLOG_INFO, and LOG.

◆ display_destroy()

static void display_destroy ( display_t d)
static

◆ dnd_events()

static void dnd_events ( const input_t *const  input,
const GHOST_TEventType  event 
)
static

◆ getCursorPositionClientRelative_impl()

static GHOST_TSuccess getCursorPositionClientRelative_impl ( const input_state_pointer_t input_state,
const GHOST_WindowWayland win,
int32_t x,
int32_t y 
)
static

◆ ghost_wayland_log_handler()

static void ghost_wayland_log_handler ( const char *  msg,
va_list  arg 
)
static

Callback for WAYLAND to run when there is an error.

Note
It's useful to set a break-point on this function as some errors are fatal (for all intents and purposes) but don't crash the process.

Definition at line 379 of file GHOST_SystemWayland.cpp.

References GHOST_ISystem::getBacktraceFn().

Referenced by GHOST_SystemWayland::GHOST_SystemWayland().

◆ ghost_wl_buffer_create_for_image()

static wl_buffer* ghost_wl_buffer_create_for_image ( struct wl_shm *  shm,
const int32_t  size_xy[2],
enum wl_shm_format  format,
void **  r_buffer_data,
size_t *  r_buffer_data_size 
)
static

Return a #wl_buffer, ready to have it's data filled in or NULL in case of failure. The caller is responsible for calling unmap(buffer_data, buffer_size).

Parameters
r_buffer_dataThe buffer to be filled.
r_buffer_data_sizeThe size of r_buffer_data in bytes.

Definition at line 808 of file GHOST_SystemWayland.cpp.

References buffer, ghost_wl_shm_format_as_size(), memfd_create_sealed(), blender::compositor::pool, and UNPACK2.

Referenced by GHOST_SystemWayland::setCustomCursorShape().

◆ ghost_wl_output_own()

bool ghost_wl_output_own ( const struct wl_output *  output)

◆ ghost_wl_output_tag()

void ghost_wl_output_tag ( struct wl_output *  output)

Definition at line 3709 of file GHOST_SystemWayland.cpp.

References ghost_wl_output_tag_id, output, and wl_proxy_set_tag.

Referenced by global_handle_add().

◆ ghost_wl_output_user_data()

struct output_t* ghost_wl_output_user_data ( struct wl_output *  wl_output)

◆ ghost_wl_shm_format_as_size()

static size_t ghost_wl_shm_format_as_size ( enum wl_shm_format  format)
static

Definition at line 787 of file GHOST_SystemWayland.cpp.

References GHOST_ASSERT.

Referenced by ghost_wl_buffer_create_for_image().

◆ ghost_wl_surface_own()

bool ghost_wl_surface_own ( const struct wl_surface *  surface)

◆ ghost_wl_surface_own_cursor_pointer()

bool ghost_wl_surface_own_cursor_pointer ( const struct wl_surface *  surface)

◆ ghost_wl_surface_own_cursor_tablet()

bool ghost_wl_surface_own_cursor_tablet ( const struct wl_surface *  surface)

◆ ghost_wl_surface_tag()

void ghost_wl_surface_tag ( struct wl_surface *  surface)

◆ ghost_wl_surface_tag_cursor_pointer()

void ghost_wl_surface_tag_cursor_pointer ( struct wl_surface *  surface)

◆ ghost_wl_surface_tag_cursor_tablet()

void ghost_wl_surface_tag_cursor_tablet ( struct wl_surface *  surface)

◆ ghost_wl_surface_user_data()

GHOST_WindowWayland* ghost_wl_surface_user_data ( struct wl_surface *  surface)

◆ global_handle_add()

static void global_handle_add ( void data,
struct wl_registry *  wl_registry,
const uint32_t  name,
const char *  interface,
const uint32_t  version 
)
static

◆ global_handle_remove()

static void global_handle_remove ( void ,
struct wl_registry *  ,
const uint32_t  name 
)
static

Announce removal of global object.

Notify the client of removed global objects.

This event notifies the client that the global identified by name is no longer available. If the client bound to the global using the bind request, the client should now destroy that object.

Definition at line 2822 of file GHOST_SystemWayland.cpp.

References CLOG_INFO, and LOG.

◆ input_grab_state_from_mode()

static input_grab_state_t input_grab_state_from_mode ( const GHOST_TGrabCursorMode  mode,
const bool  use_software_confine 
)
static

◆ input_state_pointer_active()

static input_state_pointer_t* input_state_pointer_active ( input_t input)
static

◆ input_state_pointer_from_cursor_surface()

static input_state_pointer_t* input_state_pointer_from_cursor_surface ( input_t input,
const wl_surface *  wl_surface 
)
static

◆ keyboard_handle_enter()

static void keyboard_handle_enter ( void data,
struct wl_keyboard *  ,
const uint32_t  serial,
struct wl_surface *  surface,
struct wl_array *   
)
static

Enter event.

Notification that this seat's keyboard focus is on a certain surface.

Definition at line 2098 of file GHOST_SystemWayland.cpp.

References CLOG_INFO, data, ghost_wl_surface_own(), input, LOG, and surface.

◆ keyboard_handle_key()

static void keyboard_handle_key ( void data,
struct wl_keyboard *  ,
const uint32_t  serial,
const uint32_t  ,
const uint32_t  key,
const uint32_t  state 
)
static

◆ keyboard_handle_key_repeat_cancel()

static void keyboard_handle_key_repeat_cancel ( struct input_t input)
static

Definition at line 2171 of file GHOST_SystemWayland.cpp.

References GHOST_ASSERT, and input.

Referenced by display_destroy(), and keyboard_handle_leave().

◆ keyboard_handle_key_repeat_reset()

static void keyboard_handle_key_repeat_reset ( input_t input,
const bool  use_delay 
)
static

Restart the key-repeat timer.

Parameters
use_delayWhen false, use the interval (prevents pause when the setting changes while the key is held).

Definition at line 2184 of file GHOST_SystemWayland.cpp.

References GHOST_ITimerTask::getTimerProc(), GHOST_ASSERT, input, and GHOST_System::installTimer().

Referenced by keyboard_handle_modifiers().

◆ keyboard_handle_keymap()

static void keyboard_handle_keymap ( void data,
struct wl_keyboard *  ,
const uint32_t  format,
const int32_t  fd,
const uint32_t  size 
)
static

Definition at line 2037 of file GHOST_SystemWayland.cpp.

References CLOG_INFO, data, input, LOG, and size().

◆ keyboard_handle_leave()

static void keyboard_handle_leave ( void data,
struct wl_keyboard *  ,
const uint32_t  ,
struct wl_surface *  surface 
)
static

Leave event.

Notification that this seat's keyboard focus is no longer on a certain surface.

Definition at line 2121 of file GHOST_SystemWayland.cpp.

References CLOG_INFO, data, ghost_wl_surface_own(), input, keyboard_handle_key_repeat_cancel(), LOG, and surface.

◆ keyboard_handle_modifiers()

static void keyboard_handle_modifiers ( void data,
struct wl_keyboard *  ,
const uint32_t  ,
const uint32_t  mods_depressed,
const uint32_t  mods_latched,
const uint32_t  mods_locked,
const uint32_t  group 
)
static

Definition at line 2331 of file GHOST_SystemWayland.cpp.

References CLOG_INFO, data, input, keyboard_handle_key_repeat_reset(), and LOG.

◆ keyboard_repeat_handle_info()

static void keyboard_repeat_handle_info ( void data,
struct wl_keyboard *  ,
const int32_t  rate,
const int32_t  delay 
)
static

Definition at line 2351 of file GHOST_SystemWayland.cpp.

◆ memfd_create_sealed()

static int memfd_create_sealed ( const char *  name)
static

Definition at line 762 of file GHOST_SystemWayland.cpp.

References free().

Referenced by ghost_wl_buffer_create_for_image().

◆ output_handle_done()

static void output_handle_done ( void data,
struct wl_output *   
)
static

Sent all information about output.

This event is sent after all other properties have been sent after binding to the output object and after any other property changes done after that. This allows changes to the output properties to be seen as atomic, even if they happen via multiple events.

Definition at line 2598 of file GHOST_SystemWayland.cpp.

References CLOG_INFO, data, GHOST_ASSERT, LOG, and output.

Referenced by xdg_output_handle_done().

◆ output_handle_geometry()

static void output_handle_geometry ( void data,
struct wl_output *  ,
const int32_t  ,
const int32_t  ,
const int32_t  physical_width,
const int32_t  physical_height,
const int32_t  ,
const char *  make,
const char *  model,
const int32_t  transform 
)
static

Definition at line 2537 of file GHOST_SystemWayland.cpp.

References CLOG_INFO, data, LOG, make(), output, and transform().

◆ output_handle_mode()

static void output_handle_mode ( void data,
struct wl_output *  ,
const uint32_t  flags,
const int32_t  width,
const int32_t  height,
const int32_t   
)
static

Definition at line 2565 of file GHOST_SystemWayland.cpp.

References CLOG_INFO, data, height, LOG, output, and width.

◆ output_handle_scale()

static void output_handle_scale ( void data,
struct wl_output *  ,
const int32_t  factor 
)
static

◆ pointer_handle_axis()

static void pointer_handle_axis ( void ,
struct wl_pointer *  ,
const uint32_t  ,
const uint32_t  axis,
const wl_fixed_t  value 
)
static

Definition at line 1583 of file GHOST_SystemWayland.cpp.

References CLOG_INFO, and LOG.

◆ pointer_handle_axis_discrete()

static void pointer_handle_axis_discrete ( void data,
struct wl_pointer *  ,
uint32_t  axis,
int32_t  discrete 
)
static

Definition at line 1609 of file GHOST_SystemWayland.cpp.

References CLOG_INFO, data, ghost_wl_surface_user_data(), input, and LOG.

◆ pointer_handle_axis_source()

static void pointer_handle_axis_source ( void ,
struct wl_pointer *  ,
uint32_t  axis_source 
)
static

Definition at line 1596 of file GHOST_SystemWayland.cpp.

References CLOG_INFO, and LOG.

◆ pointer_handle_axis_stop()

static void pointer_handle_axis_stop ( void ,
struct wl_pointer *  ,
uint32_t  ,
uint32_t  axis 
)
static

Definition at line 1602 of file GHOST_SystemWayland.cpp.

References CLOG_INFO, and LOG.

◆ pointer_handle_button()

static void pointer_handle_button ( void data,
struct wl_pointer *  ,
const uint32_t  serial,
const uint32_t  ,
const uint32_t  button,
const uint32_t  state 
)
static

◆ pointer_handle_enter()

static void pointer_handle_enter ( void data,
struct wl_pointer *  ,
const uint32_t  serial,
struct wl_surface *  surface,
const wl_fixed_t  surface_x,
const wl_fixed_t  surface_y 
)
static

◆ pointer_handle_frame()

static void pointer_handle_frame ( void ,
struct wl_pointer *   
)
static

Definition at line 1592 of file GHOST_SystemWayland.cpp.

References CLOG_INFO, and LOG.

◆ pointer_handle_leave()

static void pointer_handle_leave ( void data,
struct wl_pointer *  ,
const uint32_t  ,
struct wl_surface *  surface 
)
static

◆ pointer_handle_motion()

static void pointer_handle_motion ( void data,
struct wl_pointer *  ,
const uint32_t  ,
const wl_fixed_t  surface_x,
const wl_fixed_t  surface_y 
)
static

◆ read_pipe()

static std::string read_pipe ( data_offer_t data_offer,
const std::string  mime_receive,
std::mutex mutex 
)
static

◆ relative_pointer_handle_relative_motion()

static void relative_pointer_handle_relative_motion ( void data,
struct zwp_relative_pointer_v1 *  ,
const uint32_t  ,
const uint32_t  ,
const wl_fixed_t  dx,
const wl_fixed_t  dy,
const  wl_fixed_t,
const  wl_fixed_t 
)
static

◆ relative_pointer_handle_relative_motion_impl()

static void relative_pointer_handle_relative_motion_impl ( input_t input,
GHOST_WindowWayland win,
const wl_fixed_t  xy[2] 
)
static

◆ seat_handle_capabilities()

static void seat_handle_capabilities ( void data,
struct wl_seat *  wl_seat,
const uint32_t  capabilities 
)
static

◆ seat_handle_name()

static void seat_handle_name ( void data,
struct wl_seat *  ,
const char *  name 
)
static

Definition at line 2424 of file GHOST_SystemWayland.cpp.

References CLOG_INFO, data, and LOG.

◆ setCursorGrab_use_software_confine()

static bool setCursorGrab_use_software_confine ( const GHOST_TGrabCursorMode  mode,
wl_surface *  surface 
)
static

◆ setCursorPositionClientRelative_impl()

static GHOST_TSuccess setCursorPositionClientRelative_impl ( input_t input,
GHOST_WindowWayland win,
const int32_t  x,
const int32_t  y 
)
static

◆ shell_handle_ping()

static void shell_handle_ping ( void ,
struct xdg_wm_base *  xdg_wm_base,
const uint32_t  serial 
)
static

Definition at line 2662 of file GHOST_SystemWayland.cpp.

References CLOG_INFO, and LOG.

◆ tablet_seat_handle_pad_added()

static void tablet_seat_handle_pad_added ( void ,
struct zwp_tablet_seat_v2 *  ,
struct zwp_tablet_pad_v2 *  id 
)
static

Definition at line 2013 of file GHOST_SystemWayland.cpp.

References CLOG_INFO, and LOG.

◆ tablet_seat_handle_tablet_added()

static void tablet_seat_handle_tablet_added ( void ,
struct zwp_tablet_seat_v2 *  ,
struct zwp_tablet_v2 *  id 
)
static

Definition at line 1985 of file GHOST_SystemWayland.cpp.

References CLOG_INFO, and LOG.

◆ tablet_seat_handle_tool_added()

static void tablet_seat_handle_tool_added ( void data,
struct zwp_tablet_seat_v2 *  ,
struct zwp_tablet_tool_v2 *  id 
)
static

◆ tablet_tool_handle_button()

static void tablet_tool_handle_button ( void data,
struct zwp_tablet_tool_v2 *  ,
const uint32_t  serial,
const uint32_t  button,
const uint32_t  state 
)
static

◆ tablet_tool_handle_capability()

static void tablet_tool_handle_capability ( void ,
struct zwp_tablet_tool_v2 *  ,
const uint32_t  capability 
)
static

Definition at line 1679 of file GHOST_SystemWayland.cpp.

References CLOG_INFO, and LOG.

◆ tablet_tool_handle_distance()

static void tablet_tool_handle_distance ( void ,
struct zwp_tablet_tool_v2 *  ,
const uint32_t  distance 
)
static

Definition at line 1824 of file GHOST_SystemWayland.cpp.

References CLOG_INFO, blender::math::distance(), and LOG.

◆ tablet_tool_handle_done()

static void tablet_tool_handle_done ( void ,
struct zwp_tablet_tool_v2 *   
)
static

Definition at line 1693 of file GHOST_SystemWayland.cpp.

References CLOG_INFO, and LOG.

◆ tablet_tool_handle_down()

static void tablet_tool_handle_down ( void data,
struct zwp_tablet_tool_v2 *  ,
const uint32_t  serial 
)
static

◆ tablet_tool_handle_frame()

static void tablet_tool_handle_frame ( void data,
struct zwp_tablet_tool_v2 *  ,
const uint32_t   
)
static

◆ tablet_tool_handle_hardware_id_wacom()

static void tablet_tool_handle_hardware_id_wacom ( void ,
struct zwp_tablet_tool_v2 *  ,
const uint32_t  ,
const uint32_t   
)
static

Definition at line 1670 of file GHOST_SystemWayland.cpp.

References CLOG_INFO, and LOG.

◆ tablet_tool_handle_hardware_serial()

static void tablet_tool_handle_hardware_serial ( void ,
struct zwp_tablet_tool_v2 *  ,
const uint32_t  ,
const uint32_t   
)
static

Definition at line 1662 of file GHOST_SystemWayland.cpp.

References CLOG_INFO, and LOG.

◆ tablet_tool_handle_motion()

static void tablet_tool_handle_motion ( void data,
struct zwp_tablet_tool_v2 *  ,
const wl_fixed_t  x,
const wl_fixed_t  y 
)
static

Definition at line 1797 of file GHOST_SystemWayland.cpp.

References CLOG_INFO, data, input, tablet_tool_input_t::input, LOG, x, and y.

◆ tablet_tool_handle_pressure()

static void tablet_tool_handle_pressure ( void data,
struct zwp_tablet_tool_v2 *  ,
const uint32_t  pressure 
)
static

◆ tablet_tool_handle_proximity_in()

static void tablet_tool_handle_proximity_in ( void data,
struct zwp_tablet_tool_v2 *  ,
const uint32_t  serial,
struct zwp_tablet_v2 *  ,
struct wl_surface *  surface 
)
static

◆ tablet_tool_handle_proximity_out()

static void tablet_tool_handle_proximity_out ( void data,
struct zwp_tablet_tool_v2 *   
)
static

Definition at line 1748 of file GHOST_SystemWayland.cpp.

References CLOG_INFO, data, LOG, and tablet_tool_input_t::proximity.

◆ tablet_tool_handle_removed()

static void tablet_tool_handle_removed ( void data,
struct zwp_tablet_tool_v2 *  zwp_tablet_tool_v2 
)
static

◆ tablet_tool_handle_rotation()

static void tablet_tool_handle_rotation ( void ,
struct zwp_tablet_tool_v2 *  ,
const wl_fixed_t  degrees 
)
static

Definition at line 1850 of file GHOST_SystemWayland.cpp.

References CLOG_INFO, and LOG.

◆ tablet_tool_handle_slider()

static void tablet_tool_handle_slider ( void ,
struct zwp_tablet_tool_v2 *  ,
const int32_t  position 
)
static

Definition at line 1857 of file GHOST_SystemWayland.cpp.

References CLOG_INFO, and LOG.

◆ tablet_tool_handle_tilt()

static void tablet_tool_handle_tilt ( void data,
struct zwp_tablet_tool_v2 *  ,
const wl_fixed_t  tilt_x,
const wl_fixed_t  tilt_y 
)
static

◆ tablet_tool_handle_type()

static void tablet_tool_handle_type ( void data,
struct zwp_tablet_tool_v2 *  ,
const uint32_t  tool_type 
)
static

◆ tablet_tool_handle_up()

static void tablet_tool_handle_up ( void data,
struct zwp_tablet_tool_v2 *   
)
static

◆ tablet_tool_handle_wheel()

static void tablet_tool_handle_wheel ( void data,
struct zwp_tablet_tool_v2 *  ,
const  wl_fixed_t,
const int32_t  clicks 
)
static

◆ tablet_tool_map_type()

static GHOST_TTabletMode tablet_tool_map_type ( enum zwp_tablet_tool_v2_type  wl_tablet_tool_type)
static

◆ update_cursor_scale()

static bool update_cursor_scale ( cursor_t cursor,
wl_shm *  shm,
input_state_pointer_t input_state,
wl_surface *  cursor_surface 
)
static

◆ xdg_output_handle_description()

static void xdg_output_handle_description ( void ,
struct zxdg_output_v1 *  ,
const char *  description 
)
static

Definition at line 2511 of file GHOST_SystemWayland.cpp.

References CLOG_INFO, and LOG.

◆ xdg_output_handle_done()

static void xdg_output_handle_done ( void data,
struct zxdg_output_v1 *   
)
static

Definition at line 2493 of file GHOST_SystemWayland.cpp.

References CLOG_INFO, data, LOG, output, and output_handle_done().

◆ xdg_output_handle_logical_position()

static void xdg_output_handle_logical_position ( void data,
struct zxdg_output_v1 *  ,
const int32_t  x,
const int32_t  y 
)
static

Definition at line 2446 of file GHOST_SystemWayland.cpp.

References CLOG_INFO, data, LOG, output, x, and y.

◆ xdg_output_handle_logical_size()

static void xdg_output_handle_logical_size ( void data,
struct zxdg_output_v1 *  ,
const int32_t  width,
const int32_t  height 
)
static

Definition at line 2459 of file GHOST_SystemWayland.cpp.

References CLOG_INFO, data, GHOST_PRINT, height, LOG, output, use_gnome_confine_hack, and width.

◆ xdg_output_handle_name()

static void xdg_output_handle_name ( void ,
struct zxdg_output_v1 *  ,
const char *  name 
)
static

Definition at line 2504 of file GHOST_SystemWayland.cpp.

References CLOG_INFO, and LOG.

◆ xkb_map_gkey()

static GHOST_TKey xkb_map_gkey ( const xkb_keysym_t  sym)
static

◆ xkb_map_gkey_or_scan_code()

static GHOST_TKey xkb_map_gkey_or_scan_code ( const xkb_keysym_t  sym,
const uint32_t  key 
)
static

Map the keys using the users keyboard layout, if that fails fall back to physical locations. This is needed so users with keyboard layouts that don't expose GHOST_kKeyAccentGrave (typically the key under escape) in the layout can still use this key in keyboard shortcuts.

Parameters
keyThe key's scan-code, compatible with values in linux/input-event-codes.h.

Definition at line 645 of file GHOST_SystemWayland.cpp.

References GHOST_kKeyAccentGrave, GHOST_kKeyUnknown, GHOST_PRINT, hex, KEY_GRAVE, blender::meshintersect::sym(), UNLIKELY, and xkb_map_gkey().

Referenced by keyboard_handle_key().

◆ xkb_state_key_get_one_sym_without_modifiers()

static xkb_keysym_t xkb_state_key_get_one_sym_without_modifiers ( struct xkb_state *  xkb_state_empty,
struct xkb_state *  xkb_state_empty_with_numlock,
const xkb_keycode_t  key 
)
static

A version of #xkb_state_key_get_one_sym which returns the key without any modifiers pressed. Needed because GHOST_TKey uses these values as key-codes.

Definition at line 2145 of file GHOST_SystemWayland.cpp.

References blender::meshintersect::sym().

Referenced by keyboard_handle_key().

Variable Documentation

◆ cursor_buffer_listener

const struct wl_buffer_listener cursor_buffer_listener
static
Initial value:
= {
}
static void cursor_buffer_handle_release(void *data, struct wl_buffer *wl_buffer)

Definition at line 1348 of file GHOST_SystemWayland.cpp.

Referenced by GHOST_SystemWayland::setCustomCursorShape().

◆ cursor_surface_listener

const struct wl_surface_listener cursor_surface_listener
static
Initial value:
= {
}
static void cursor_surface_handle_leave(void *data, struct wl_surface *wl_surface, struct wl_output *output)
static void cursor_surface_handle_enter(void *data, struct wl_surface *wl_surface, struct wl_output *output)

Definition at line 1417 of file GHOST_SystemWayland.cpp.

Referenced by seat_handle_capabilities(), and tablet_seat_handle_tool_added().

◆ cursors

const std::unordered_map<GHOST_TStandardCursor, const char *> cursors
static

◆ data_device_listener

const struct wl_data_device_listener data_device_listener
static
Initial value:
= {
}
static void data_device_handle_leave(void *data, struct wl_data_device *)
static void data_device_handle_motion(void *data, struct wl_data_device *, const uint32_t, const wl_fixed_t x, const wl_fixed_t y)
static void data_device_handle_enter(void *data, struct wl_data_device *, const uint32_t serial, struct wl_surface *surface, const wl_fixed_t x, const wl_fixed_t y, struct wl_data_offer *id)
static void data_device_handle_selection(void *data, struct wl_data_device *, struct wl_data_offer *id)
static void data_device_handle_data_offer(void *, struct wl_data_device *, struct wl_data_offer *id)
static void data_device_handle_drop(void *data, struct wl_data_device *)

Definition at line 1276 of file GHOST_SystemWayland.cpp.

Referenced by GHOST_SystemWayland::GHOST_SystemWayland().

◆ data_offer_listener

const struct wl_data_offer_listener data_offer_listener
static
Initial value:
= {
}
static void data_offer_handle_offer(void *data, struct wl_data_offer *, const char *mime_type)
static void data_offer_handle_source_actions(void *data, struct wl_data_offer *, const uint32_t source_actions)
static void data_offer_handle_action(void *data, struct wl_data_offer *, const uint32_t dnd_action)

Definition at line 1088 of file GHOST_SystemWayland.cpp.

Referenced by data_device_handle_data_offer().

◆ data_source_listener

const struct wl_data_source_listener data_source_listener
static
Initial value:
= {
}
static void data_source_handle_dnd_drop_performed(void *, struct wl_data_source *)
static void data_source_handle_cancelled(void *, struct wl_data_source *wl_data_source)
static void data_source_handle_target(void *, struct wl_data_source *, const char *)
static void data_source_handle_send(void *data, struct wl_data_source *, const char *, const int32_t fd)
static void data_source_handle_action(void *, struct wl_data_source *, const uint32_t dnd_action)
static void data_source_handle_dnd_finished(void *, struct wl_data_source *)

Definition at line 1045 of file GHOST_SystemWayland.cpp.

Referenced by GHOST_SystemWayland::putClipboard().

◆ default_cursor_size

const int default_cursor_size = 24
static

Definition at line 694 of file GHOST_SystemWayland.cpp.

Referenced by seat_handle_capabilities().

◆ ghost_wl_output_tag_id

const char* ghost_wl_output_tag_id = "GHOST-output"
static

Definition at line 3684 of file GHOST_SystemWayland.cpp.

Referenced by ghost_wl_output_own(), and ghost_wl_output_tag().

◆ ghost_wl_surface_cursor_pointer_tag_id

const char* ghost_wl_surface_cursor_pointer_tag_id = "GHOST-cursor-pointer"
static

◆ ghost_wl_surface_cursor_tablet_tag_id

const char* ghost_wl_surface_cursor_tablet_tag_id = "GHOST-cursor-tablet"
static

◆ ghost_wl_surface_tag_id

const char* ghost_wl_surface_tag_id = "GHOST-window"
static

Definition at line 3685 of file GHOST_SystemWayland.cpp.

Referenced by ghost_wl_surface_own(), and ghost_wl_surface_tag().

◆ keyboard_listener

const struct wl_keyboard_listener keyboard_listener
static
Initial value:
= {
}
static void keyboard_handle_modifiers(void *data, struct wl_keyboard *, const uint32_t, const uint32_t mods_depressed, const uint32_t mods_latched, const uint32_t mods_locked, const uint32_t group)
static void keyboard_repeat_handle_info(void *data, struct wl_keyboard *, const int32_t rate, const int32_t delay)
static void keyboard_handle_enter(void *data, struct wl_keyboard *, const uint32_t serial, struct wl_surface *surface, struct wl_array *)
static void keyboard_handle_key(void *data, struct wl_keyboard *, const uint32_t serial, const uint32_t, const uint32_t key, const uint32_t state)
static void keyboard_handle_keymap(void *data, struct wl_keyboard *, const uint32_t format, const int32_t fd, const uint32_t size)
static void keyboard_handle_leave(void *data, struct wl_keyboard *, const uint32_t, struct wl_surface *surface)

Definition at line 2351 of file GHOST_SystemWayland.cpp.

Referenced by seat_handle_capabilities().

◆ LOG_WL_CURSOR_BUFFER

CLG_LogRef LOG_WL_CURSOR_BUFFER = {"ghost.wl.handle.cursor_buffer"}
static

Definition at line 1345 of file GHOST_SystemWayland.cpp.

◆ LOG_WL_CURSOR_SURFACE

CLG_LogRef LOG_WL_CURSOR_SURFACE = {"ghost.wl.handle.cursor_surface"}
static

Definition at line 1373 of file GHOST_SystemWayland.cpp.

◆ LOG_WL_DATA_DEVICE

CLG_LogRef LOG_WL_DATA_DEVICE = {"ghost.wl.handle.data_device"}
static

Definition at line 1110 of file GHOST_SystemWayland.cpp.

◆ LOG_WL_DATA_OFFER

CLG_LogRef LOG_WL_DATA_OFFER = {"ghost.wl.handle.data_offer"}
static

Definition at line 1069 of file GHOST_SystemWayland.cpp.

◆ LOG_WL_DATA_SOURCE

CLG_LogRef LOG_WL_DATA_SOURCE = {"ghost.wl.handle.data_source"}
static

Definition at line 925 of file GHOST_SystemWayland.cpp.

◆ LOG_WL_KEYBOARD

CLG_LogRef LOG_WL_KEYBOARD = {"ghost.wl.handle.keyboard"}
static

Definition at line 2034 of file GHOST_SystemWayland.cpp.

◆ LOG_WL_OUTPUT

CLG_LogRef LOG_WL_OUTPUT = {"ghost.wl.handle.output"}
static

Definition at line 2534 of file GHOST_SystemWayland.cpp.

◆ LOG_WL_POINTER

CLG_LogRef LOG_WL_POINTER = {"ghost.wl.handle.pointer"}
static

Definition at line 1447 of file GHOST_SystemWayland.cpp.

◆ LOG_WL_REGISTRY

CLG_LogRef LOG_WL_REGISTRY = {"ghost.wl.handle.registry"}
static

Definition at line 2715 of file GHOST_SystemWayland.cpp.

◆ LOG_WL_RELATIVE_POINTER

CLG_LogRef LOG_WL_RELATIVE_POINTER = {"ghost.wl.handle.relative_pointer"}
static

Definition at line 849 of file GHOST_SystemWayland.cpp.

◆ LOG_WL_SEAT

CLG_LogRef LOG_WL_SEAT = {"ghost.wl.handle.seat"}
static

Definition at line 2385 of file GHOST_SystemWayland.cpp.

◆ LOG_WL_TABLET_SEAT

CLG_LogRef LOG_WL_TABLET_SEAT = {"ghost.wl.handle.tablet_seat"}
static

Definition at line 1982 of file GHOST_SystemWayland.cpp.

◆ LOG_WL_TABLET_TOOL

CLG_LogRef LOG_WL_TABLET_TOOL = {"ghost.wl.handle.tablet_tool"}
static

Definition at line 1648 of file GHOST_SystemWayland.cpp.

◆ LOG_WL_XDG_OUTPUT

CLG_LogRef LOG_WL_XDG_OUTPUT = {"ghost.wl.handle.xdg_output"}
static

Definition at line 2443 of file GHOST_SystemWayland.cpp.

◆ LOG_WL_XDG_WM_BASE

CLG_LogRef LOG_WL_XDG_WM_BASE = {"ghost.wl.handle.output"}
static

Definition at line 2659 of file GHOST_SystemWayland.cpp.

◆ mime_dnd

const std::unordered_map<std::string, GHOST_TDragnDropTypes> mime_dnd
static
Initial value:
= {
}
static constexpr const char * mime_text_utf8
static constexpr const char * mime_text_uri
static constexpr const char * mime_text_plain
@ GHOST_kDragnDropTypeFilenames
Definition: GHOST_Types.h:476
@ GHOST_kDragnDropTypeString
Definition: GHOST_Types.h:477

Definition at line 741 of file GHOST_SystemWayland.cpp.

Referenced by dnd_events().

◆ mime_preference_order

const std::vector<std::string> mime_preference_order
static

◆ mime_send

const std::vector<std::string> mime_send
static
Initial value:
= {
"UTF8_STRING",
"COMPOUND_TEXT",
"TEXT",
"STRING",
"text/plain;charset=utf-8",
"text/plain",
}

Definition at line 753 of file GHOST_SystemWayland.cpp.

Referenced by GHOST_SystemWayland::putClipboard().

◆ mime_text_plain

constexpr const char* mime_text_plain = "text/plain"
staticconstexpr

◆ mime_text_uri

constexpr const char* mime_text_uri = "text/uri-list"
staticconstexpr

Definition at line 739 of file GHOST_SystemWayland.cpp.

Referenced by data_device_handle_drop().

◆ mime_text_utf8

constexpr const char* mime_text_utf8 = "text/plain;charset=utf-8"
staticconstexpr

◆ output_listener

const struct wl_output_listener output_listener
static
Initial value:
= {
}
static void output_handle_geometry(void *data, struct wl_output *, const int32_t, const int32_t, const int32_t physical_width, const int32_t physical_height, const int32_t, const char *make, const char *model, const int32_t transform)
static void output_handle_scale(void *data, struct wl_output *, const int32_t factor)
static void output_handle_mode(void *data, struct wl_output *, const uint32_t flags, const int32_t width, const int32_t height, const int32_t)
static void output_handle_done(void *data, struct wl_output *wl_output)

Definition at line 2627 of file GHOST_SystemWayland.cpp.

Referenced by global_handle_add().

◆ pointer_listener

const struct wl_pointer_listener pointer_listener
static
Initial value:
= {
}
static void pointer_handle_axis_discrete(void *data, struct wl_pointer *, uint32_t axis, int32_t discrete)
static void pointer_handle_enter(void *data, struct wl_pointer *, const uint32_t serial, struct wl_surface *surface, const wl_fixed_t surface_x, const wl_fixed_t surface_y)
static void pointer_handle_axis(void *, struct wl_pointer *, const uint32_t, const uint32_t axis, const wl_fixed_t value)
static void pointer_handle_button(void *data, struct wl_pointer *, const uint32_t serial, const uint32_t, const uint32_t button, const uint32_t state)
static void pointer_handle_axis_stop(void *, struct wl_pointer *, uint32_t, uint32_t axis)
static void pointer_handle_axis_source(void *, struct wl_pointer *, uint32_t axis_source)
static void pointer_handle_leave(void *data, struct wl_pointer *, const uint32_t, struct wl_surface *surface)
static void pointer_handle_motion(void *data, struct wl_pointer *, const uint32_t, const wl_fixed_t surface_x, const wl_fixed_t surface_y)
static void pointer_handle_frame(void *, struct wl_pointer *)

Definition at line 1609 of file GHOST_SystemWayland.cpp.

Referenced by seat_handle_capabilities().

◆ registry_listener

const struct wl_registry_listener registry_listener
static
Initial value:
= {
}
static void global_handle_remove(void *, struct wl_registry *, const uint32_t name)
static void global_handle_add(void *data, struct wl_registry *wl_registry, const uint32_t name, const char *interface, const uint32_t version)

Definition at line 2822 of file GHOST_SystemWayland.cpp.

Referenced by GHOST_SystemWayland::GHOST_SystemWayland().

◆ relative_pointer_listener

const zwp_relative_pointer_v1_listener relative_pointer_listener
static
Initial value:
= {
}
static void relative_pointer_handle_relative_motion(void *data, struct zwp_relative_pointer_v1 *, const uint32_t, const uint32_t, const wl_fixed_t dx, const wl_fixed_t dy, const wl_fixed_t, const wl_fixed_t)

Definition at line 913 of file GHOST_SystemWayland.cpp.

Referenced by GHOST_SystemWayland::window_cursor_grab_set().

◆ seat_listener

const struct wl_seat_listener seat_listener
static
Initial value:
= {
}
static void seat_handle_capabilities(void *data, struct wl_seat *wl_seat, const uint32_t capabilities)
static void seat_handle_name(void *data, struct wl_seat *, const char *name)

Definition at line 2424 of file GHOST_SystemWayland.cpp.

Referenced by global_handle_add().

◆ shell_listener

const struct xdg_wm_base_listener shell_listener
static
Initial value:
= {
}
static void shell_handle_ping(void *, struct xdg_wm_base *xdg_wm_base, const uint32_t serial)

Definition at line 2662 of file GHOST_SystemWayland.cpp.

Referenced by global_handle_add().

◆ system_selection_mutex

std::mutex system_selection_mutex
static

Check this lock before accessing GHOST_SystemWayland::selection from a thread.

Definition at line 371 of file GHOST_SystemWayland.cpp.

Referenced by data_device_handle_selection().

◆ tablet_seat_listener

const struct zwp_tablet_seat_v2_listener tablet_seat_listener
static
Initial value:
= {
}
static void tablet_seat_handle_tool_added(void *data, struct zwp_tablet_seat_v2 *, struct zwp_tablet_tool_v2 *id)
static void tablet_seat_handle_pad_added(void *, struct zwp_tablet_seat_v2 *, struct zwp_tablet_pad_v2 *id)
static void tablet_seat_handle_tablet_added(void *, struct zwp_tablet_seat_v2 *, struct zwp_tablet_v2 *id)

Definition at line 2013 of file GHOST_SystemWayland.cpp.

Referenced by GHOST_SystemWayland::GHOST_SystemWayland().

◆ tablet_tool_listner

const struct zwp_tablet_tool_v2_listener tablet_tool_listner
static
Initial value:
= {
}
static void tablet_tool_handle_down(void *data, struct zwp_tablet_tool_v2 *, const uint32_t serial)
static void tablet_tool_handle_distance(void *, struct zwp_tablet_tool_v2 *, const uint32_t distance)
static void tablet_tool_handle_up(void *data, struct zwp_tablet_tool_v2 *)
static void tablet_tool_handle_wheel(void *data, struct zwp_tablet_tool_v2 *, const wl_fixed_t, const int32_t clicks)
static void tablet_tool_handle_done(void *, struct zwp_tablet_tool_v2 *)
static void tablet_tool_handle_rotation(void *, struct zwp_tablet_tool_v2 *, const wl_fixed_t degrees)
static void tablet_tool_handle_slider(void *, struct zwp_tablet_tool_v2 *, const int32_t position)
static void tablet_tool_handle_frame(void *data, struct zwp_tablet_tool_v2 *, const uint32_t)
static void tablet_tool_handle_hardware_serial(void *, struct zwp_tablet_tool_v2 *, const uint32_t, const uint32_t)
static void tablet_tool_handle_tilt(void *data, struct zwp_tablet_tool_v2 *, const wl_fixed_t tilt_x, const wl_fixed_t tilt_y)
static void tablet_tool_handle_proximity_out(void *data, struct zwp_tablet_tool_v2 *)
static void tablet_tool_handle_pressure(void *data, struct zwp_tablet_tool_v2 *, const uint32_t pressure)
static void tablet_tool_handle_capability(void *, struct zwp_tablet_tool_v2 *, const uint32_t capability)
static void tablet_tool_handle_proximity_in(void *data, struct zwp_tablet_tool_v2 *, const uint32_t serial, struct zwp_tablet_v2 *, struct wl_surface *surface)
static void tablet_tool_handle_removed(void *data, struct zwp_tablet_tool_v2 *zwp_tablet_tool_v2)
static void tablet_tool_handle_motion(void *data, struct zwp_tablet_tool_v2 *, const wl_fixed_t x, const wl_fixed_t y)
static void tablet_tool_handle_button(void *data, struct zwp_tablet_tool_v2 *, const uint32_t serial, const uint32_t button, const uint32_t state)
static void tablet_tool_handle_hardware_id_wacom(void *, struct zwp_tablet_tool_v2 *, const uint32_t, const uint32_t)
static void tablet_tool_handle_type(void *data, struct zwp_tablet_tool_v2 *, const uint32_t tool_type)

Definition at line 1923 of file GHOST_SystemWayland.cpp.

Referenced by tablet_seat_handle_tool_added().

◆ use_gnome_confine_hack

bool use_gnome_confine_hack = false
static

Always use software confine (not just in GNOME). Useful for developing with compositors that don't need this workaround.

Definition at line 82 of file GHOST_SystemWayland.cpp.

Referenced by setCursorGrab_use_software_confine(), and xdg_output_handle_logical_size().

◆ window_manager

GHOST_WindowManager* window_manager = nullptr
static

◆ xdg_output_listener

const struct zxdg_output_v1_listener xdg_output_listener
static
Initial value:
= {
}
static void xdg_output_handle_done(void *data, struct zxdg_output_v1 *)
static void xdg_output_handle_logical_size(void *data, struct zxdg_output_v1 *, const int32_t width, const int32_t height)
static void xdg_output_handle_logical_position(void *data, struct zxdg_output_v1 *, const int32_t x, const int32_t y)
static void xdg_output_handle_description(void *, struct zxdg_output_v1 *, const char *description)
static void xdg_output_handle_name(void *, struct zxdg_output_v1 *, const char *name)

Definition at line 2511 of file GHOST_SystemWayland.cpp.

Referenced by global_handle_add().