This update rewrites the winit's Wayland backend using new wayland-rs 0.30 API. This fixes long standing issue with the forward compatibility of the wayland backend, meaning that future updates to the wayland protocol won't break rust code anymore. like it was before when adding new shm/enum variants into the protocol. Fixes #2560. Fixes #2164. Fixes #2128. Fixes #1760. Fixes #725.
34 lines
800 B
Rust
34 lines
800 B
Rust
#![cfg(wayland_platform)]
|
|
|
|
//! Winit's Wayland backend.
|
|
|
|
use sctk::reexports::client::protocol::wl_surface::WlSurface;
|
|
use sctk::reexports::client::Proxy;
|
|
|
|
pub use crate::platform_impl::platform::WindowId;
|
|
pub use event_loop::{EventLoop, EventLoopProxy, EventLoopWindowTarget};
|
|
pub use output::{MonitorHandle, VideoMode};
|
|
pub use window::Window;
|
|
|
|
mod event_loop;
|
|
mod output;
|
|
mod seat;
|
|
mod state;
|
|
mod types;
|
|
mod window;
|
|
|
|
/// Dummy device id, since Wayland doesn't have device events.
|
|
#[derive(Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
|
|
pub struct DeviceId;
|
|
|
|
impl DeviceId {
|
|
pub const unsafe fn dummy() -> Self {
|
|
DeviceId
|
|
}
|
|
}
|
|
|
|
/// Get the WindowId out of the surface.
|
|
#[inline]
|
|
fn make_wid(surface: &WlSurface) -> WindowId {
|
|
WindowId(surface.id().as_ptr() as u64)
|
|
}
|