pub struct Display<State: 'static> { /* private fields */ }
Expand description
The Wayland display
This struct is the core of your Wayland compositor. You’ll use it in your event loop to drive the
protocol processing of all your clients. All other interactions with the protocol itself are done
through the DisplayHandle
struct, on which the State
type parameter is erased for convenience.
§Usage
The main loop of a Wayland compositor generally needs to wait on several sources of events, using
tools like epoll
(on Linux). The Wayland display can be integrated in this mechanism by getting the
file descriptor as from .backend()
.poll_fd()
and invoking
the dispatch_clients()
method whenever it becomes readable.
To ensure all clients receive the events your compositor sends them, you also need to regularly invoke
the flush_clients()
method, which will write the outgoing buffers into the
sockets.
Implementations§
source§impl<State: 'static> Display<State>
impl<State: 'static> Display<State>
sourcepub fn new() -> Result<Display<State>, InitError>
pub fn new() -> Result<Display<State>, InitError>
Create a new Wayland display
Can only fail if both the server_system
and dlopen
features of wayland-backend
were enabled,
and the libwayland-server.so
library could not be found.
sourcepub fn handle(&self) -> DisplayHandle
pub fn handle(&self) -> DisplayHandle
Retrieve a DisplayHandle
for this Display
.
This is the type with which all of your interactions with the Wayland protocol are done.
sourcepub fn dispatch_clients(&mut self, state: &mut State) -> Result<usize>
pub fn dispatch_clients(&mut self, state: &mut State) -> Result<usize>
Dispatch all requests received from clients to their respective callbacks.
The state
argument is the main state of your compositor, which will be accessible from most of your
callbacks.
sourcepub fn flush_clients(&mut self) -> Result<()>
pub fn flush_clients(&mut self) -> Result<()>
Flush outgoing buffers into their respective sockets.
Trait Implementations§
source§impl<State> AsFd for Display<State>
impl<State> AsFd for Display<State>
source§fn as_fd(&self) -> BorrowedFd<'_>
fn as_fd(&self) -> BorrowedFd<'_>
Provides fd from Backend::poll_fd
for polling.
Auto Trait Implementations§
impl<State> Freeze for Display<State>
impl<State> RefUnwindSafe for Display<State>
impl<State> Send for Display<State>
impl<State> Sync for Display<State>
impl<State> Unpin for Display<State>
impl<State> UnwindSafe for Display<State>
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s.source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.