Cleanup: use _get() suffix for GHOST/Wayland methods

Avoid variables shadowing methods for common names such as
scale & outputs.
This commit is contained in:
Campbell Barton 2023-08-10 17:38:34 +10:00
parent 23cd37de25
commit ea10e601fd
4 changed files with 86 additions and 80 deletions

View File

@ -2546,7 +2546,7 @@ static void data_device_handle_drop(void *data, wl_data_device * /*wl_data_devic
* 'text_update_edited' to behave like dropped text was pasted. */
CLOG_INFO(LOG, 2, "drop_read_uris_fn (text_plain, text_utf8), unhandled!");
}
wl_display_roundtrip(system->wl_display());
wl_display_roundtrip(system->wl_display_get());
};
/* Pass in `seat->wl_surface_window_focus_dnd` instead of accessing it from `seat` since the
@ -2670,7 +2670,7 @@ static void cursor_surface_handle_enter(void *data, wl_surface *wl_surface, wl_o
seat, wl_surface);
const GWL_Output *reg_output = ghost_wl_output_user_data(wl_output);
seat_state_pointer->outputs.insert(reg_output);
update_cursor_scale(seat->cursor, seat->system->wl_shm(), seat_state_pointer, wl_surface);
update_cursor_scale(seat->cursor, seat->system->wl_shm_get(), seat_state_pointer, wl_surface);
}
static void cursor_surface_handle_leave(void *data, wl_surface *wl_surface, wl_output *wl_output)
@ -2686,7 +2686,7 @@ static void cursor_surface_handle_leave(void *data, wl_surface *wl_surface, wl_o
seat, wl_surface);
const GWL_Output *reg_output = ghost_wl_output_user_data(wl_output);
seat_state_pointer->outputs.erase(reg_output);
update_cursor_scale(seat->cursor, seat->system->wl_shm(), seat_state_pointer, wl_surface);
update_cursor_scale(seat->cursor, seat->system->wl_shm_get(), seat_state_pointer, wl_surface);
}
static const wl_surface_listener cursor_surface_listener = {
@ -3089,7 +3089,7 @@ static void gesture_pinch_handle_begin(void *data,
* however as the operators are not even using coordinates compatible with each other,
* it would be better to resolve this by passing rotation & zoom levels directly,
* instead of attempting to handle them as cursor coordinates. */
const GWL_WindowScaleParams &scale_params = win->scale_params();
const GWL_WindowScaleParams &scale_params = win->scale_params_get();
seat->pointer_gesture_pinch.scale.factor = gwl_window_scale_int_to(
scale_params, seat->pointer_gesture_pinch.scale.factor);
seat->pointer_gesture_pinch.rotation.factor = gwl_window_scale_int_to(
@ -3677,7 +3677,7 @@ static void tablet_seat_handle_tool_added(void *data,
tablet_tool->seat = seat;
/* Every tool has its own cursor wl_surface. */
tablet_tool->wl.surface_cursor = wl_compositor_create_surface(seat->system->wl_compositor());
tablet_tool->wl.surface_cursor = wl_compositor_create_surface(seat->system->wl_compositor_get());
ghost_wl_surface_tag_cursor_tablet(tablet_tool->wl.surface_cursor);
wl_surface_add_listener(tablet_tool->wl.surface_cursor, &cursor_surface_listener, (void *)seat);
@ -4310,7 +4310,7 @@ static void gwl_seat_capability_pointer_enable(GWL_Seat *seat)
return;
}
seat->wl.pointer = wl_seat_get_pointer(seat->wl.seat);
seat->cursor.wl.surface_cursor = wl_compositor_create_surface(seat->system->wl_compositor());
seat->cursor.wl.surface_cursor = wl_compositor_create_surface(seat->system->wl_compositor_get());
seat->cursor.visible = true;
seat->cursor.wl.buffer = nullptr;
if (!get_cursor_settings(seat->cursor.theme_name, seat->cursor.theme_size)) {
@ -4340,7 +4340,7 @@ static void gwl_seat_capability_pointer_enable(GWL_Seat *seat)
wl_surface_add_listener(seat->cursor.wl.surface_cursor, &cursor_surface_listener, seat);
ghost_wl_surface_tag_cursor_pointer(seat->cursor.wl.surface_cursor);
zwp_pointer_gestures_v1 *pointer_gestures = seat->system->wp_pointer_gestures();
zwp_pointer_gestures_v1 *pointer_gestures = seat->system->wp_pointer_gestures_get();
if (pointer_gestures) {
const uint pointer_gestures_version = zwp_pointer_gestures_v1_get_version(pointer_gestures);
#ifdef ZWP_POINTER_GESTURE_HOLD_V1_INTERFACE
@ -4380,7 +4380,7 @@ static void gwl_seat_capability_pointer_disable(GWL_Seat *seat)
return;
}
zwp_pointer_gestures_v1 *pointer_gestures = seat->system->wp_pointer_gestures();
zwp_pointer_gestures_v1 *pointer_gestures = seat->system->wp_pointer_gestures_get();
if (pointer_gestures) {
#ifdef ZWP_POINTER_GESTURE_HOLD_V1_INTERFACE
{ /* Hold gesture. */
@ -6333,14 +6333,14 @@ GHOST_IContext *GHOST_SystemWayland::createOffscreenContext(GHOST_GPUSettings gp
#ifdef WITH_VULKAN_BACKEND
case GHOST_kDrawingContextTypeVulkan: {
/* Create new off-screen surface only for vulkan. */
wl_surface *wl_surface = wl_compositor_create_surface(wl_compositor());
wl_surface *wl_surface = wl_compositor_create_surface(wl_compositor_get());
GHOST_Context *context = new GHOST_ContextVK(false,
GHOST_kVulkanPlatformWayland,
0,
nullptr,
wl_surface,
display_->wl_display,
display_->wl.display,
1,
2,
debug_context);
@ -6361,7 +6361,7 @@ GHOST_IContext *GHOST_SystemWayland::createOffscreenContext(GHOST_GPUSettings gp
#ifdef WITH_OPENGL_BACKEND
case GHOST_kDrawingContextTypeOpenGL: {
/* Create new off-screen window. */
wl_surface *wl_surface = wl_compositor_create_surface(wl_compositor());
wl_surface *wl_surface = wl_compositor_create_surface(wl_compositor_get());
wl_egl_window *egl_window = wl_surface ? wl_egl_window_create(wl_surface, 1, 1) : nullptr;
for (int minor = 6; minor >= 3; --minor) {
@ -6664,7 +6664,7 @@ GHOST_TSuccess GHOST_SystemWayland::cursor_shape_set(const GHOST_TStandardCursor
if (!cursor->wl.theme) {
/* The cursor wl_surface hasn't entered an output yet. Initialize theme with scale 1. */
cursor->wl.theme = wl_cursor_theme_load(
cursor->theme_name.c_str(), cursor->theme_size, wl_shm());
cursor->theme_name.c_str(), cursor->theme_size, wl_shm_get());
}
wl_cursor *wl_cursor = wl_cursor_theme_get_cursor(cursor->wl.theme, cursor_name);
@ -6880,7 +6880,7 @@ static bool setCursorGrab_use_software_confine(const GHOST_TGrabCursorMode mode,
}
# ifndef USE_GNOME_CONFINE_HACK_ALWAYS_ON
if (win->scale() <= 1) {
if (win->scale_get() <= 1) {
return false;
}
# endif
@ -6963,36 +6963,36 @@ void ghost_wl_surface_tag_cursor_tablet(wl_surface *wl_surface)
* Expose some members via methods.
* \{ */
wl_display *GHOST_SystemWayland::wl_display()
wl_display *GHOST_SystemWayland::wl_display_get()
{
return display_->wl.display;
}
wl_compositor *GHOST_SystemWayland::wl_compositor()
wl_compositor *GHOST_SystemWayland::wl_compositor_get()
{
return display_->wl.compositor;
}
zwp_primary_selection_device_manager_v1 *GHOST_SystemWayland::wp_primary_selection_manager()
zwp_primary_selection_device_manager_v1 *GHOST_SystemWayland::wp_primary_selection_manager_get()
{
return display_->wp.primary_selection_device_manager;
}
xdg_activation_v1 *GHOST_SystemWayland::xdg_activation_manager()
xdg_activation_v1 *GHOST_SystemWayland::xdg_activation_manager_get()
{
return display_->xdg.activation_manager;
}
wp_fractional_scale_manager_v1 *GHOST_SystemWayland::wp_fractional_scale_manager()
wp_fractional_scale_manager_v1 *GHOST_SystemWayland::wp_fractional_scale_manager_get()
{
return display_->wp.fractional_scale_manager;
}
wp_viewporter *GHOST_SystemWayland::wp_viewporter()
wp_viewporter *GHOST_SystemWayland::wp_viewporter_get()
{
return display_->wp.viewporter;
}
zwp_pointer_gestures_v1 *GHOST_SystemWayland::wp_pointer_gestures()
zwp_pointer_gestures_v1 *GHOST_SystemWayland::wp_pointer_gestures_get()
{
return display_->wp.pointer_gestures;
}
@ -7012,38 +7012,38 @@ static const char *ghost_wl_app_id = (
#endif
);
const char *GHOST_SystemWayland::xdg_app_id()
const char *GHOST_SystemWayland::xdg_app_id_get()
{
return ghost_wl_app_id;
}
#ifdef WITH_GHOST_WAYLAND_LIBDECOR
libdecor *GHOST_SystemWayland::libdecor_context()
libdecor *GHOST_SystemWayland::libdecor_context_get()
{
return display_->libdecor->context;
}
#endif /* !WITH_GHOST_WAYLAND_LIBDECOR */
xdg_wm_base *GHOST_SystemWayland::xdg_decor_shell()
xdg_wm_base *GHOST_SystemWayland::xdg_decor_shell_get()
{
return display_->xdg_decor->shell;
}
zxdg_decoration_manager_v1 *GHOST_SystemWayland::xdg_decor_manager()
zxdg_decoration_manager_v1 *GHOST_SystemWayland::xdg_decor_manager_get()
{
return display_->xdg_decor->manager;
}
/* End `xdg_decor`. */
const std::vector<GWL_Output *> &GHOST_SystemWayland::outputs() const
const std::vector<GWL_Output *> &GHOST_SystemWayland::outputs_get() const
{
return display_->outputs;
}
wl_shm *GHOST_SystemWayland::wl_shm() const
wl_shm *GHOST_SystemWayland::wl_shm_get() const
{
return display_->wl.shm;
}
@ -7172,7 +7172,7 @@ void GHOST_SystemWayland::output_scale_update(GWL_Output *output)
if (window_manager) {
for (GHOST_IWindow *iwin : window_manager->getWindows()) {
GHOST_WindowWayland *win = static_cast<GHOST_WindowWayland *>(iwin);
const std::vector<GWL_Output *> &outputs = win->outputs();
const std::vector<GWL_Output *> &outputs = win->outputs_get();
if (!(std::find(outputs.begin(), outputs.end(), output) == outputs.cend())) {
win->outputs_changed_update_scale_tag();
}
@ -7182,8 +7182,10 @@ void GHOST_SystemWayland::output_scale_update(GWL_Output *output)
for (GWL_Seat *seat : display_->seats) {
if (seat->pointer.outputs.count(output)) {
if (seat->cursor.wl.surface_cursor != nullptr) {
update_cursor_scale(
seat->cursor, seat->system->wl_shm(), &seat->pointer, seat->cursor.wl.surface_cursor);
update_cursor_scale(seat->cursor,
seat->system->wl_shm_get(),
&seat->pointer,
seat->cursor.wl.surface_cursor);
}
}
@ -7193,7 +7195,7 @@ void GHOST_SystemWayland::output_scale_update(GWL_Output *output)
zwp_tablet_tool_v2_get_user_data(zwp_tablet_tool_v2));
if (tablet_tool->wl.surface_cursor != nullptr) {
update_cursor_scale(seat->cursor,
seat->system->wl_shm(),
seat->system->wl_shm_get(),
&seat->pointer,
tablet_tool->wl.surface_cursor);
}

View File

@ -217,26 +217,26 @@ class GHOST_SystemWayland : public GHOST_System {
/* WAYLAND direct-data access. */
struct wl_display *wl_display();
struct wl_compositor *wl_compositor();
struct zwp_primary_selection_device_manager_v1 *wp_primary_selection_manager();
struct xdg_activation_v1 *xdg_activation_manager();
struct zwp_pointer_gestures_v1 *wp_pointer_gestures();
struct wp_fractional_scale_manager_v1 *wp_fractional_scale_manager();
struct wp_viewporter *wp_viewporter();
struct wl_display *wl_display_get();
struct wl_compositor *wl_compositor_get();
struct zwp_primary_selection_device_manager_v1 *wp_primary_selection_manager_get();
struct xdg_activation_v1 *xdg_activation_manager_get();
struct zwp_pointer_gestures_v1 *wp_pointer_gestures_get();
struct wp_fractional_scale_manager_v1 *wp_fractional_scale_manager_get();
struct wp_viewporter *wp_viewporter_get();
#ifdef WITH_GHOST_WAYLAND_LIBDECOR
libdecor *libdecor_context();
libdecor *libdecor_context_get();
#endif
struct xdg_wm_base *xdg_decor_shell();
struct zxdg_decoration_manager_v1 *xdg_decor_manager();
struct xdg_wm_base *xdg_decor_shell_get();
struct zxdg_decoration_manager_v1 *xdg_decor_manager_get();
/* End `xdg_decor`. */
const std::vector<GWL_Output *> &outputs() const;
const std::vector<GWL_Output *> &outputs_get() const;
struct wl_shm *wl_shm() const;
struct wl_shm *wl_shm_get() const;
static const char *xdg_app_id();
static const char *xdg_app_id_get();
/* WAYLAND utility functions. */

View File

@ -462,7 +462,7 @@ static bool gwl_window_viewport_set(GWL_Window *win,
if (win->wp.viewport != nullptr) {
return false;
}
wp_viewporter *viewporter = win->ghost_system->wp_viewporter();
wp_viewporter *viewporter = win->ghost_system->wp_viewporter_get();
if (viewporter == nullptr) {
return false;
}
@ -557,7 +557,7 @@ static bool gwl_window_viewport_size_update(GWL_Window *win)
static void gwl_window_activate(GWL_Window *win)
{
GHOST_SystemWayland *system = win->ghost_system;
xdg_activation_v1 *activation_manager = system->xdg_activation_manager();
xdg_activation_v1 *activation_manager = system->xdg_activation_manager_get();
if (UNLIKELY(activation_manager == nullptr)) {
return;
}
@ -571,7 +571,8 @@ static void gwl_window_activate(GWL_Window *win)
xdg_activation_token_v1_add_listener(
win->xdg.activation_token, xdg_activation_listener_get(), win);
xdg_activation_token_v1_set_app_id(win->xdg.activation_token, GHOST_SystemWayland::xdg_app_id());
xdg_activation_token_v1_set_app_id(win->xdg.activation_token,
GHOST_SystemWayland::xdg_app_id_get());
/* The serial of the input device requesting activation. */
{
@ -587,7 +588,7 @@ static void gwl_window_activate(GWL_Window *win)
GHOST_WindowWayland *ghost_window_active = static_cast<GHOST_WindowWayland *>(
system->getWindowManager()->getActiveWindow());
if (ghost_window_active) {
wl_surface *surface = ghost_window_active->wl_surface();
wl_surface *surface = ghost_window_active->wl_surface_get();
if (surface) {
xdg_activation_token_v1_set_surface(win->xdg.activation_token, surface);
}
@ -996,7 +997,7 @@ static void xdg_activation_handle_done(void *data,
}
GHOST_SystemWayland *system = win->ghost_system;
xdg_activation_v1 *activation_manager = system->xdg_activation_manager();
xdg_activation_v1 *activation_manager = system->xdg_activation_manager_get();
xdg_activation_v1_activate(activation_manager, token, win->wl.surface);
xdg_activation_token_v1_destroy(win->xdg.activation_token);
win->xdg.activation_token = nullptr;
@ -1330,7 +1331,7 @@ GHOST_WindowWayland::GHOST_WindowWayland(GHOST_SystemWayland *system,
* avoiding a large window flashing before it's made smaller. */
int fractional_scale = 0;
window_->frame.buffer_scale = outputs_uniform_scale_or_default(
system_->outputs(), 1, &fractional_scale);
system_->outputs_get(), 1, &fractional_scale);
if (fractional_scale / FRACTIONAL_DENOMINATOR != window_->frame.buffer_scale) {
window_->frame.buffer_scale = 1;
@ -1350,7 +1351,7 @@ GHOST_WindowWayland::GHOST_WindowWayland(GHOST_SystemWayland *system,
window_->is_dialog = is_dialog;
/* Window surfaces. */
window_->wl.surface = wl_compositor_create_surface(system_->wl_compositor());
window_->wl.surface = wl_compositor_create_surface(system_->wl_compositor_get());
ghost_wl_surface_tag(window_->wl.surface);
wl_surface_set_buffer_scale(window_->wl.surface, window_->frame.buffer_scale);
@ -1360,7 +1361,8 @@ GHOST_WindowWayland::GHOST_WindowWayland(GHOST_SystemWayland *system,
window_->wl.egl_window = wl_egl_window_create(
window_->wl.surface, int(window_->frame.size[0]), int(window_->frame.size[1]));
wp_fractional_scale_manager_v1 *fractional_scale_manager = system->wp_fractional_scale_manager();
wp_fractional_scale_manager_v1 *fractional_scale_manager =
system->wp_fractional_scale_manager_get();
if (fractional_scale_manager) {
window_->wp.fractional_scale_handle = wp_fractional_scale_manager_v1_get_fractional_scale(
fractional_scale_manager, window_->wl.surface);
@ -1374,7 +1376,7 @@ GHOST_WindowWayland::GHOST_WindowWayland(GHOST_SystemWayland *system,
* when the `window_->frame.buffer_scale` changed. */
const int32_t size_min[2] = {320, 240};
const char *xdg_app_id = GHOST_SystemWayland::xdg_app_id();
const char *xdg_app_id = GHOST_SystemWayland::xdg_app_id_get();
#ifdef WITH_GHOST_WAYLAND_LIBDECOR
if (use_libdecor) {
@ -1383,7 +1385,7 @@ GHOST_WindowWayland::GHOST_WindowWayland(GHOST_SystemWayland *system,
/* create window decorations */
decor.frame = libdecor_decorate(
system_->libdecor_context(), window_->wl.surface, &libdecor_frame_iface, window_);
system_->libdecor_context_get(), window_->wl.surface, &libdecor_frame_iface, window_);
libdecor_frame_map(window_->libdecor->frame);
libdecor_frame_set_min_content_size(decor.frame, UNPACK2(size_min));
@ -1400,15 +1402,16 @@ GHOST_WindowWayland::GHOST_WindowWayland(GHOST_SystemWayland *system,
{
window_->xdg_decor = new WGL_XDG_Decor_Window;
WGL_XDG_Decor_Window &decor = *window_->xdg_decor;
decor.surface = xdg_wm_base_get_xdg_surface(system_->xdg_decor_shell(), window_->wl.surface);
decor.surface = xdg_wm_base_get_xdg_surface(system_->xdg_decor_shell_get(),
window_->wl.surface);
decor.toplevel = xdg_surface_get_toplevel(decor.surface);
xdg_toplevel_set_min_size(decor.toplevel, UNPACK2(size_min));
xdg_toplevel_set_app_id(decor.toplevel, xdg_app_id);
if (system_->xdg_decor_manager()) {
if (system_->xdg_decor_manager_get()) {
decor.toplevel_decor = zxdg_decoration_manager_v1_get_toplevel_decoration(
system_->xdg_decor_manager(), decor.toplevel);
system_->xdg_decor_manager_get(), decor.toplevel);
zxdg_toplevel_decoration_v1_add_listener(
decor.toplevel_decor, &xdg_toplevel_decoration_v1_listener, window_);
zxdg_toplevel_decoration_v1_set_mode(decor.toplevel_decor,
@ -1431,7 +1434,7 @@ GHOST_WindowWayland::GHOST_WindowWayland(GHOST_SystemWayland *system,
/* Call top-level callbacks. */
wl_surface_commit(window_->wl.surface);
wl_display_roundtrip(system_->wl_display());
wl_display_roundtrip(system_->wl_display_get());
#ifdef GHOST_OPENGL_ALPHA
setOpaque();
@ -1441,7 +1444,7 @@ GHOST_WindowWayland::GHOST_WindowWayland(GHOST_SystemWayland *system,
#ifdef WITH_GHOST_WAYLAND_LIBDECOR
if (use_libdecor) {
/* Additional round-trip is needed to ensure `xdg_toplevel` is set. */
wl_display_roundtrip(system_->wl_display());
wl_display_roundtrip(system_->wl_display_get());
/* NOTE: LIBDECOR requires the window to be created & configured before the state can be set.
* Workaround this by using the underlying `xdg_toplevel` */
@ -1493,7 +1496,7 @@ GHOST_TSuccess GHOST_WindowWayland::setWindowCursorGrab(GHOST_TGrabCursorMode mo
bounds,
m_cursorGrabAxis,
window_->wl.surface,
this->scale_params()))
this->scale_params_get()))
{
return GHOST_kSuccess;
}
@ -1647,7 +1650,7 @@ GHOST_WindowWayland::~GHOST_WindowWayland()
/* NOTE(@ideasman42): Flushing will often run the appropriate handlers event
* (#wl_surface_listener.leave in particular) to avoid attempted access to the freed surfaces.
* This is not fool-proof though, hence the call to #window_surface_unref, see: #99078. */
wl_display_flush(system_->wl_display());
wl_display_flush(system_->wl_display_get());
delete window_;
}
@ -1776,7 +1779,7 @@ GHOST_Context *GHOST_WindowWayland::newDrawingContext(GHOST_TDrawingContextType
0,
nullptr,
window_->wl.surface,
system_->wl.display(),
system_->wl_display_get(),
1,
2,
true);
@ -1791,16 +1794,17 @@ GHOST_Context *GHOST_WindowWayland::newDrawingContext(GHOST_TDrawingContextType
#ifdef WITH_OPENGL_BACKEND
case GHOST_kDrawingContextTypeOpenGL: {
for (int minor = 6; minor >= 3; --minor) {
GHOST_Context *context = new GHOST_ContextEGL(system_,
m_wantStereoVisual,
EGLNativeWindowType(window_->wl.egl_window),
EGLNativeDisplayType(system_->wl_display()),
EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT,
4,
minor,
GHOST_OPENGL_EGL_CONTEXT_FLAGS,
GHOST_OPENGL_EGL_RESET_NOTIFICATION_STRATEGY,
EGL_OPENGL_API);
GHOST_Context *context = new GHOST_ContextEGL(
system_,
m_wantStereoVisual,
EGLNativeWindowType(window_->wl.egl_window),
EGLNativeDisplayType(system_->wl_display_get()),
EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT,
4,
minor,
GHOST_OPENGL_EGL_CONTEXT_FLAGS,
GHOST_OPENGL_EGL_RESET_NOTIFICATION_STRATEGY,
EGL_OPENGL_API);
if (context->initializeDrawingContext()) {
return context;
@ -1825,12 +1829,12 @@ GHOST_Context *GHOST_WindowWayland::newDrawingContext(GHOST_TDrawingContextType
* Expose some members via methods.
* \{ */
int GHOST_WindowWayland::scale() const
int GHOST_WindowWayland::scale_get() const
{
return window_->frame.buffer_scale;
}
const GWL_WindowScaleParams &GHOST_WindowWayland::scale_params() const
const GWL_WindowScaleParams &GHOST_WindowWayland::scale_params_get() const
{
/* NOTE(@ideasman42): This could be kept initialized,
* since it's such a small struct it's not so important. */
@ -1857,12 +1861,12 @@ wl_fixed_t GHOST_WindowWayland::wl_fixed_to_window(wl_fixed_t value) const
return value * window_->frame.buffer_scale;
}
wl_surface *GHOST_WindowWayland::wl_surface() const
wl_surface *GHOST_WindowWayland::wl_surface_get() const
{
return window_->wl.surface;
}
const std::vector<GWL_Output *> &GHOST_WindowWayland::outputs()
const std::vector<GWL_Output *> &GHOST_WindowWayland::outputs_get()
{
return window_->outputs;
}
@ -1986,7 +1990,7 @@ bool GHOST_WindowWayland::outputs_changed_update_scale()
int fractional_scale_next = -1;
int fractional_scale_from_output = 0;
int scale_next = outputs_max_scale_or_default(outputs(), 0, &fractional_scale_from_output);
int scale_next = outputs_max_scale_or_default(outputs_get(), 0, &fractional_scale_from_output);
if (UNLIKELY(scale_next == 0)) {
return false;

View File

@ -141,11 +141,11 @@ class GHOST_WindowWayland : public GHOST_Window {
/* WAYLAND direct-data access. */
int scale() const;
const struct GWL_WindowScaleParams &scale_params() const;
int scale_get() const;
const struct GWL_WindowScaleParams &scale_params_get() const;
struct wl_surface *wl_surface() const;
const std::vector<GWL_Output *> &outputs();
struct wl_surface *wl_surface_get() const;
const std::vector<GWL_Output *> &outputs_get();
wl_fixed_t wl_fixed_from_window(wl_fixed_t value) const;
wl_fixed_t wl_fixed_to_window(wl_fixed_t value) const;