1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
//! Implementation of various wayland protocols and interfaces.
//!
//! As a compositor writer, you can pick and choose implementations of wayland
//! objects and globals here to assemble your `Object` and `Global`. (See
//! [`runa_core::objects::AnyObject`] and [`runa_core::globals::AnyGlobal`] for
//! more information.) However, some of the objects or globals can have
//! dependencies on other objects or globals, meaning you must use those
//! together.
//!
//! Generally speaking, if you choose to use a global, you must also use the
//! objects it can create. For example, if you use
//! [`Compositor`](crate::globals::Compositor), you must also use
//! [`Surface`](crate::objects::compositor::Surface) and
//! [`Subsurface`](crate::objects::compositor::Subsurface).
//!
//! There are other dependencies, such as
//! [`Pointer`](crate::objects::input::Pointer) and
//! [`Keyboard`](crate::objects::input::Keyboard), which depends on our surface
//! implementation. Pay attention to the documentation of the objects and
//! globals you choose to use.

#![allow(incomplete_features)]
#![feature(type_alias_impl_trait, trait_upcasting)]
#![warn(
    missing_debug_implementations,
    missing_copy_implementations,
    missing_docs,
    rust_2018_idioms,
    single_use_lifetimes
)]

pub mod globals;
pub mod objects;
pub mod renderer_capability;
pub mod shell;
mod time;
pub mod utils;