From cbc4bebf20895f8054545cf0e9b2d5df63a53185 Mon Sep 17 00:00:00 2001 From: Julian Orth Date: Fri, 30 Jan 2026 21:05:33 +0100 Subject: [PATCH 01/11] doc: add docbook -> mdbook conversion tool Signed-off-by: Julian Orth --- docbook-to-mdbook/.gitignore | 1 + docbook-to-mdbook/Cargo.lock | 184 +++++++ docbook-to-mdbook/Cargo.toml | 12 + docbook-to-mdbook/rustfmt.toml | 1 + docbook-to-mdbook/src/main.rs | 935 +++++++++++++++++++++++++++++++++ 5 files changed, 1133 insertions(+) create mode 100644 docbook-to-mdbook/.gitignore create mode 100644 docbook-to-mdbook/Cargo.lock create mode 100644 docbook-to-mdbook/Cargo.toml create mode 100644 docbook-to-mdbook/rustfmt.toml create mode 100644 docbook-to-mdbook/src/main.rs diff --git a/docbook-to-mdbook/.gitignore b/docbook-to-mdbook/.gitignore new file mode 100644 index 00000000..ea8c4bf7 --- /dev/null +++ b/docbook-to-mdbook/.gitignore @@ -0,0 +1 @@ +/target diff --git a/docbook-to-mdbook/Cargo.lock b/docbook-to-mdbook/Cargo.lock new file mode 100644 index 00000000..507516d9 --- /dev/null +++ b/docbook-to-mdbook/Cargo.lock @@ -0,0 +1,184 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "aho-corasick" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" +dependencies = [ + "memchr", +] + +[[package]] +name = "anyhow" +version = "1.0.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61" + +[[package]] +name = "bstr" +version = "1.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63044e1ae8e69f3b5a92c736ca6269b8d12fa7efe39bf34ddb06d102cf0e2cab" +dependencies = [ + "memchr", + "regex-automata", + "serde", +] + +[[package]] +name = "docbook-to-mdbook" +version = "0.1.0" +dependencies = [ + "anyhow", + "bstr", + "isnt", + "quick-xml", + "regex", + "textwrap", +] + +[[package]] +name = "isnt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1697e6b71679da96d5c41bb9035116141baadbf59a60625fd66cb3c9584e7b0" + +[[package]] +name = "memchr" +version = "2.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" + +[[package]] +name = "proc-macro2" +version = "1.0.106" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quick-xml" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2e3bf4aa9d243beeb01a7b3bc30b77cfe2c44e24ec02d751a7104a53c2c49a1" +dependencies = [ + "memchr", +] + +[[package]] +name = "quote" +version = "1.0.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21b2ebcf727b7760c461f091f9f0f539b77b8e87f2fd88131e7f1b433b3cece4" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "regex" +version = "1.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "843bc0191f75f3e22651ae5f1e72939ab2f72a4bc30fa80a066bd66edefc24d4" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5276caf25ac86c8d810222b3dbb938e512c55c6831a10f3e6ed1c93b84041f1c" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58" + +[[package]] +name = "serde" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +dependencies = [ + "serde_core", +] + +[[package]] +name = "serde_core" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "smawk" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7c388c1b5e93756d0c740965c41e8822f866621d41acbdf6336a6a168f8840c" + +[[package]] +name = "syn" +version = "2.0.114" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4d107df263a3013ef9b1879b0df87d706ff80f65a86ea879bd9c31f9b307c2a" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "textwrap" +version = "0.16.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c13547615a44dc9c452a8a534638acdf07120d4b6847c8178705da06306a3057" +dependencies = [ + "smawk", + "unicode-linebreak", + "unicode-width", +] + +[[package]] +name = "unicode-ident" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5" + +[[package]] +name = "unicode-linebreak" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b09c83c3c29d37506a3e260c08c03743a6bb66a9cd432c6934ab501a190571f" + +[[package]] +name = "unicode-width" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254" diff --git a/docbook-to-mdbook/Cargo.toml b/docbook-to-mdbook/Cargo.toml new file mode 100644 index 00000000..508f379d --- /dev/null +++ b/docbook-to-mdbook/Cargo.toml @@ -0,0 +1,12 @@ +[package] +name = "docbook-to-mdbook" +version = "0.1.0" +edition = "2024" + +[dependencies] +quick-xml = "0.39.0" +anyhow = "1.0.100" +bstr = "1.12.1" +textwrap = "0.16.2" +regex = "1.12.2" +isnt = "0.2.0" diff --git a/docbook-to-mdbook/rustfmt.toml b/docbook-to-mdbook/rustfmt.toml new file mode 100644 index 00000000..58b51174 --- /dev/null +++ b/docbook-to-mdbook/rustfmt.toml @@ -0,0 +1 @@ +imports_granularity = "One" diff --git a/docbook-to-mdbook/src/main.rs b/docbook-to-mdbook/src/main.rs new file mode 100644 index 00000000..3ebc5493 --- /dev/null +++ b/docbook-to-mdbook/src/main.rs @@ -0,0 +1,935 @@ +#![expect(clippy::single_char_add_str)] + +use { + anyhow::{Context, bail}, + bstr::ByteSlice, + isnt::std_1::primitive::IsntStrExt, + quick_xml::{ + Reader, + events::{BytesStart, Event}, + }, + regex::Regex, + std::{ + borrow::Cow, + fs::{File, read_dir}, + io::{BufWriter, Write}, + mem, + path::Path, + sync::LazyLock, + }, + textwrap::{Options, WordSeparator, WordSplitter, WrapAlgorithm}, +}; + +const XML_ROOT: &str = "../doc/publican"; +const MD_ROOT: &str = "../doc/book"; + +fn main() -> anyhow::Result<()> { + for file in read_dir(XML_ROOT).context("open publican")? { + let file = file.unwrap(); + let path = file.path(); + let Some(name) = path.file_name() else { + continue; + }; + let name = name.to_str().unwrap(); + if !name.ends_with(".xml") { + continue; + } + match name { + "Architecture.xml" + | "Color.xml" + | "Compositors.xml" + | "Content_Updates.xml" + | "Introduction.xml" + | "Message_XML.xml" + | "Protocol.xml" + | "Foreword.xml" + | "Xwayland.xml" => handle_chapter_file(name) + .with_context(|| format!("handle_chapter_file {}", name))?, + "Book_Info.xml" | "Wayland.xml" | "Author_Group.xml" | "Client.xml" | "Server.xml" => { + continue; + } + _ => bail!("unknown file name {name}"), + } + } + handle_wayland_xml().context("Wayland.xml")?; + Ok(()) +} + +fn handle_wayland_xml() -> anyhow::Result<()> { + let input = Path::new(XML_ROOT).join("Wayland.xml"); + let input = std::fs::read_to_string(input).context("read xml")?; + let mut r = Reader::from_str(&input); + let output = Path::new(MD_ROOT).join("src").join("SUMMARY.md"); + let mut w = BufWriter::new(File::create(output).context("open md")?); + writeln!(w, "# Summary")?; + writeln!(w)?; + writeln!(w, "[Foreword](Foreword.md)")?; + writeln!(w)?; + loop { + let event = r.read_event().context("read event")?; + match event { + Event::Start(c) => match c.name().as_ref() { + b"book" => loop { + let event = r.read_event().context("read event")?; + match event { + Event::Empty(e) if e.name().as_ref() == b"xi:include" => { + let href = e + .try_get_attribute("href") + .context("href")? + .context("href")? + .unescape_value() + .context("href")?; + let name = match &*href { + "Book_Info.xml" => continue, + "Foreword.xml" => continue, + "Introduction.xml" => "Introduction", + "Compositors.xml" => "Types of Compositors", + "Architecture.xml" => "Wayland Architecture", + "Protocol.xml" => "Wayland Protocol and Model of Operation", + "Message_XML.xml" => "Message Definition Language", + "Xwayland.xml" => "X11 Application Support", + "Content_Updates.xml" => "Content Updates", + "Color.xml" => "Color management", + "ProtocolSpec.xml" => continue, + "Client.xml" => continue, + "Server.xml" => continue, + _ => bail!("unexpected link {href}"), + }; + writeln!(w, "- [{name}](./{})", href.replace(".xml", ".md"))?; + } + Event::Text(t) if t.trim().is_empty() => {} + Event::End(e) if e.name().as_ref() == b"book" => break, + _ => bail!("unexpected event {event:?}"), + } + }, + s => bail!("unexpected start {:?}", s.as_bstr()), + }, + Event::Decl(_) => {} + Event::DocType(_) => {} + Event::Text(t) if t.trim().is_empty() => {} + Event::Eof => break, + _ => bail!("unexpected event {event:?}"), + } + } + Ok(()) +} + +fn handle_chapter_file(name: &str) -> anyhow::Result<()> { + let input = Path::new(XML_ROOT).join(name); + let input = std::fs::read_to_string(input).context("read xml")?; + let mut reader = Reader::from_str(&input); + let output = Path::new(MD_ROOT) + .join("src") + .join(name) + .with_extension("md"); + let mut output = BufWriter::new(File::create(output).context("open md")?); + Handler { + w: &mut output, + r: &mut reader, + text: Default::default(), + need_newline: false, + last_line_has_content: false, + have_indent_1: Default::default(), + indent_1: Default::default(), + indent_2: Default::default(), + } + .handle_chapter_file() +} + +struct Handler<'a, 'b, W> { + w: &'a mut W, + r: &'a mut Reader<&'b [u8]>, + text: String, + need_newline: bool, + last_line_has_content: bool, + have_indent_1: bool, + indent_1: String, + indent_2: String, +} + +#[derive(Copy, Clone, Eq, PartialEq)] +enum TitleType { + Chapter, + Section(usize), + Bold, +} + +enum ListType { + Bullet, + Numbered(usize), + Itemized, +} + +static WHITESPACE: LazyLock = LazyLock::new(|| Regex::new(r#"[\n\t ]+"#).unwrap()); + +impl Handler<'_, '_, W> +where + W: Write, +{ + fn handle_chapter_file(&mut self) -> anyhow::Result<()> { + loop { + let event = self.r.read_event().context("read event")?; + match event { + Event::Start(c) => match c.name().as_ref() { + b"preface" | b"chapter" => self.handle_chapter().context("handle_chapter")?, + s => bail!("unexpected start {:?}", s.as_bstr()), + }, + Event::Decl(_) => {} + Event::DocType(_) => {} + Event::Text(t) if t.trim().is_empty() => {} + Event::Eof => break, + _ => bail!("unexpected event {event:?}"), + } + } + Ok(()) + } + + fn handle_chapter(&mut self) -> anyhow::Result<()> { + loop { + let event = self.r.read_event().context("read event")?; + // dbg!(&event); + match event { + Event::Start(s) => match s.name().as_ref() { + b"title" => self + .handle_title(TitleType::Chapter) + .context("handle_title")?, + b"literallayout" | b"para" => self.handle_para(false).context("handle_para")?, + b"section" => self.handle_section(0).context("handle_section")?, + _ => bail!("unexpected start {:?}", s.as_bstr()), + }, + Event::Empty(s) if s.name().as_ref() == b"xi:include" => {} + Event::End(e) if e.name().as_ref() == b"chapter" => break, + Event::End(e) if e.name().as_ref() == b"preface" => break, + Event::Text(t) if t.trim().is_empty() => {} + _ => bail!("unexpected event {event:?}"), + } + } + Ok(()) + } + + fn handle_title(&mut self, ty: TitleType) -> anyhow::Result<()> { + match ty { + TitleType::Chapter => self.text.push_str("# "), + TitleType::Section(depth) => { + self.text.push_str("##"); + for _ in 0..depth { + self.text.push_str("#"); + } + self.text.push_str(" "); + } + TitleType::Bold => self.text.push_str("**"), + } + let mut first = true; + loop { + let event = self.r.read_event().context("read event")?; + // dbg!(&event); + match event { + Event::Text(v) => { + if first { + first = false; + } else { + self.text.push_str(" "); + } + self.text.push_str(v.decode().unwrap().trim()); + } + Event::End(v) if &*v == b"title" => break, + _ => bail!("unexpected event {event:?}"), + } + } + match ty { + TitleType::Chapter => {} + TitleType::Section(_) => {} + TitleType::Bold => self.text.push_str("**"), + } + let text = mem::take(&mut self.text); + self.write_line(&text)?; + self.text = text; + self.text.clear(); + self.need_newline = true; + Ok(()) + } + + fn handle_section(&mut self, depth: usize) -> anyhow::Result<()> { + loop { + let event = self.r.read_event().context("read event")?; + // dbg!(&event); + match event { + Event::Start(s) => match s.name().as_ref() { + b"section" => self.handle_section(depth + 1).context("handle_section")?, + b"title" => self + .handle_title(TitleType::Section(depth)) + .context("handle_title")?, + b"synopsis" => self.handle_para(true).context("handle_synopsis")?, + b"para" => self.handle_para(false).context("handle_para")?, + b"orderedlist" => self.handle_orderedlist().context("handle_orderedlist")?, + b"itemizedlist" => self.handle_itemizedlist().context("handle_itemizedlist")?, + b"figure" => self.handle_figure().context("handle_figure")?, + b"variablelist" => self.handle_variablelist().context("handle_variablelist")?, + b"mediaobject" | b"mediaobjectco" => { + self.handle_mediaobject().context("handle_mediaobject")? + } + _ => bail!("unexpected start {:?}", s.as_bstr()), + }, + Event::End(v) if &*v == b"section" => break, + Event::Text(t) if t.trim().is_empty() => {} + _ => bail!("unexpected event {event:?}"), + } + } + Ok(()) + } + + fn handle_xref(&mut self, e: BytesStart<'_>) -> anyhow::Result<()> { + let url = e + .try_get_attribute("linkend") + .context("linkend")? + .context("linkend")? + .unescape_value() + .context("linkend")?; + let name_buf; + let url_buf; + let (name, url) = if let Some(v) = url.strip_prefix("sect-") + && let Some((sect, v)) = v.split_once("-") + { + match sect { + "Protocol" => match v { + "Wire-Format" => ("Wire Format", "#wire-format"), + "data-sharing-devices" => ("Data devices", "#data-devices"), + _ => bail!("unhandled protocol link {url}"), + }, + "MessageXML" => match v { + "tag-interface" => ("interface", "#interface"), + "tag-arg" => ("arg", "#arg"), + _ => bail!("unhandled message-xml link {url}"), + }, + _ => bail!("unhandled section {url}"), + } + } else if let Some(v) = url.strip_prefix("chap-") { + match v { + "Protocol" => ("Wayland Protocol and Model of Operation", "Protocol.md"), + _ => bail!("unhandled chap {url}"), + } + } else if let Some(v) = url.strip_prefix("protocol-spec-") { + if let Some((interface, v)) = v.split_once("-") + && let Some((ty, message)) = v.split_once("-") + { + name_buf = format!("{interface}.{message}"); + url_buf = + format!("https://wayland.app/protocols/wayland#{interface}:{ty}:{message}"); + } else { + name_buf = v.to_string(); + url_buf = format!("https://wayland.app/protocols/wayland#{v}"); + } + (&*name_buf, &*url_buf) + } else { + bail!("unknown link format {url}"); + }; + self.text.push_str("["); + self.text.push_str(name); + self.text.push_str("]"); + self.text.push_str("("); + self.text.push_str(url); + self.text.push_str(")"); + Ok(()) + } + + fn handle_filename(&mut self) -> anyhow::Result<()> { + let mut text = String::new(); + loop { + let event = self.r.read_event().context("read event")?; + match event { + Event::Text(t) => { + let s = t.decode().unwrap(); + let s = WHITESPACE.replace_all(&s, " "); + text.push_str(&s); + } + Event::End(v) if &*v == b"filename" => break, + _ => bail!("unexpected event {event:?}"), + } + } + self.text.push_str("["); + self.text.push_str(text.trim()); + self.text.push_str("]"); + self.text + .push_str("(https://gitlab.freedesktop.org/wayland/wayland/-/blob/main/"); + self.text.push_str(&text); + self.text.push_str(")"); + Ok(()) + } + + fn handle_link(&mut self, e: BytesStart<'_>) -> anyhow::Result<()> { + let mut text = String::new(); + loop { + let event = self.r.read_event().context("read event")?; + match event { + Event::Text(t) => { + let s = t.decode().unwrap(); + let s = WHITESPACE.replace_all(&s, " "); + text.push_str(&s); + } + Event::End(v) if &*v == b"link" => break, + _ => bail!("unexpected event {event:?}"), + } + } + let url = e + .try_get_attribute("linkend") + .context("linkend")? + .context("linkend")? + .unescape_value() + .context("linkend")?; + let buf; + let url = if let Some(v) = url.strip_prefix("sect-") + && let Some((sect, v)) = v.split_once("-") + { + match sect { + "Compositors" => match v { + "System-Compositor" => "#system-compositor", + "Session-Compositor" => "#session-compositor", + _ => bail!("unhandled compositors link {url}"), + }, + "Library" => "https://gitlab.freedesktop.org/wayland/wayland", + _ => bail!("unhandled section {url}"), + } + } else if let Some(v) = url.strip_prefix("protocol-spec-") { + if let Some((interface, v)) = v.split_once("-") + && let Some((ty, message)) = v.split_once("-") + { + buf = format!("https://wayland.app/protocols/wayland#{interface}:{ty}:{message}"); + } else { + buf = format!("https://wayland.app/protocols/wayland#{v}"); + } + &buf + } else { + bail!("unknown link format {url}"); + }; + self.text.push_str("["); + self.text.push_str(text.trim()); + self.text.push_str("]"); + self.text.push_str("("); + self.text.push_str(url); + self.text.push_str(")"); + Ok(()) + } + + fn handle_ulink(&mut self, e: BytesStart<'_>) -> anyhow::Result<()> { + let mut text = String::new(); + loop { + let event = self.r.read_event().context("read event")?; + match event { + Event::Text(t) => { + let s = t.decode().unwrap(); + let s = WHITESPACE.replace_all(&s, " "); + text.push_str(&s); + } + Event::End(v) if &*v == b"ulink" => break, + _ => bail!("unexpected event {event:?}"), + } + } + let url = e + .try_get_attribute("url") + .context("url")? + .context("url")? + .unescape_value() + .context("url")?; + self.text.push_str("["); + self.text.push_str(text.trim()); + self.text.push_str("]"); + self.text.push_str("("); + self.text.push_str(&url); + self.text.push_str(")"); + Ok(()) + } + + fn handle_code(&mut self) -> anyhow::Result<()> { + self.text.push_str("`"); + loop { + let event = self.r.read_event().context("read event")?; + // dbg!(&event); + match event { + Event::Text(t) => { + let s = t.decode().unwrap(); + let s = WHITESPACE.replace_all(&s, " "); + self.text.push_str(&s); + } + Event::End(v) if &*v == b"code" => break, + Event::End(v) if &*v == b"varname" => break, + Event::End(v) if &*v == b"literal" => break, + Event::End(v) if &*v == b"userinput" => break, + Event::End(v) if &*v == b"type" => break, + Event::End(v) if &*v == b"function" => break, + Event::End(v) if &*v == b"systemitem" => break, + _ => bail!("unexpected event {event:?}"), + } + } + self.text.push_str("`"); + Ok(()) + } + + fn handle_emphasis(&mut self) -> anyhow::Result<()> { + self.text.push_str("_"); + loop { + let event = self.r.read_event().context("read event")?; + // dbg!(&event); + match event { + Event::Text(t) => { + let s = t.decode().unwrap(); + let s = WHITESPACE.replace_all(&s, " "); + self.text.push_str(&s); + } + Event::End(v) if &*v == b"emphasis" => break, + Event::End(v) if &*v == b"firstterm" => break, + _ => bail!("unexpected event {event:?}"), + } + } + self.text.push_str("_"); + Ok(()) + } + + fn handle_newline(&mut self) -> anyhow::Result<()> { + if mem::take(&mut self.need_newline) { + self.write_line("")?; + } + Ok(()) + } + + fn write_line(&mut self, text: &str) -> anyhow::Result<()> { + self.handle_newline()?; + let text = text.trim_end(); + if text.is_empty() { + let indent = self.indent_1.trim_end(); + if indent.is_empty() { + if mem::take(&mut self.last_line_has_content) { + writeln!(self.w)?; + // dbg!(""); + } + } else { + writeln!(self.w, "{}", indent)?; + // dbg!("indent"); + self.last_line_has_content = true; + } + } else { + writeln!(self.w, "{}{text}", self.indent_1)?; + // dbg!(format!("{}{text}", self.indent_1)); + self.last_line_has_content = true; + } + self.clear_indent_1(); + Ok(()) + } + + fn clear_indent_1(&mut self) { + if self.have_indent_1 { + self.have_indent_1 = false; + self.indent_1.clone_from(&self.indent_2); + } + } + + fn push_indent( + &mut self, + indent: &str, + cont: bool, + f: impl FnOnce(&mut Self) -> anyhow::Result<()>, + ) -> anyhow::Result<()> { + self.handle_newline()?; + let len = self.indent_1.len(); + self.have_indent_1 = true; + self.indent_1.push_str(indent); + self.indent_1.push_str(" "); + if cont { + self.indent_2.push_str(indent); + self.indent_2.push_str(" "); + } else { + for _ in self.indent_2.len()..self.indent_1.len() { + self.indent_2.push_str(" "); + } + } + f(self)?; + self.indent_1.truncate(len); + self.indent_2.truncate(len); + Ok(()) + } + + fn flush_text(&mut self, synopsis: bool) -> anyhow::Result<()> { + const MAX_WIDTH: usize = 80; + self.handle_newline()?; + if synopsis { + self.write_line("```")?; + } + let text = mem::take(&mut self.text); + let trimmed = text.trim(); + if trimmed.is_not_empty() { + let options = Options::new(MAX_WIDTH) + .break_words(false) + .wrap_algorithm(WrapAlgorithm::FirstFit) + .word_separator(WordSeparator::AsciiSpace) + .word_splitter(WordSplitter::NoHyphenation) + .initial_indent(&self.indent_1) + .subsequent_indent(&self.indent_2); + let lines = textwrap::wrap(trimmed.trim(), options); + for line in lines { + writeln!(self.w, "{line}")?; + // dbg!(line); + self.last_line_has_content = true; + self.clear_indent_1(); + } + self.text = text; + } + if synopsis { + self.write_line("```")?; + } + self.text.clear(); + Ok(()) + } + + fn handle_admonition(&mut self, name: &str) -> anyhow::Result<()> { + self.push_indent(">", true, |slf| { + slf.write_line(&format!("[!{name}]"))?; + loop { + let event = slf.r.read_event().context("read event")?; + // dbg!(&event); + match event { + Event::Start(v) => match v.name().as_ref() { + b"simpara" | b"para" => slf.handle_para(false).context("handle_para")?, + s => bail!("unexpected start {:?}", s.as_bstr()), + }, + Event::Text(t) if t.trim().is_empty() => {} + Event::End(v) if &*v == b"warning" => break, + Event::End(v) if &*v == b"note" => break, + _ => bail!("unexpected event {event:?}"), + } + } + Ok(()) + }) + } + + fn handle_para(&mut self, synopsis: bool) -> anyhow::Result<()> { + self.handle_text_block(synopsis)?; + self.need_newline = true; + Ok(()) + } + + fn handle_text_block(&mut self, synopsis: bool) -> anyhow::Result<()> { + loop { + let event = self.r.read_event().context("read event")?; + // dbg!(&event); + match event { + Event::Start(v) => match v.name().as_ref() { + b"synopsis" => { + self.flush_text(synopsis)?; + self.need_newline = true; + self.handle_para(true).context("handle_synopsis")? + } + b"emphasis" => self.handle_emphasis().context("handle_emphasis")?, + b"firstterm" => self.handle_emphasis().context("handle_firstterm")?, + b"type" => self.handle_code().context("handle_type")?, + b"code" => self.handle_code().context("handle_code")?, + b"systemitem" => self.handle_code().context("handle_systemitem")?, + b"function" => self.handle_code().context("handle_function")?, + b"filename" => self.handle_filename().context("handle_filename")?, + b"literal" => self.handle_code().context("handle_literal")?, + b"varname" => self.handle_code().context("handle_varname")?, + b"userinput" => self.handle_code().context("handle_userinput")?, + b"ulink" => self.handle_ulink(v).context("handle_ulink")?, + b"link" => self.handle_link(v).context("handle_link")?, + b"itemizedlist" => { + self.flush_text(synopsis)?; + self.need_newline = true; + self.handle_itemizedlist().context("handle_itemizedlist")? + } + b"orderedlist" => { + self.flush_text(synopsis)?; + self.need_newline = true; + self.handle_orderedlist().context("handle_orderedlist")? + } + b"variablelist" => { + self.flush_text(synopsis)?; + self.need_newline = true; + self.handle_variablelist().context("handle_variablelist")? + } + s => bail!("unexpected start {:?}", s.as_bstr()), + }, + Event::Empty(v) => match v.name().as_ref() { + b"xref" => self.handle_xref(v).context("handle_xref")?, + e => bail!("unexpected empty {:?}", e.as_bstr()), + }, + Event::Text(t) => { + let s = t.decode().unwrap(); + let s = WHITESPACE.replace_all(&s, " "); + self.text.push_str(&s); + } + Event::GeneralRef(v) => { + self.text.push_str(&v.decode().unwrap()); + } + Event::End(v) if &*v == b"para" => break, + Event::End(v) if &*v == b"synopsis" => break, + Event::End(v) if &*v == b"simpara" => break, + Event::End(v) if &*v == b"literallayout" => break, + _ => bail!("unexpected event {event:?}"), + } + } + self.flush_text(synopsis)?; + Ok(()) + } + + fn handle_variablelist(&mut self) -> anyhow::Result<()> { + loop { + let event = self.r.read_event().context("read event")?; + // dbg!(&event); + match event { + Event::Start(e) => match e.name().as_ref() { + b"title" => self.handle_title(TitleType::Bold).context("handle_title")?, + b"varlistentry" => self.handle_varlistentry().context("handle_varlistentry")?, + s => bail!("unexpected start {:?}", s.as_bstr()), + }, + Event::End(v) if &*v == b"variablelist" => break, + Event::Text(t) if t.trim().is_empty() => {} + _ => bail!("unexpected event {event:?}"), + } + } + Ok(()) + } + + fn handle_varlistentry(&mut self) -> anyhow::Result<()> { + loop { + let event = self.r.read_event().context("read event")?; + // dbg!(&event); + match event { + Event::Start(e) => match e.name().as_ref() { + b"term" => self.handle_term().context("handle_term")?, + b"listitem" => self + .handle_listitem(ListType::Itemized) + .context("handle_listitem")?, + s => bail!("unexpected start {:?}", s.as_bstr()), + }, + Event::End(v) if &*v == b"varlistentry" => break, + Event::Text(t) if t.trim().is_empty() => {} + _ => bail!("unexpected event {event:?}"), + } + } + Ok(()) + } + + fn handle_term(&mut self) -> anyhow::Result<()> { + loop { + let event = self.r.read_event().context("read event")?; + // dbg!(&event); + match event { + Event::Start(e) => match e.name().as_ref() { + b"literal" => self.handle_code().context("handle_literal")?, + b"synopsis" => self.handle_text_block(false).context("handle_synopsis")?, + s => bail!("unexpected start {:?}", s.as_bstr()), + }, + Event::End(v) if &*v == b"term" => break, + Event::Text(t) => { + let s = t.decode().unwrap(); + let s = WHITESPACE.replace_all(&s, " "); + self.text.push_str(&s); + } + _ => bail!("unexpected event {event:?}"), + } + } + self.flush_text(false)?; + Ok(()) + } + + fn handle_orderedlist(&mut self) -> anyhow::Result<()> { + let mut n = 1..; + loop { + let event = self.r.read_event().context("read event")?; + // dbg!(&event); + match event { + Event::Start(e) => match e.name().as_ref() { + b"listitem" => self + .handle_listitem(ListType::Numbered(n.next().unwrap())) + .context("handle_listitem")?, + s => bail!("unexpected start {:?}", s.as_bstr()), + }, + Event::End(v) if &*v == b"orderedlist" => break, + Event::Text(t) if t.trim().is_empty() => {} + _ => bail!("unexpected event {event:?}"), + } + } + Ok(()) + } + + fn handle_itemizedlist(&mut self) -> anyhow::Result<()> { + loop { + let event = self.r.read_event().context("read event")?; + // dbg!(&event); + match event { + Event::Start(e) => match e.name().as_ref() { + b"listitem" => self + .handle_listitem(ListType::Bullet) + .context("handle_listitem")?, + s => bail!("unexpected start {:?}", s.as_bstr()), + }, + Event::End(v) if &*v == b"itemizedlist" => break, + Event::Text(t) if t.trim().is_empty() => {} + _ => bail!("unexpected event {event:?}"), + } + } + Ok(()) + } + + fn handle_listitem(&mut self, ty: ListType) -> anyhow::Result<()> { + let indent = match ty { + ListType::Bullet => Cow::Borrowed("-"), + ListType::Numbered(n) => Cow::Owned(format!("{n}.")), + ListType::Itemized => Cow::Borrowed(" :"), + }; + self.push_indent(&indent, false, |slf| { + loop { + let event = slf.r.read_event().context("read event")?; + // dbg!(&event); + match event { + Event::Start(e) => match e.name().as_ref() { + b"simpara" | b"para" => slf.handle_para(false).context("handle_para")?, + b"warning" => slf.handle_admonition("WARNING").context("handle_warning")?, + b"note" => slf.handle_admonition("NOTE").context("handle_note")?, + b"variablelist" => { + slf.handle_variablelist().context("handle_variablelist")? + } + s => bail!("unexpected start {:?}", s.as_bstr()), + }, + Event::End(v) if &*v == b"listitem" => break, + Event::Text(t) if t.trim().is_empty() => {} + _ => bail!("unexpected event {event:?}"), + } + } + Ok(()) + }) + } + + fn handle_figure(&mut self) -> anyhow::Result<()> { + loop { + let event = self.r.read_event().context("read event")?; + // dbg!(&event); + match event { + Event::Start(e) => match e.name().as_ref() { + b"title" => self.handle_title(TitleType::Bold).context("handle_title")?, + b"mediaobject" | b"mediaobjectco" => { + self.handle_mediaobject().context("handle_mediaobject")? + } + s => bail!("unexpected start {:?}", s.as_bstr()), + }, + Event::End(v) if &*v == b"figure" => break, + Event::Text(t) if t.trim().is_empty() => {} + _ => bail!("unexpected event {event:?}"), + } + } + Ok(()) + } + + fn handle_mediaobject(&mut self) -> anyhow::Result<()> { + loop { + let event = self.r.read_event().context("read event")?; + // dbg!(&event); + match event { + Event::Start(e) => match e.name().as_ref() { + b"textobject" => self.handle_textobject().context("handle_textobject")?, + b"imageobject" => self.handle_imageobject().context("handle_imageobject")?, + b"imageobjectco" => self + .handle_imageobjectco() + .context("handle_imageobjectco")?, + b"caption" => self.handle_caption().context("handle_caption")?, + s => bail!("unexpected start {:?}", s.as_bstr()), + }, + Event::End(v) if &*v == b"mediaobject" => break, + Event::End(v) if &*v == b"mediaobjectco" => break, + Event::Text(t) if t.trim().is_empty() => {} + _ => bail!("unexpected event {event:?}"), + } + } + Ok(()) + } + + fn handle_textobject(&mut self) -> anyhow::Result<()> { + loop { + let event = self.r.read_event().context("read event")?; + // dbg!(&event); + match event { + Event::End(v) if &*v == b"textobject" => break, + _ => {} + } + } + Ok(()) + } + + fn handle_imageobject(&mut self) -> anyhow::Result<()> { + loop { + let event = self.r.read_event().context("read event")?; + // dbg!(&event); + match event { + Event::Start(e) => match e.name().as_ref() { + b"areaspec" => self.handle_areaspec().context("handle_areaspec")?, + s => bail!("unexpected start {:?}", s.as_bstr()), + }, + Event::Empty(e) => match e.name().as_ref() { + b"imagedata" => self.handle_imagedata(e).context("handle_imagedata")?, + s => bail!("unexpected empty {:?}", s.as_bstr()), + }, + Event::End(v) if &*v == b"imageobject" => break, + Event::Text(t) if t.trim().is_empty() => {} + _ => bail!("unexpected event {event:?}"), + } + } + Ok(()) + } + + fn handle_imageobjectco(&mut self) -> anyhow::Result<()> { + loop { + let event = self.r.read_event().context("read event")?; + // dbg!(&event); + match event { + Event::Start(e) => match e.name().as_ref() { + b"areaspec" => self.handle_areaspec().context("handle_areaspec")?, + b"imageobject" => self.handle_imageobject().context("handle_imageobject")?, + s => bail!("unexpected start {:?}", s.as_bstr()), + }, + Event::End(v) if &*v == b"imageobjectco" => break, + Event::Text(t) if t.trim().is_empty() => {} + _ => bail!("unexpected event {event:?}"), + } + } + Ok(()) + } + + fn handle_areaspec(&mut self) -> anyhow::Result<()> { + loop { + let event = self.r.read_event().context("read event")?; + // dbg!(&event); + match event { + Event::End(v) if &*v == b"areaspec" => break, + _ => {} + } + } + Ok(()) + } + + fn handle_imagedata(&mut self, e: BytesStart<'_>) -> anyhow::Result<()> { + let fileref = e + .try_get_attribute("fileref") + .context("fileref")? + .context("fileref")? + .unescape_value() + .unwrap(); + self.write_line(&format!("![]({fileref})"))?; + self.need_newline = true; + Ok(()) + } + + fn handle_caption(&mut self) -> anyhow::Result<()> { + loop { + let event = self.r.read_event().context("read event")?; + // dbg!(&event); + match event { + Event::Start(e) => match e.name().as_ref() { + b"para" => self.handle_para(false).context("handle_para")?, + s => bail!("unexpected start {:?}", s.as_bstr()), + }, + Event::End(v) if &*v == b"caption" => break, + Event::Text(t) if t.trim().is_empty() => {} + _ => bail!("unexpected event {event:?}"), + } + } + Ok(()) + } +} From b7690b4e4df954cb3e493a92b3e8e83f47cccccb Mon Sep 17 00:00:00 2001 From: Julian Orth Date: Fri, 30 Jan 2026 21:06:25 +0100 Subject: [PATCH 02/11] doc: run docbook -> mdbook conversion tool To reproduce this commit, delete the contents of the src directory and run the tool. Signed-off-by: Julian Orth --- doc/book/.gitignore | 1 + doc/book/book.toml | 9 + doc/book/src/Architecture.md | 215 ++++++++++++++ doc/book/src/Color.md | 100 +++++++ doc/book/src/Compositors.md | 76 +++++ doc/book/src/Content_Updates.md | 214 ++++++++++++++ doc/book/src/Foreword.md | 11 + doc/book/src/Introduction.md | 73 +++++ doc/book/src/Message_XML.md | 493 ++++++++++++++++++++++++++++++++ doc/book/src/Protocol.md | 371 ++++++++++++++++++++++++ doc/book/src/SUMMARY.md | 12 + doc/book/src/Xwayland.md | 120 ++++++++ 12 files changed, 1695 insertions(+) create mode 100644 doc/book/.gitignore create mode 100644 doc/book/book.toml create mode 100644 doc/book/src/Architecture.md create mode 100644 doc/book/src/Color.md create mode 100644 doc/book/src/Compositors.md create mode 100644 doc/book/src/Content_Updates.md create mode 100644 doc/book/src/Foreword.md create mode 100644 doc/book/src/Introduction.md create mode 100644 doc/book/src/Message_XML.md create mode 100644 doc/book/src/Protocol.md create mode 100644 doc/book/src/SUMMARY.md create mode 100644 doc/book/src/Xwayland.md diff --git a/doc/book/.gitignore b/doc/book/.gitignore new file mode 100644 index 00000000..5a0bf031 --- /dev/null +++ b/doc/book/.gitignore @@ -0,0 +1 @@ +/book diff --git a/doc/book/book.toml b/doc/book/book.toml new file mode 100644 index 00000000..48f699ce --- /dev/null +++ b/doc/book/book.toml @@ -0,0 +1,9 @@ +[book] +title = "Wayland" +authors = ["Kristian Høgsberg"] +language = "en" + +[output.html] +git-repository-url = "https://gitlab.freedesktop.org/wayland/wayland" +edit-url-template = "https://gitlab.freedesktop.org/wayland/wayland/-/edit/main/doc/book/{path}" +site-url = "/docs/book/" diff --git a/doc/book/src/Architecture.md b/doc/book/src/Architecture.md new file mode 100644 index 00000000..2ecf38ac --- /dev/null +++ b/doc/book/src/Architecture.md @@ -0,0 +1,215 @@ +# Wayland Architecture + +## X vs. Wayland Architecture + +A good way to understand the Wayland architecture and how it is different from X +is to follow an event from the input device to the point where the change it +affects appears on screen. + +This is where we are now with X: + +**X architecture diagram** + +![](images/x-architecture.png) + +1. The kernel gets an event from an input device and sends it to X through the + evdev input driver. The kernel does all the hard work here by driving the + device and translating the different device specific event protocols to the + linux evdev input event standard. + +2. The X server determines which window the event affects and sends it to the + clients that have selected for the event in question on that window. The X + server doesn't actually know how to do this right, since the window location + on screen is controlled by the compositor and may be transformed in a number + of ways that the X server doesn't understand (scaled down, rotated, wobbling, + etc). + +3. The client looks at the event and decides what to do. Often the UI will have + to change in response to the event - perhaps a check box was clicked or the + pointer entered a button that must be highlighted. Thus the client sends a + rendering request back to the X server. + +4. When the X server receives the rendering request, it sends it to the driver + to let it program the hardware to do the rendering. The X server also + calculates the bounding region of the rendering, and sends that to the + compositor as a damage event. + +5. The damage event tells the compositor that something changed in the window + and that it has to recomposite the part of the screen where that window is + visible. The compositor is responsible for rendering the entire screen + contents based on its scenegraph and the contents of the X windows. Yet, it + has to go through the X server to render this. + +6. The X server receives the rendering requests from the compositor and either + copies the compositor back buffer to the front buffer or does a pageflip. In + the general case, the X server has to do this step so it can account for + overlapping windows, which may require clipping and determine whether or not + it can page flip. However, for a compositor, which is always fullscreen, this + is another unnecessary context switch. + +As suggested above, there are a few problems with this approach. The X server +doesn't have the information to decide which window should receive the event, +nor can it transform the screen coordinates to window-local coordinates. And +even though X has handed responsibility for the final painting of the screen to +the compositing manager, X still controls the front buffer and modesetting. Most +of the complexity that the X server used to handle is now available in the +kernel or self contained libraries (KMS, evdev, mesa, fontconfig, freetype, +cairo, Qt etc). In general, the X server is now just a middle man that +introduces an extra step between applications and the compositor and an extra +step between the compositor and the hardware. + +In Wayland the compositor is the display server. We transfer the control of KMS +and evdev to the compositor. The Wayland protocol lets the compositor send the +input events directly to the clients and lets the client send the damage event +directly to the compositor: + +**Wayland architecture diagram** + +![](images/wayland-architecture.png) + +1. The kernel gets an event and sends it to the compositor. This is similar to + the X case, which is great, since we get to reuse all the input drivers in + the kernel. + +2. The compositor looks through its scenegraph to determine which window should + receive the event. The scenegraph corresponds to what's on screen and the + compositor understands the transformations that it may have applied to the + elements in the scenegraph. Thus, the compositor can pick the right window + and transform the screen coordinates to window-local coordinates, by applying + the inverse transformations. The types of transformation that can be applied + to a window is only restricted to what the compositor can do, as long as it + can compute the inverse transformation for the input events. + +3. As in the X case, when the client receives the event, it updates the UI in + response. But in the Wayland case, the rendering happens in the client, and + the client just sends a request to the compositor to indicate the region that + was updated. + +4. The compositor collects damage requests from its clients and then + recomposites the screen. The compositor can then directly issue an ioctl to + schedule a pageflip with KMS. + +## Wayland Rendering + +One of the details I left out in the above overview is how clients actually +render under Wayland. By removing the X server from the picture we also removed +the mechanism by which X clients typically render. But there's another mechanism +that we're already using with DRI2 under X: direct rendering. With direct +rendering, the client and the server share a video memory buffer. The client +links to a rendering library such as OpenGL that knows how to program the +hardware and renders directly into the buffer. The compositor in turn can take +the buffer and use it as a texture when it composites the desktop. After the +initial setup, the client only needs to tell the compositor which buffer to use +and when and where it has rendered new content into it. + +This leaves an application with two ways to update its window contents: + +1. Render the new content into a new buffer and tell the compositor to use that + instead of the old buffer. The application can allocate a new buffer every + time it needs to update the window contents or it can keep two (or more) + buffers around and cycle between them. The buffer management is entirely + under application control. + +2. Render the new content into the buffer that it previously told the compositor + to to use. While it's possible to just render directly into the buffer shared + with the compositor, this might race with the compositor. What can happen is + that repainting the window contents could be interrupted by the compositor + repainting the desktop. If the application gets interrupted just after + clearing the window but before rendering the contents, the compositor will + texture from a blank buffer. The result is that the application window will + flicker between a blank window or half-rendered content. The traditional way + to avoid this is to render the new content into a back buffer and then copy + from there into the compositor surface. The back buffer can be allocated on + the fly and just big enough to hold the new content, or the application can + keep a buffer around. Again, this is under application control. + +In either case, the application must tell the compositor which area of the +surface holds new contents. When the application renders directly to the shared +buffer, the compositor needs to be noticed that there is new content. But also +when exchanging buffers, the compositor doesn't assume anything changed, and +needs a request from the application before it will repaint the desktop. The +idea that even if an application passes a new buffer to the compositor, only a +small part of the buffer may be different, like a blinking cursor or a spinner. + +## Accelerated GPU Buffer Exchange + +Clients +[exchange](https://docs.kernel.org/userspace-api/dma-buf-alloc-exchange.html) +GPU buffers with the compositor as dma-buf file descriptors, which are universal +handles that are independent of any particular rendering API or memory +allocator. The +[linux-dmabuf-v1](https://gitlab.freedesktop.org/wayland/wayland-protocols/-/blob/main/stable/linux-dmabuf/linux-dmabuf-v1.xml) +protocol is used to turn one or more dma-buf FDs into a +[wl_buffer](https://wayland.app/protocols/wayland#wl_buffer). + +If the client uses the +[Vulkan](https://docs.vulkan.org/spec/latest/chapters/VK_KHR_surface/wsi.html) +or +[EGL](https://registry.khronos.org/EGL/extensions/EXT/EGL_EXT_platform_wayland.txt) +(via +[wayland-egl](https://gitlab.freedesktop.org/wayland/wayland/-/tree/main/egl)) +window-system integration (WSI), this is done transparently by the WSI. + +Clients can alternatively allocate and import dma-bufs themselves using the GBM +library, Vulkan, udmabuf, or dma-buf heaps. + +- Using GBM, the client can allocate a gbm_bo and export one or more dma-buf FDs + from it. + +- Using Vulkan, the client can create a VkDeviceMemory object and use + [VK_EXT_external_memory_dma_buf](https://docs.vulkan.org/refpages/latest/refpages/source/VK_EXT_external_memory_dma_buf.html) + and + [VK_EXT_image_drm_format_modifier](https://docs.vulkan.org/refpages/latest/refpages/source/VK_EXT_image_drm_format_modifier.html) + to export a dma-buf FD from it. + +- [udmabuf](https://lwn.net/Articles/749206/) can be used to create dma-buf FDs + from linear host memory. + +- [Dma-buf heaps](https://docs.kernel.org/userspace-api/dma-buf-heaps.html) can + be used by privileged applications to create dma-buf FDs on embedded devices. + +Compositors use +[VK_EXT_external_memory_dma_buf](https://docs.vulkan.org/refpages/latest/refpages/source/VK_EXT_external_memory_dma_buf.html) +and +[VK_EXT_image_drm_format_modifier](https://docs.vulkan.org/refpages/latest/refpages/source/VK_EXT_image_drm_format_modifier.html) +or +[EGL_EXT_image_dma_buf_import](https://registry.khronos.org/EGL/extensions/EXT/EGL_EXT_image_dma_buf_import.txt) +and +[EGL_EXT_image_dma_buf_import_modifiers](https://registry.khronos.org/EGL/extensions/EXT/EGL_EXT_image_dma_buf_import_modifiers.txt) +to import the dma-bufs provided by the client into their own Vulkan or EGL +renderers. + +Clients do not need to wait for the GPU to finish rendering before submitting +dma-bufs to the compositor. Clients can use the +[linux-drm-syncobj-v1](https://gitlab.freedesktop.org/wayland/wayland-protocols/-/blob/main/staging/linux-drm-syncobj/linux-drm-syncobj-v1.xml) +protocol to exchange DRM synchronization objects with the compositor. These +objects are used to asynchronously signal ownership transfer of buffers from +clients to the compositor and vice versa. The WSIs do this transparently. + +If the linux-drm-syncobj-v1 protocol is not supported by the compositor, clients +and compositors can use the +[DMA_BUF_IOCTL_EXPORT_SYNC_FILE](https://docs.kernel.org/driver-api/dma-buf.html#c.dma_buf_export_sync_file) +and +[DMA_BUF_IOCTL_IMPORT_SYNC_FILE](https://docs.kernel.org/driver-api/dma-buf.html#c.dma_buf_import_sync_file) +ioctls to access and create implicit synchronization barriers. + +## Display Programming + +Compositors enumerate DRM KMS devices using +[udev](https://en.wikipedia.org/wiki/Udev). Udev also notifies compositors of +KMS device and display hotplug events. + +Access to DRM KMS device ioctls is privileged. Since compositors usually run as +unprivileged applications, they typically gain access to a privileged file +descriptor using the +[TakeDevice](https://www.freedesktop.org/software/systemd/man/latest/org.freedesktop.login1.html#Session%20Objects) +method provided by logind. + +Using the file descriptor, compositors use KMS +[ioctls](https://docs.kernel.org/gpu/drm-kms.html) to enumerate the available +displays. + +Compositors use [atomic mode +setting](https://docs.kernel.org/gpu/drm-kms.html#atomic-mode-setting) to change +the buffer shown by the display, to change the display's resolution, to enable +or disable HDR, and so on. diff --git a/doc/book/src/Color.md b/doc/book/src/Color.md new file mode 100644 index 00000000..3787108b --- /dev/null +++ b/doc/book/src/Color.md @@ -0,0 +1,100 @@ +# Color management + +## Overview + +Color management in Wayland considers only displays. All pictures in Wayland are +always display-referred, meaning that the pixel values are intended as-is for +some specific display where they would produce the light emissions +([stimuli](https://cie.co.at/eilvterm/17-23-002)) the picture's author desired. +Wayland does not support displaying "raw" camera or scanner images as they are +not display-referred, nor are they even pictures without complex and subjective +processing. + +Stimuli — the picture itself — are only half of the picture reproduction. The +other half is the environment where a display is viewed. A striking example is +comparing a brightly lit office to a dark movie theater, the stimuli required to +produce a good reading of the picture is greatly different. Therefore +display-referred does not include only the display but the viewing environment +as well. + +Window systems have been very well capable of operating without any explicit +consideration to color management. This is because there used to be the implicit +assumption of the standard display, the sRGB display, which all computer +monitors implemented, more or less. The viewing environment was and still is +accounted by adjusting the display and/or the room to produce a workable +experience. Pictures are authored on a computer system by drawing, painting and +adjusting the picture until it looks right on the author's monitor. This +implicitly builds the standard display and environment assumption into the +picture data. Deviations from the sRGB specification were minor enough that they +often did not matter if not in a professional context like the printing +industry. Displaying video material required some more attention to the details, +because video and television standards differ enough from the sRGB display. What +really made explicit color management a hard requirement for entertainment is +the coming of wide color gamut (WCG) and high dynamic range (HDR) materials and +displays. + +The color management design in Wayland follows the general Wayland design +principles: compositors tell clients what would be the optimal thing to do, +clients tell the compositors what kind of pictures they are actually producing, +and then compositors display those pictures the best they can. + +## Protocol Interfaces + +Color management interfaces in Wayland and divided into two protocols: +[color-management](https://gitlab.freedesktop.org/wayland/wayland-protocols/-/tree/main/staging/color-management?ref_type=heads) +and +[color-representation](https://gitlab.freedesktop.org/wayland/wayland-protocols/-/tree/main/staging/color-representation?ref_type=heads). +They are designed to work together, but they can also be used independently when +the other one is not needed. + +### Color-management + +Color management protocol has two main purposes. First, it puts the +responsibility of color management on the compositor. This means that clients do +not necessarily need to care about color management at all, and can display just +fine by using the traditional standard display assumption even when the actual +display is wildly different. Clients can also choose to target some other +assumed display and let the compositor handle it, or they can explicitly render +for the actual display at hand. Second, when the window system has multiple +different monitors, and a wl_surface happens to span more than one monitor, the +compositor can display the surface content correctly on all spanned monitors +simultaneously, as much as physically possible. + +Color-management protocol concentrates on colorimetry: when you have a pixel +with RGB values, what stimulus do those values represent. The stimulus +definition follows the CIE 1931 two-degree observer model. Some core concepts +here are color primaries, white point, transfer function, and dynamic range. The +viewing environment is represented in an extremely simplified way as the +reference white luminance. The connection between pixel RGB values and stimulus +plus viewing environment is recorded in an _image description_ object. Clients +can create image description objects and tag `wl_surface`s with them, to +indicate what kind of surface content there will be. Clients can also ask what +image description the compositor would prefer to have on the `wl_surface`, and +that preference can change over time, e.g. when the `wl_surface` is moved from +one `wl_output` to another. Following the compositor's preference may provide +advantages in image quality and power consumption. + +Image description objects can come in two flavors: parametric and ICC-based. The +above was written with parametric image descriptions in mind, and they have +first-class support for HDR. ICC-based image descriptions are wrapping an ICC +profile and have no other data. ICC profiles are the standard tool for standard +dynamic range (SDR) display color management. This means the capabilities +between the two flavors differ, and one cannot always be replaced by the other. +Compositor support for each flavor is optional. + +### Color-representation + +Color-representation protocol deals with (potentially sub-sampled) YCbCr-RGB +conversion, quantization range, and the inclusion of alpha in the RGB color +channels, a.k.a. pre-multiplication. There are several different specifications +on how an YCbCr-like (including ICtCp) signal, with chroma sub-sampling or not, +is created from a full-resolution RGB image. Again, a client can tag a +`wl_surface` with color-representation metadata to tell the compositor what kind +of pixel data will be displayed through the wl_surface. + +The main purpose of color-representation is to correctly off-load the YCbCr-RGB +conversion to the compositor, which can then opportunistically off-load it +further to very power-efficient fixed-function circuitry in a display +controller. This can significantly reduce power consumption when watching videos +compared to using a GPU for the same, and on some embedded hardware platforms it +is a hard requirement for processing high resolution video. diff --git a/doc/book/src/Compositors.md b/doc/book/src/Compositors.md new file mode 100644 index 00000000..251be316 --- /dev/null +++ b/doc/book/src/Compositors.md @@ -0,0 +1,76 @@ +# Types of Compositors + +Compositors come in different types, depending on which role they play in the +overall architecture of the OS. For instance, a [system +compositor](#system-compositor) can be used for booting the system, handling +multiple user switching, a possible console terminal emulator and so forth. A +different compositor, a [session compositor](#session-compositor) would provide +the actual desktop environment. There are many ways for different types of +compositors to co-exist. + +In this section, we introduce three types of Wayland compositors relying on +[libwayland-server](https://gitlab.freedesktop.org/wayland/wayland). + +## System Compositor + +A system compositor can run from early boot until shutdown. It effectively +replaces the kernel vt system, and can tie in with the systems graphical boot +setup and multiseat support. + +A system compositor can host different types of session compositors, and let us +switch between multiple sessions (fast user switching, or secure/personal +desktop switching). + +A linux implementation of a system compositor will typically use libudev, egl, +kms, evdev and cairo. + +For fullscreen clients, the system compositor can reprogram the video scanout +address to read directly from the client provided buffer. + +## Session Compositor + +A session compositor is responsible for a single user session. If a system +compositor is present, the session compositor will run nested under the system +compositor. Nesting is feasible because the protocol is asynchronous; roundtrips +would be too expensive when nesting is involved. If no system compositor is +present, a session compositor can run directly on the hardware. + +X applications can continue working under a session compositor by means of a +root-less X server that is activated on demand. + +Possible examples for session compositors include + +- gnome-shell + +- moblin + +- kwin + +- kmscon + +- rdp session + +- Weston with X11 or Wayland backend is a session compositor nested in another + session compositor. + +- fullscreen X session under Wayland + +## Embedding Compositor + +X11 lets clients embed windows from other clients, or lets clients copy pixmap +contents rendered by another client into their window. This is often used for +applets in a panel, browser plugins and similar. Wayland doesn't directly allow +this, but clients can communicate GEM buffer names out-of-band, for example, +using D-Bus, or command line arguments when the panel launches the applet. +Another option is to use a nested Wayland instance. For this, the Wayland server +will have to be a library that the host application links to. The host +application will then pass the Wayland server socket name to the embedded +application, and will need to implement the Wayland compositor interface. The +host application composites the client surfaces as part of it's window, that is, +in the web page or in the panel. The benefit of nesting the Wayland server is +that it provides the requests the embedded client needs to inform the host about +buffer updates and a mechanism for forwarding input events from the host +application. + +An example for this kind of setup is firefox embedding the flash player as a +kind of special-purpose compositor. diff --git a/doc/book/src/Content_Updates.md b/doc/book/src/Content_Updates.md new file mode 100644 index 00000000..91d290f0 --- /dev/null +++ b/doc/book/src/Content_Updates.md @@ -0,0 +1,214 @@ +# Content Updates + +## Overview + +In the Wayland protocol, requests are asynchronous but take effect immediately +when the compositor receives them. However, some requests on surfaces are not +applied immediately but are instead double-buffered to allow atomic changes. +These double-buffered changes are committed through the wl_surface.commit +request, which creates a Content Update. + +Content Updates encapsulate all double-buffered state changes and can be applied +by the compositor. The complexity arises when considering subsurfaces, which can +operate in synchronized mode. When a subsurface is synchronized, its Content +Updates must be applied atomically together with the parent surface's state. +This synchronization can extend through an entire tree of subsurfaces, where +child subsurfaces inherit the synchronized behavior from their parents. + +Historically, Content Updates from synchronized subsurfaces were merged into the +pending state of the parent surface on commit. However, the introduction of +constraints—which can defer the application of Content Updates—necessitated a +more sophisticated model. This led to the implementation of per-surface queues +of Content Updates, with dependencies between Content Updates across different +queues. This queuing model maintains backwards compatibility with the earlier +approach of merging Content Updates into the parent's pending state on commit. + +The core protocol defines the semantics of Content Updates using per-surface +queues, but compositors that do not need to support constraints may implement +the simpler legacy model where synchronized subsurface states are merged +directly into the parent's pending state. + +## Rules + +The core protocol specifies the behavior in wl_subsurface and wl_surface.commit. +The behavior can be summarized by the following rules: + +1. Content Updates (CU) contain all double-buffered state of the surface and + selected state from their direct children. + +2. Surfaces which are effectively synchronized create Synchronized Content + Updates (SCU), otherwise they create Desync Content Updates (DCU). + +3. When a CU is created, it gets a dependency on the previous CU of the same + queues (if it exists). + +4. When a CU is created, it gets a dependency on the last SCU of direct child + surfaces that are not reachable (if they exists). + +5. The CUs and their dependencies form a DAG, where CUs are nodes and + dependencies are edges. + +6. All DCUs starting from the front of the queues until the first SCU or the + back of the queue is reached are candidates. + +7. If the maximal DAG that's reachable from a candidate (candidate DAG) does not + have any constraints, then this DAG can be applied. + +8. A DAG is applied atomically by recursively applying a content update without + dependencies and removing it from the DAG. + +9. Surfaces transition from effectively sync to effectively desync after their + parents. + +10. When a surface transitions to effectively desync, all SCUs in its queue + which are not reachable by a DCU become DCUs. + +## Examples + +These examples should help to build an intuition for how content updates +actually behave. They cover the interesting edge cases, such as subsurfaces with +constraints, and transitioning from a sync subsurface to a desync one. + +In all the examples below, the surface T1 refers to a toplevel surface, SS1 +refers to a sub-surface which is a child of T1, and SS2 refers to a sub-surface +which is a child of SS1. + +**Legend** + +![](images/content-updates/content-update-legend.png) + +**Simple Desynchronized Case** + +![](images/content-updates/simple-desynchronized-state-1.png) + +SS2 is effectively desynchronized and commits. This results in the +desynchronized content update (DCU) _1_. + +![](images/content-updates/simple-desynchronized-state-2.png) + +DCU _1_ is a candidate, and the candidate DAG reachable from DCU _1_ is only DCU +_1_ itself. DCU _1_ and thus the candidate DAG does not have any constraints and +can be applied. + +![](images/content-updates/simple-desynchronized-state-3.png) + +The content updates of the candidate DAG get applied to the surface atomically. + +![](images/content-updates/simple-desynchronized-state-4.png) + +T1 commits a DCU with a _buffer-sync_ constraint. It is a candidate but its DAG +can't be applied because it contains a constraint. + +![](images/content-updates/simple-desynchronized-state-5.png) + +T1 commits another CU (DCU _3_) which is added at the end of the queue, with a +dependency to the previous CU (DCU _2_). Both DCU _2_ and DCU _3_ are +candidates, but both DAGs contain DCU _2_ with a constraint, and can't be +applied. + +![](images/content-updates/simple-desynchronized-state-6.png) + +When the constraint gets cleared, both DAGs can be applied to the surface +atomitcally (either only _2_, or _2_ and _3_). + +**Simple Synchronized Case** + +![](images/content-updates/simple-synchronized-state-1.png) + +SS1 and SS2 are effectively synchronized. SS2 commits SCU _1_. + +![](images/content-updates/simple-synchronized-state-2.png) + +SS1 commits SCU _2_. The direct child surfaces SS2 has the last SCU _1_ in its +queue, which is not reachable. This creates a dependency from SCU _2_ to SCU +_1_. + +![](images/content-updates/simple-synchronized-state-3.png) + +SS1 commits SCU _3_. The direct child surfaces SS2 has the last SCU _1_ in its +queue, which is already reachable by SCU _2_. No dependency to SCU _1_ is +created. A dependency to the previous CU of the same queue (SCU _2_) is created. + +![](images/content-updates/simple-synchronized-state-4.png) + +T1 commit DCU _4_. It is a candidate, its DAG does not contain any constraint +and it can be applied. + +![](images/content-updates/simple-synchronized-state-5.png) + +The DAG gets applied to the surfaces atomically. + +**Complex Synchronized Subsurface Case 1** + +![](images/content-updates/sync-subsurf-case1-1.png) + +Every DCU (_1_ and _6_) contain CUs with constraints in their candidate DAG + +![](images/content-updates/sync-subsurf-case1-2.png) + +Waiting until the _buffer-sync_ constrain on CU _1_ is cleared, the candidate +DAG of CU _1_ does not contain constraints and can be applied + +![](images/content-updates/sync-subsurf-case1-3.png) + +That leaves the candidate DAG of CU _6_ which still contains another CU with a +_buffer-sync_ constrain + +![](images/content-updates/sync-subsurf-case1-4.png) + +Waiting until the _buffer-sync_ constrain on CU _6_ is cleared, the candidate +DAG of _6_ does not contain CUs with constraints and can be applied. + +![](images/content-updates/sync-subsurf-case1-5.png) + +There is no DCU left and no constraint remaining. Nothing more can be applied +without a new CU. + +**Complex Synchronized Subsurface Case 2** + +![](images/content-updates/sync-subsurf-case2-1.png) + +Both DCUs (_1_ and _6_) have a reachable DAG containing CU _1_ with a constraint + +![](images/content-updates/sync-subsurf-case2-2.png) + +Waiting until the _buffer-sync_ constrain on _1_ is cleared, both DAGs contain +no CU with constraints and can be applied in any order + +![](images/content-updates/sync-subsurf-case2-3.png) + +That leaves the same state as in the previous case + +**Synchronized to Desynchronized Subsurface** + +![](images/content-updates/sync-to-desync-subsurf-1.png) + +There is one DCU (_4_) with its reachable DAG that cannot be applied because CU +_4_ contains a constraint + +![](images/content-updates/sync-to-desync-subsurf-2.png) + +Surface _SS1_ transitions from effectively synchronized to effectively +desynchronized. SCU _2_ is reachable by DCU _4_ so nothing changes. + +![](images/content-updates/sync-to-desync-subsurf-3.png) + +Surface _SS1_ provides a new DCU (_5_) but because the CU before (_2_) is a +Synchronized CU, it is not a candidate + +**Synchronized to Desynchronized Transition** + +![](images/content-updates/sync-to-desync-transition-1.png) + +There are four SCUs and all surfaces are effectively synchronized. + +![](images/content-updates/sync-to-desync-transition-2.png) + +Surface _SS1_ transitions to effectively desynchronized and SCU _2_ becomes a +DCU because it is not reachable from a DCU + +![](images/content-updates/sync-to-desync-transition-3.png) + +Surface _SS2_ transitions to effectively desynchronized. SCUs _3_ and _4_ become +DCUs because they are not reachable from a DCU. SCU _1_ does not change because +it is reachable by DCU _2_. diff --git a/doc/book/src/Foreword.md b/doc/book/src/Foreword.md new file mode 100644 index 00000000..48cadf6e --- /dev/null +++ b/doc/book/src/Foreword.md @@ -0,0 +1,11 @@ +# Preface + +This document describes the (i) Wayland architecture, (ii) Wayland model of +operation and (iii) its library API. Also, the Wayland protocol specification is +shown in the Appendix. This document is aimed primarily at Wayland developers +and those looking to program with it; it does not cover application development. + +There have been many contributors to this document and since this is only the +first edition many errors are expected to be found. We appreciate corrections. + +Yours, the Wayland open-source community November 2012 diff --git a/doc/book/src/Introduction.md b/doc/book/src/Introduction.md new file mode 100644 index 00000000..51ef7a01 --- /dev/null +++ b/doc/book/src/Introduction.md @@ -0,0 +1,73 @@ +# Introduction + +## Motivation + +Most Linux and Unix-based systems rely on the X Window System (or simply _X_) as +the low-level protocol for building bitmap graphics interfaces. On these +systems, the X stack has grown to encompass functionality arguably belonging in +client libraries, helper libraries, or the host operating system kernel. Support +for things like PCI resource management, display configuration management, +direct rendering, and memory management has been integrated into the X stack, +imposing limitations like limited support for standalone applications, +duplication in other projects (e.g. the Linux fb layer or the DirectFB project), +and high levels of complexity for systems combining multiple elements (for +example radeon memory map handling between the fb driver and X driver, or VT +switching). + +Moreover, X has grown to incorporate modern features like offscreen rendering +and scene composition, but subject to the limitations of the X architecture. For +example, the X implementation of composition adds additional context switches +and makes things like input redirection difficult. + +![](images/x-architecture.png) + +The diagram above illustrates the central role of the X server and compositor in +operations, and the steps required to get contents on to the screen. + +Over time, X developers came to understand the shortcomings of this approach and +worked to split things up. Over the past several years, a lot of functionality +has moved out of the X server and into client-side libraries or kernel drivers. +One of the first components to move out was font rendering, with freetype and +fontconfig providing an alternative to the core X fonts. Direct rendering OpenGL +as a graphics driver in a client side library went through some iterations, +ending up as DRI2, which abstracted most of the direct rendering buffer +management from client code. Then cairo came along and provided a modern 2D +rendering library independent of X, and compositing managers took over control +of the rendering of the desktop as toolkits like GTK+ and Qt moved away from +using X APIs for rendering. Recently, memory and display management have moved +to the Linux kernel, further reducing the scope of X and its driver stack. The +end result is a highly modular graphics stack. + +## The compositing manager as the display server + +Wayland is a new display server and compositing protocol, and Weston is the +implementation of this protocol which builds on top of all the components above. +We are trying to distill out the functionality in the X server that is still +used by the modern Linux desktop. This turns out to be not a whole lot. +Applications can allocate their own off-screen buffers and render their window +contents directly, using hardware accelerated libraries like libGL, or high +quality software implementations like those found in Cairo. In the end, what’s +needed is a way to present the resulting window surface for display, and a way +to receive and arbitrate input among multiple clients. This is what Wayland +provides, by piecing together the components already in the eco-system in a +slightly different way. + +X will always be relevant, in the same way Fortran compilers and VRML browsers +are, but it’s time that we think about moving it out of the critical path and +provide it as an optional component for legacy applications. + +Overall, the philosophy of Wayland is to provide clients with a way to manage +windows and how their contents are displayed. Rendering is left to clients, and +system wide memory management interfaces are used to pass buffer handles between +clients and the compositing manager. + +![](images/wayland-architecture.png) + +The figure above illustrates how Wayland clients interact with a Wayland server. +Note that window management and composition are handled entirely in the server, +significantly reducing complexity while marginally improving performance through +reduced context switching. The resulting system is easier to build and extend +than a similar X system, because often changes need only be made in one place. +Or in the case of protocol extensions, two (rather than 3 or 4 in the X case +where window management and/or composition handling may also need to be +updated). diff --git a/doc/book/src/Message_XML.md b/doc/book/src/Message_XML.md new file mode 100644 index 00000000..47b37796 --- /dev/null +++ b/doc/book/src/Message_XML.md @@ -0,0 +1,493 @@ +# Message Definition Language + +## Overview + +The fundamentals of the Wayland protocol are explained in [Wayland Protocol and +Model of Operation](Protocol.md). This chapter formally defines the language +used to define Wayland protocols. + +Wayland is an object-oriented protocol. Each object follows exactly one +interface. An interface is a collection of message and enumeration definitions. +A message can be either a request (sent by a client) or an event (sent by a +server). A message can have arguments. All arguments are typed. + +## XML Elements + +### protocol + +``` +protocol ::= (copyright?, description? interface+) +``` + +`protocol` is the root element in a Wayland protocol XML file. Code generation +tools may optionally use the protocol `name` in API symbol names. The XML file +name should be similar to the protocol name. + +The description element should be used to document the intended purpose of the +protocol, give an overview, and give any development stage notices if +applicable. + +The copyright element should be used to indicate the copyrights and the license +of the XML file. + +**Required attributes** + +`name`="`cname`" + : The name of the protocol (a.k.a protocol extension). cname-requirements + + The name should be globally unique. Protocols to be included in + [wayland-protocols](https://gitlab.freedesktop.org/wayland/wayland-protocols) + must follow the naming rules set there. Other protocols should use a unique + prefix for the name, e.g. referring to the owning project's name. + +### copyright + +Parent elements: protocol + +``` +copyright ::= #PCDATA +``` + +Contains free-form, pre-formatted text for copyright and license notices. + +### description + +Parent elements: protocol, interface, request, event, arg, enum, entry + +``` +description ::= #PCDATA +``` + +Contains human-readable documentation for its parent element. May contain +formatted text, including paragraphs and bulleted lists. + +**Optional attributes** + +`summary`="`summary`" + : A short (half a line at most) description of the documented element. + + When a description element is used, it is recommended to not use the + `summary` attribute of the parent element. + +### interface + +Parent elements: protocol + +``` +interface ::= (description?, (request|event|enum)+) +``` + +An interface element contains the requests and events that form the interface. +Enumerations can also be defined with enum elements. These all belong into the +namespace of the interface. Code generation tools may use the interface `name` +in API symbol names. + +Interfaces form an ancestry tree. Aside from +[wl_display](https://wayland.app/protocols/wayland#wl_display), new protocol +objects are always created through an existing protocol object that may be +referred to as _the factory object_. This can happen in one of two ways: the +factory object's interface either defines or does not define the new object's +interface. + +When the factory interface defines the new object's interface, the new object +also inherits the factory object's interface version number. This number defines +the interface version of the new object. The factory object is referred to as +_the parent object_ and the factory interface is referred to as _the parent +interface_. This forms the ancestry tree of interfaces. + +When the factory interface does not define the new object's interface, both the +interface name and the version must be communicated explicitly. The foremost +example of this is +[wl_registry.bind](https://wayland.app/protocols/wayland#wl_registry:request:bind). +In this case the terms "parent" or "ancestor" are not used. Interfaces that are +advertised through +[wl_registry](https://wayland.app/protocols/wayland#wl_registry) are called +_global interfaces_, or globals for short. + +If objects having the interface can cause protocol errors, the protocol error +codes must be defined within the interface with an enum element with its `name` +set to `"error"`. Protocol error codes are always specific to the interface of +the object referred to in +[wl_display.error](https://wayland.app/protocols/wayland#wl_display:event:error). + +The description element should be used to describe the purpose and the general +usage of the interface. + +**Required attributes** + +`name`="`cname`" + : The name of the interface. cname-requirements The name must be unique in the + protocol, and preferably it should also be globally unique to avoid API + conflicts in language bindings of multiple protocols. + + Protocols to be included in + [wayland-protocols](https://gitlab.freedesktop.org/wayland/wayland-protocols) + must follow the interface naming rules set there. Other protocols should use + a unique prefix for the name, e.g. referring to the owning project's name. + +`version`="`V`" + : The interface's latest version number `V` must be an integer greater than + zero. An interface element defines all versions of the interface from 1 to + `V` inclusive. The contents of each interface version are defined in each of + the request, event, enum and entry elements using the attributes `since` and + `deprecated-since`, and in the specification text. + + When an interface is extended, the version number must be incremented on all + the interfaces part of the same interface ancestry tree. The exception to + this rule are interfaces which are forever stuck to version 1, which is + usually caused by having multiple parent interfaces with independent + ancestor global interfaces. + + A protocol object may have any defined version of the interface. The version + of the object is determined at runtime either by inheritance from another + protocol object or explicitly. + + It is possible for a protocol object to have a version higher than defined + by its interface. This may happen when the interface is stuck at version 1 + as per above. It may also happen when a protocol XML file has not been + thoroughly updated as required. In such cases the object shall function as + with the highest defined interface version. + +### request + +Parent elements: interface + +``` +request ::= (description?, arg*) +``` + +Defines a request, a message from a client to a server. Requests are always +associated with a specific protocol object. + +Requests are automatically assigned opcodes in the order they appear inside the +interface element. Therefore the only backwards-compatible way to add requests +to an interface is to add them to the end. Any event elements do not interfere +with request opcode assignments. + +The arg elements declare the request's arguments. There can be 0 to 20 arguments +for a request. The order of arg inside the request element defines the order of +the arguments on the wire. All declared arguments are mandatory, and extra +arguments are not allowed on the wire. + +The description element should be used to document the request. + +**Required attributes** + +`name`="`cname`" + : The name of the request. cname-requirements The name must be unique within + all requests and events in the containing interface. + + Code and language binding generators may use the name in the API they + create. The `name` of the containing interface provides the namespace for + requests. + +**Optional attributes** + +`type`="`destructor`" + : When this attribute is present, the request is a destructor: it shall + destroy the protocol object it is sent on. Protocol IPC libraries may use + this for bookkeeping protocol object lifetimes. + + Libwayland-client uses this information to ignore incoming events for + destroyed protocol objects. Such events may occur due to a natural race + condition between the client destroying a protocol object and the server + sending events before processing the destroy request. + +`since`="`S`" + : `S` must be an integer greater than zero. If `since` is not specified, + `since="1"` is assumed. + + This request was added in interface `version` `S`. The request does not + exist if the protocol object has a bound version smaller than `S`. Attempts + to use it in such a case shall raise the protocol error + `wl_display.error.invalid_method`. + +`deprecated-since`="`D`" + : `D` must be an integer greater than the value of `since`. If + `deprecated-since` is not specified, then the request is not deprecated in + any version of the containing interface. + + This request was deprecated in interface `version` `D` and above, and should + not be sent on protocol objects of such version. This is informational. + Compositors must still be prepared to handle the request unless specified + otherwise. + +### event + +Parent elements: interface + +``` +event ::= (description?, arg*) +``` + +Defines an event, a message from a server to a client. Events are always +associated with a specific protocol object. + +Events are automatically assigned opcodes in the order they appear inside the +interface element. Therefore the only backwards-compatible way to add events to +an interface is to add them to the end. Any request elements do not interfere +with event opcode assignments. + +The arg elements declare the event's arguments. There can be 0 to 20 arguments +for an event. The order of arg inside the event element defines the order of the +arguments on the wire. All declared arguments are mandatory, and extra arguments +are not allowed on the wire. + +The description element should be used to document the event. + +**Required attributes** + +`name`="`cname`" + : The name of the event. cname-requirements The name must be unique within all + requests and events in the containing interface. + + Code and language binding generators may use the name in the API they + create. The `name` of the containing interface provides the namespace for + events. + +**Optional attributes** + +`type`="`destructor`" + : When this attribute is present, the event is a destructor: it shall destroy + the protocol object it is sent on. Protocol IPC libraries may use this for + bookkeeping protocol object lifetimes. + + > [!WARNING] + > Destructor events are an underdeveloped feature in Wayland. They can be + > used only on client-created protocol objects, and it is the protocol + > designer's responsibility to design such a message exchange that race + > conditions cannot occur. The main problem would be a client sending a + > request at the same time as the server is sending a destructor event. The + > server will consider the protocol object to be already invalid or even + > recycled when it proceeds to process the request. This often results in + > protocol errors, but under specific conditions it might also result in + > silently incorrect behavior. + > + > Destructor events should not be used in new protocols. If a destructor + > event is necessary, the simplest way to avoid these problems is to have + > the interface not contain any requests. + +`since`="`S`" + : `S` must be an integer greater than zero. If `since` is not specified, + `since="1"` is assumed. + + This event was added in interface `version` `S`. The event does not exist if + the protocol object has a bound version smaller than `S`. + +`deprecated-since`="`D`" + : `D` must be an integer greater than the value of `since`. If + `deprecated-since` is not specified, then the event is not deprecated in any + version of the containing interface. + + This event was deprecated in interface `version` `D` and above, and should + not be sent on protocol objects of such version. This is informational. + Clients must still be prepared to receive this event unless otherwise + specified. + +### arg + +Parent elements: request, event + +``` +arg ::= description? +``` + +This element declares one argument for the request or the event. + +**Required attributes** + +`name`="`cname`" + : The name of the argument. cname-requirements The name must be unique within + all the arguments of the parent element. + +`type`="`T`" + : The type `T` of the argument datum must be one of: + + `int` + : 32-bit signed integer. + + `uint` + : 32-bit unsigned integer. + + `fixed` + : Signed 24.8-bit fixed-point value. + + `string` + : UTF-8 encoded string value, NUL byte terminated. Interior NUL bytes are + not allowed. + + `array` + : A byte array of arbitrary data. + + `fd` + : A file descriptor. + + The file descriptor must be open and valid on send. It is not possible + to pass a null value. + + `new_id` + : Creates a new protocol object. A request or an event may have at most + one `new_id` argument. + + If `interface` is specified, the new protocol object shall have the + specified interface, and the new object's (interface) version shall be + the version of the object on which the request or event is being sent. + + If `interface` is not specified, the request shall implicitly have two + additional arguments: A `string` for an interface name, and a `uint` for + the new object's version. Leaving the interface unspecified is reserved + for special use, + [wl_registry.bind](https://wayland.app/protocols/wayland#wl_registry:request:bind) + for example. + + > [!NOTE] + > An event argument must always specify the `new_id` `interface`. + + `object` + : Reference to an existing protocol object. + + The attribute `interface` should be specified. Otherwise IPC libraries + cannot enforce the interface, and checking the interface falls on user + code and specification text. + +**Optional attributes** + +`summary`="`summary`" + : A short (half a line at most) description. This attribute should not be used + if a description is used. + +`interface`="`iface`" + : If given, `iface` must be the `name` of some interface, and `type` of this + argument must be either `"object"` or `"new_id"`. This indicates that the + existing or new object must have the interface `iface`. Use for other + argument types is forbidden. + + > [!NOTE] + > If an interface from another protocol is used, then this creates a + > dependency between the protocols. If an application generates code for one + > protocol, then it must also generate code for all dependencies. Therefore + > this would not be a backwards compatible change. + +`allow-null`="`true`" | "`false`" + : Whether the argument value can be null on send. Defaults to `"false"`, + meaning it is illegal to send a null value. Can be used only when `type` is + `"string"` or `"object"`. + + > [!NOTE] + > Even though this attribute can be used to forbid a compositor from sending + > a null object as an event argument, an IPC library implementation may not + > protect the client from receiving a null object. This can happen with + > libwayland-client when the client has destroyed the protocol object before + > dispatching an event that referred to it in an argument. + +`enum`="`enum-cname-suffix`" + : If specified, indicates that the argument value should come from the enum + named `enum-cname-suffix`. If the enumeration is a bitfield, then `type` + must be `"uint"`. Otherwise `type` must be either `"uint"` or `"int"`. + + The name `enum-cname-suffix` refers to an enum in the same interface by + default. If it is necessary to refer to an enumeration from another + interface, the interface name can be given with a period: + + ``` + `enum`="`iface`.`enum-cname-suffix`" + ``` + + > [!NOTE] + > This attribute alone does not automatically restrict the legal values for + > this argument. If values from outside of the enumeration need to be + > forbidden, that must be specified explicitly in the documentation. + > + > A common design pattern is to have the server advertise the supported + > enumeration or bit values with events and explicitly forbid clients from + > using any other values in requests. This also requires a protocol error + > code to be specified with the error enum to be raised if a client uses an + > illegal value, see [interface](#interface). + +### enum + +Parent elements: protocol + +``` +enum ::= (description?, entry*) +``` + +This tag defines an enumeration of integer values. Enumerations are merely a +syntactic construct to give names to arbitrary integer constants. Each constant +is listed as an entry with its name. There are two types of enumerations: +regular enumerations and bitfields. + +Regular enumerations do not use `bitfield` attribute, or they set it to +`"false"`. The set of pre-defined values that belong to a regular enumeration is +exactly the set of values listed as entry elements after the protocol object +version is taken into account. See the entry attributes `since` and +`deprecated-since`. + +Bitfields set `bitfield` to `"true"`. The set of values that belong to a +bitfield enumeration are all the values that can be formed by the bitwise-or +operator from the set of values listed as entry elements like in the regular +enumeration. Usually also zero is implicitly included. + +All the values in a regular enumeration must be either signed or unsigned 32-bit +integers. All the values in a bitfield enumeration must be unsigned 32-bit +integers. + +**Required attributes** + +`name`="`cname-suffix`" + : The name of the enumeration. cname-suffix-requirements The name must be + unique within all enumerations in the containing interface. The name is used + as the namespace for all the contained entry elements. + +**Optional attributes** + +`since`="`S`" + : `S` must be an integer greater than zero. If `since` is not specified, + `since="1"` is assumed. + + This enumeration was added in interface `version` `S`. The enumeration does + not exist if the protocol object has a bound version smaller than `S`. + +`bitfield`="`true`" | "`false`" + : Specifies if this enumeration is a bitfield. Defaults to `"false"`. + +### entry + +Parent elements: enum + +``` +entry ::= description? +``` + +Defines a name for an integer constant and makes it part of the set of values of +the containing enumeration. + +**Required attributes** + +`name`="`cname-suffix`" + : The name of a value in an enumeration. cname-suffix-requirements The name + must be unique within all entry elements in the containing enum. + +`value`="`V`" + : An integer value. The value can be given in decimal, hexadecimal, or octal + representation. + +**Optional attributes** + +`summary`="`summary`" + : A short (half a line at most) description. This attribute should not be used + if a description is used. + +`since`="`S`" + : `S` must be an integer greater than zero. If `since` is not specified, + `since="1"` is assumed. + + This value was added in interface `version` `S`. + +`deprecated-since`="`D`" + : `D` must be an integer greater than the value of `since`. If + `deprecated-since` is not specified, then the value is not deprecated in any + version of the containing interface. + + This value was removed in interface `version` `D`. This does not make the + value automatically illegal to use, see [arg](#arg) attribute `enum`. diff --git a/doc/book/src/Protocol.md b/doc/book/src/Protocol.md new file mode 100644 index 00000000..f195707e --- /dev/null +++ b/doc/book/src/Protocol.md @@ -0,0 +1,371 @@ +# Wayland Protocol and Model of Operation + +## Basic Principles + +The Wayland protocol is an asynchronous object oriented protocol. All requests +are method invocations on some object. The requests include an object ID that +uniquely identifies an object on the server. Each object implements an interface +and the requests include an opcode that identifies which method in the interface +to invoke. + +The protocol is message-based. A message sent by a client to the server is +called request. A message from the server to a client is called event. A message +has a number of arguments, each of which has a certain type (see [Wire +Format](#wire-format) for a list of argument types). + +Additionally, the protocol can specify `enum`s which associate names to specific +numeric enumeration values. These are primarily just descriptive in nature: at +the wire format level enums are just integers. But they also serve a secondary +purpose to enhance type safety or otherwise add context for use in language +bindings or other such code. This latter usage is only supported so long as code +written before these attributes were introduced still works after; in other +words, adding an enum should not break API, otherwise it puts backwards +compatibility at risk. + +`enum`s can be defined as just a set of integers, or as bitfields. This is +specified via the `bitfield` boolean attribute in the `enum` definition. If this +attribute is true, the enum is intended to be accessed primarily using bitwise +operations, for example when arbitrarily many choices of the enum can be ORed +together; if it is false, or the attribute is omitted, then the enum arguments +are a just a sequence of numerical values. + +The `enum` attribute can be used on either `uint` or `int` arguments, however if +the `enum` is defined as a `bitfield`, it can only be used on `uint` args. + +The server sends back events to the client, each event is emitted from an +object. Events can be error conditions. The event includes the object ID and the +event opcode, from which the client can determine the type of event. Events are +generated both in response to requests (in which case the request and the event +constitutes a round trip) or spontaneously when the server state changes. + +- State is broadcast on connect, events are sent out when state changes. Clients + must listen for these changes and cache the state. There is no need (or + mechanism) to query server state. + +- The server will broadcast the presence of a number of global objects, which in + turn will broadcast their current state. + +## Code Generation + +The interfaces, requests and events are defined in +[protocol/wayland.xml](https://gitlab.freedesktop.org/wayland/wayland/-/blob/main/protocol/wayland.xml). +This xml is used to generate the function prototypes that can be used by clients +and compositors. + +The protocol entry points are generated as inline functions which just wrap the +`wl_proxy_*` functions. The inline functions aren't part of the library ABI and +language bindings should generate their own stubs for the protocol entry points +from the xml. + +## Wire Format + +The protocol is sent over a UNIX domain stream socket, where the endpoint +usually is named `wayland-0` (although it can be changed via _WAYLAND_DISPLAY_ +in the environment). Beginning in Wayland 1.15, implementations can optionally +support server socket endpoints located at arbitrary locations in the filesystem +by setting _WAYLAND_DISPLAY_ to the absolute path at which the server endpoint +listens. The socket may also be provided through file descriptor inheritance, in +which case _WAYLAND_SOCKET_ is set. + +Every message is structured as 32-bit words; values are represented in the +host's byte-order. The message header has 2 words in it: + +- The first word is the sender's object ID (32-bit). + +- The second has 2 parts of 16-bit. The upper 16-bits are the message size in + bytes, starting at the header (i.e. it has a minimum value of 8).The lower is + the request/event opcode. + +The payload describes the request/event arguments. Every argument is always +aligned to 32-bits. Where padding is required, the value of padding bytes is +undefined. There is no prefix that describes the type, but it is inferred +implicitly from the xml specification. + +The representation of argument types are as follows: + +int +uint + : The value is the 32-bit value of the signed/unsigned int. + +fixed + : Signed 24.8 decimal numbers. It is a signed decimal type which offers a sign + bit, 23 bits of integer precision and 8 bits of decimal precision. This is + exposed as an opaque struct with conversion helpers to and from double and + int on the C API side. + +string + : Starts with an unsigned 32-bit length (including null terminator), followed + by the UTF-8 encoded string contents, including terminating null byte, then + padding to a 32-bit boundary. A null value is represented with a length of + 0. Interior null bytes are not permitted. + +object + : 32-bit object ID. A null value is represented with an ID of 0. + +new_id + : The 32-bit object ID. Generally, the interface used for the new object is + inferred from the xml, but in the case where it's not specified, a new_id is + preceded by a `string` specifying the interface name, and a `uint` + specifying the version. + +array + : Starts with 32-bit array size in bytes, followed by the array contents + verbatim, and finally padding to a 32-bit boundary. + +fd + : The file descriptor is not stored in the message buffer, but in the + ancillary data of the UNIX domain socket message (msg_control). + +The protocol does not specify the exact position of the ancillary data in the +stream, except that the order of file descriptors is the same as the order of +messages and `fd` arguments within messages on the wire. + +In particular, it means that any byte of the stream, even the message header, +may carry the ancillary data with file descriptors. + +Clients and compositors should queue incoming data until they have whole +messages to process, as file descriptors may arrive earlier or later than the +corresponding data bytes. + +## Versioning + +Every interface is versioned and every protocol object implements a particular +version of its interface. For global objects, the maximum version supported by +the server is advertised with the global and the actual version of the created +protocol object is determined by the version argument passed to +wl_registry.bind(). For objects that are not globals, their version is inferred +from the object that created them. + +In order to keep things sane, this has a few implications for interface +versions: + +- The object creation hierarchy must be a tree. Otherwise, inferring object + versions from the parent object becomes a much more difficult to properly + track. + +- When the version of an interface increases, so does the version of its parent + (recursively until you get to a global interface) + +- A global interface's version number acts like a counter for all of its child + interfaces. Whenever a child interface gets modified, the global parent's + interface version number also increases (see above). The child interface then + takes on the same version number as the new version of its parent global + interface. + +To illustrate the above, consider the wl_compositor interface. It has two +children, wl_surface and wl_region. As of wayland version 1.2, wl_surface and +wl_compositor are both at version 3. If something is added to the wl_region +interface, both wl_region and wl_compositor will get bumpped to version 4. If, +afterwards, wl_surface is changed, both wl_compositor and wl_surface will be at +version 5. In this way the global interface version is used as a sort of +"counter" for all of its child interfaces. This makes it very simple to know the +version of the child given the version of its parent. The child is at the +highest possible interface version that is less than or equal to its parent's +version. + +It is worth noting a particular exception to the above versioning scheme. The +wl_display (and, by extension, wl_registry) interface cannot change because it +is the core protocol object and its version is never advertised nor is there a +mechanism to request a different version. + +## Connect Time + +There is no fixed connection setup information, the server emits multiple events +at connect time, to indicate the presence and properties of global objects: +outputs, compositor, input devices. + +## Security and Authentication + +- mostly about access to underlying buffers, need new drm auth mechanism (the + grant-to ioctl idea), need to check the cmd stream? + +- getting the server socket depends on the compositor type, could be a system + wide name, through fd passing on the session dbus. or the client is forked by + the compositor and the fd is already opened. + +## Creating Objects + +Each object has a unique ID. The IDs are allocated by the entity creating the +object (either client or server). IDs allocated by the client are in the range +[1, 0xfeffffff] while IDs allocated by the server are in the range [0xff000000, +0xffffffff]. The 0 ID is reserved to represent a null or non-existent object. +For efficiency purposes, the IDs are densely packed in the sense that the ID N +will not be used until N-1 has been used. This ordering is not merely a +guideline, but a strict requirement, and there are implementations of the +protocol that rigorously enforce this rule, including the ubiquitous libwayland. + +## Compositor + +The compositor is a global object, advertised at connect time. + +See [wl_compositor](https://wayland.app/protocols/wayland#wl_compositor) for the +protocol description. + +## Surfaces + +A surface manages a rectangular grid of pixels that clients create for +displaying their content to the screen. Clients don't know the global position +of their surfaces, and cannot access other clients' surfaces. + +Once the client has finished writing pixels, it 'commits' the buffer; this +permits the compositor to access the buffer and read the pixels. When the +compositor is finished, it releases the buffer back to the client. + +See [wl_surface](https://wayland.app/protocols/wayland#wl_surface) for the +protocol description. + +## Input + +A seat represents a group of input devices including mice, keyboards and +touchscreens. It has a keyboard and pointer focus. Seats are global objects. +Pointer events are delivered in surface-local coordinates. + +The compositor maintains an implicit grab when a button is pressed, to ensure +that the corresponding button release event gets delivered to the same surface. +But there is no way for clients to take an explicit grab. Instead, surfaces can +be mapped as 'popup', which combines transient window semantics with a pointer +grab. + +To avoid race conditions, input events that are likely to trigger further +requests (such as button presses, key events, pointer motions) carry serial +numbers, and requests such as wl_surface.set_popup require that the serial +number of the triggering event is specified. The server maintains a +monotonically increasing counter for these serial numbers. + +Input events also carry timestamps with millisecond granularity. Their base is +undefined, so they can't be compared against system time (as obtained with +clock_gettime or gettimeofday). They can be compared with each other though, and +for instance be used to identify sequences of button presses as double or triple +clicks. + +See [wl_seat](https://wayland.app/protocols/wayland#wl_seat) for the protocol +description. + +Talk about: + +- keyboard map, change events + +- xkb on Wayland + +- multi pointer Wayland + +A surface can change the pointer image when the surface is the pointer focus of +the input device. Wayland doesn't automatically change the pointer image when a +pointer enters a surface, but expects the application to set the cursor it wants +in response to the pointer focus and motion events. The rationale is that a +client has to manage changing pointer images for UI elements within the surface +in response to motion events anyway, so we'll make that the only mechanism for +setting or changing the pointer image. If the server receives a request to set +the pointer image after the surface loses pointer focus, the request is ignored. +To the client this will look like it successfully set the pointer image. + +Setting the pointer image to NULL causes the cursor to be hidden. + +The compositor will revert the pointer image back to a default image when no +surface has the pointer focus for that device. + +What if the pointer moves from one window which has set a special pointer image +to a surface that doesn't set an image in response to the motion event? The new +surface will be stuck with the special pointer image. We can't just revert the +pointer image on leaving a surface, since if we immediately enter a surface that +sets a different image, the image will flicker. If a client does not set a +pointer image when the pointer enters a surface, the pointer stays with the +image set by the last surface that changed it, possibly even hidden. Such a +client is likely just broken. + +## Output + +An output is a global object, advertised at connect time or as it comes and +goes. + +See [wl_output](https://wayland.app/protocols/wayland#wl_output) for the +protocol description. + +- laid out in a big (compositor) coordinate system + +- basically xrandr over Wayland + +- geometry needs position in compositor coordinate system + +- events to advertise available modes, requests to move and change modes + +## Data sharing between clients + +The Wayland protocol provides clients a mechanism for sharing data that allows +the implementation of copy-paste and drag-and-drop. The client providing the +data creates a `wl_data_source` object and the clients obtaining the data will +see it as `wl_data_offer` object. This interface allows the clients to agree on +a mutually supported mime type and transfer the data via a file descriptor that +is passed through the protocol. + +The next section explains the negotiation between data source and data offer +objects. [Data devices](#data-devices) explains how these objects are created +and passed to different clients using the `wl_data_device` interface that +implements copy-paste and drag-and-drop support. + +See [wl_data_offer](https://wayland.app/protocols/wayland#wl_data_offer), +[wl_data_source](https://wayland.app/protocols/wayland#wl_data_source), +[wl_data_device](https://wayland.app/protocols/wayland#wl_data_device) and +[wl_data_device_manager](https://wayland.app/protocols/wayland#wl_data_device_manager) +for protocol descriptions. + +MIME is defined in RFC's 2045-2049. A [registry of MIME +types](https://www.iana.org/assignments/media-types/media-types.xhtml) is +maintained by the Internet Assigned Numbers Authority (IANA). + +### Data negotiation + +A client providing data to other clients will create a `wl_data_source` object +and advertise the mime types for the formats it supports for that data through +the `wl_data_source.offer` request. On the receiving end, the data offer object +will generate one `wl_data_offer.offer` event for each supported mime type. + +The actual data transfer happens when the receiving client sends a +`wl_data_offer.receive` request. This request takes a mime type and a file +descriptor as arguments. This request will generate a `wl_data_source.send` +event on the sending client with the same arguments, and the latter client is +expected to write its data to the given file descriptor using the chosen mime +type. + +### Data devices + +Data devices glue data sources and offers together. A data device is associated +with a `wl_seat` and is obtained by the clients using the +`wl_data_device_manager` factory object, which is also responsible for creating +data sources. + +Clients are informed of new data offers through the `wl_data_device.data_offer` +event. After this event is generated the data offer will advertise the available +mime types. New data offers are introduced prior to their use for copy-paste or +drag-and-drop. + +#### Selection + +Each data device has a selection data source. Clients create a data source +object using the device manager and may set it as the current selection for a +given data device. Whenever the current selection changes, the client with +keyboard focus receives a `wl_data_device.selection` event. This event is also +generated on a client immediately before it receives keyboard focus. + +The data offer is introduced with `wl_data_device.data_offer` event before the +selection event. + +#### Drag and Drop + +A drag-and-drop operation is started using the `wl_data_device.start_drag` +request. This requests causes a pointer grab that will generate enter, motion +and leave events on the data device. A data source is supplied as argument to +start_drag, and data offers associated with it are supplied to clients surfaces +under the pointer in the `wl_data_device.enter` event. The data offer is +introduced to the client prior to the enter event with the +`wl_data_device.data_offer` event. + +Clients are expected to provide feedback to the data sending client by calling +the `wl_data_offer.accept` request with a mime type it accepts. If none of the +advertised mime types is supported by the receiving client, it should supply +NULL to the accept request. The accept request causes the sending client to +receive a `wl_data_source.target` event with the chosen mime type. + +When the drag ends, the receiving client receives a `wl_data_device.drop` event +at which it is expected to transfer the data using the `wl_data_offer.receive` +request. diff --git a/doc/book/src/SUMMARY.md b/doc/book/src/SUMMARY.md new file mode 100644 index 00000000..713b4e02 --- /dev/null +++ b/doc/book/src/SUMMARY.md @@ -0,0 +1,12 @@ +# Summary + +[Foreword](Foreword.md) + +- [Introduction](./Introduction.md) +- [Types of Compositors](./Compositors.md) +- [Wayland Architecture](./Architecture.md) +- [Wayland Protocol and Model of Operation](./Protocol.md) +- [Message Definition Language](./Message_XML.md) +- [X11 Application Support](./Xwayland.md) +- [Content Updates](./Content_Updates.md) +- [Color management](./Color.md) diff --git a/doc/book/src/Xwayland.md b/doc/book/src/Xwayland.md new file mode 100644 index 00000000..dd7f9f77 --- /dev/null +++ b/doc/book/src/Xwayland.md @@ -0,0 +1,120 @@ +# X11 Application Support + +## Introduction + +Being able to run existing X11 applications is crucial for the adoption of +Wayland, especially on desktops, as there will always be X11 applications that +have not been or cannot be converted into Wayland applications, and throwing +them all away would be prohibitive. Therefore a Wayland compositor often needs +to support running X11 applications. + +X11 and Wayland are different enough that there is no "simple" way to translate +between them. Most of X11 is uninteresting to a Wayland compositor. That, +combined with the gigantic implementation effort needed to support X11, makes it +intractable to just write X11 support directly in a Wayland compositor. The +implementation would be nothing short of a real X11 server. + +Therefore, Wayland compositors should use Xwayland, the X11 server that lives in +the Xorg server source code repository and shares most of the implementation +with the Xorg server. Xwayland is a complete X11 server, just like Xorg is, but +instead of driving the displays and opening input devices, it acts as a Wayland +client. The rest of this chapter talks about how Xwayland works. + +For integration and architecture reasons, while Xwayland is a Wayland client of +the Wayland compositor, the Wayland compositor is an X11 client of Xwayland. +This circular dependency requires special care from the Wayland compositor. + +## Two Modes for Foreign Windows + +In general, windows from a foreign window system can be presented in one of two +ways: rootless and rootful (not rootless). + +In rootful mode, the foreign window system as a whole is represented as a window +(or more) of its own. You have a native window, inside which all the foreign +windows are. The advantage of this approach in Xwayland's case is that you can +run your favourite X11 window manager to manage your X11 applications. The +disadvantage is that the foreign windows do not integrate with the native +desktop. Therefore this mode is not usually used. + +In rootless mode, each foreign window is a first-class resident among the native +windows. Foreign windows are not confined inside a native window but act as if +they were native windows. The advantage is that one can freely stack and mix +native and foreign windows, which is not possible in rootful mode. The +disadvantage is that this mode is harder to implement and fundamental +differences in window systems may prevent some things from working. With +rootless Xwayland, the Wayland compositor must take the role as the X11 window +manager, and one cannot use any other X11 window manager in its place. + +This chapter concentrates on the rootless mode, and ignores the rootful mode. + +## Architecture + +A Wayland compositor usually takes care of launching Xwayland. Xwayland works in +cooperation with a Wayland compositor as follows: + +**Xwayland architecture diagram** + +![](images/xwayland-architecture.png) + +An X11 application connects to Xwayland just like it would connect to any X +server. Xwayland processes all the X11 requests. On the other end, Xwayland is a +Wayland client that connects to the Wayland compositor. + +The X11 window manager (XWM) is an integral part of the Wayland compositor. XWM +uses the usual X11 window management protocol to manage all X11 windows in +Xwayland. Most importantly, XWM acts as a bridge between Xwayland window state +and the Wayland compositor's window manager (WWM). This way WWM can manage all +windows, both native Wayland and X11 (Xwayland) windows. This is very important +for a coherent user experience. + +Since Xwayland uses Wayland for input and output, it does not have any use for +the device drivers that Xorg uses. None of the xf86-video-* or xf86-input-* +modules are used. There also is no configuration file for the Xwayland server. +For optional hardware accelerated rendering, Xwayland uses GLAMOR. + +A Wayland compositor usually spawns only one Xwayland instance. This is because +many X11 applications assume they can communicate with other X11 applications +through the X server, and this requires a shared X server instance. This also +means that Xwayland does not protect nor isolate X11 clients from each other, +unless the Wayland compositor specifically chooses to break the X11 client +intercommunications by spawning application specific Xwayland instances. X11 +clients are naturally isolated from Wayland clients. + +Xwayland compatibility compared to a native X server will probably never reach +100%. Desktop environment (DE) components, specifically X11 window managers, are +practically never supported. An X11 window manager would not know about native +Wayland windows, so it could manage only X11 windows. On the other hand, there +must be an XWM that reserves the exclusive window manager role so that the +Wayland compositor could show the X11 windows appropriately. For other DE +components, like pagers and panels, adding the necessary interfaces to support +them in WWM through XWM is often considered not worthwhile. + +## X Window Manager (XWM) + +From the X11 point of view, the X window manager (XWM) living inside a Wayland +compositor is just like any other window manager. The difference is mostly in +which process it resides in, and the few extra conventions in the X11 protocol +to support Wayland window management (WWM) specifically. + +There are two separate asynchronous communication channels between Xwayland and +a Wayland compositor: one uses the Wayland protocol, and the other one, solely +for XWM, uses X11 protocol. This setting demands great care from the XWM +implementation to avoid (random) deadlocks with Xwayland. It is often nearly +impossible to prove that synchronous or blocking X11 calls from XWM cannot cause +a deadlock, and therefore it is strongly recommended to make all X11 +communications asynchronous. All Wayland communications are already asynchronous +by design. + +### Window identification + +In Xwayland, an X11 window may have a corresponding wl_surface object in +Wayland. The wl_surface object is used for input and output: it is referenced by +input events and used to provide the X11 window content to the Wayland +compositor. The X11 window and the wl_surface live in different protocol +streams, and they need to be matched for XWM to do its job. + +When Xwayland creates a wl_surface on Wayland, it will also send an X11 +ClientMessage of type atom "WL_SURFACE_ID" to the X11 window carrying the +wl_surface Wayland object ID as the first 32-bit data element. This is how XWM +can associate a wl_surface with an X11 window. Note that the request to create a +wl_surface and the ID message may arrive in any order in the Wayland compositor. From 223517db369be891b9046df505e5d77f4175597f Mon Sep 17 00:00:00 2001 From: Julian Orth Date: Fri, 30 Jan 2026 21:06:40 +0100 Subject: [PATCH 03/11] doc: remove docbook -> mdbook conversion tool Signed-off-by: Julian Orth --- docbook-to-mdbook/.gitignore | 1 - docbook-to-mdbook/Cargo.lock | 184 ------- docbook-to-mdbook/Cargo.toml | 12 - docbook-to-mdbook/rustfmt.toml | 1 - docbook-to-mdbook/src/main.rs | 935 --------------------------------- 5 files changed, 1133 deletions(-) delete mode 100644 docbook-to-mdbook/.gitignore delete mode 100644 docbook-to-mdbook/Cargo.lock delete mode 100644 docbook-to-mdbook/Cargo.toml delete mode 100644 docbook-to-mdbook/rustfmt.toml delete mode 100644 docbook-to-mdbook/src/main.rs diff --git a/docbook-to-mdbook/.gitignore b/docbook-to-mdbook/.gitignore deleted file mode 100644 index ea8c4bf7..00000000 --- a/docbook-to-mdbook/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/target diff --git a/docbook-to-mdbook/Cargo.lock b/docbook-to-mdbook/Cargo.lock deleted file mode 100644 index 507516d9..00000000 --- a/docbook-to-mdbook/Cargo.lock +++ /dev/null @@ -1,184 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -version = 4 - -[[package]] -name = "aho-corasick" -version = "1.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" -dependencies = [ - "memchr", -] - -[[package]] -name = "anyhow" -version = "1.0.100" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61" - -[[package]] -name = "bstr" -version = "1.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63044e1ae8e69f3b5a92c736ca6269b8d12fa7efe39bf34ddb06d102cf0e2cab" -dependencies = [ - "memchr", - "regex-automata", - "serde", -] - -[[package]] -name = "docbook-to-mdbook" -version = "0.1.0" -dependencies = [ - "anyhow", - "bstr", - "isnt", - "quick-xml", - "regex", - "textwrap", -] - -[[package]] -name = "isnt" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1697e6b71679da96d5c41bb9035116141baadbf59a60625fd66cb3c9584e7b0" - -[[package]] -name = "memchr" -version = "2.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" - -[[package]] -name = "proc-macro2" -version = "1.0.106" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "quick-xml" -version = "0.39.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2e3bf4aa9d243beeb01a7b3bc30b77cfe2c44e24ec02d751a7104a53c2c49a1" -dependencies = [ - "memchr", -] - -[[package]] -name = "quote" -version = "1.0.44" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21b2ebcf727b7760c461f091f9f0f539b77b8e87f2fd88131e7f1b433b3cece4" -dependencies = [ - "proc-macro2", -] - -[[package]] -name = "regex" -version = "1.12.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "843bc0191f75f3e22651ae5f1e72939ab2f72a4bc30fa80a066bd66edefc24d4" -dependencies = [ - "aho-corasick", - "memchr", - "regex-automata", - "regex-syntax", -] - -[[package]] -name = "regex-automata" -version = "0.4.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5276caf25ac86c8d810222b3dbb938e512c55c6831a10f3e6ed1c93b84041f1c" -dependencies = [ - "aho-corasick", - "memchr", - "regex-syntax", -] - -[[package]] -name = "regex-syntax" -version = "0.8.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58" - -[[package]] -name = "serde" -version = "1.0.228" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" -dependencies = [ - "serde_core", -] - -[[package]] -name = "serde_core" -version = "1.0.228" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" -dependencies = [ - "serde_derive", -] - -[[package]] -name = "serde_derive" -version = "1.0.228" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "smawk" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7c388c1b5e93756d0c740965c41e8822f866621d41acbdf6336a6a168f8840c" - -[[package]] -name = "syn" -version = "2.0.114" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4d107df263a3013ef9b1879b0df87d706ff80f65a86ea879bd9c31f9b307c2a" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "textwrap" -version = "0.16.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c13547615a44dc9c452a8a534638acdf07120d4b6847c8178705da06306a3057" -dependencies = [ - "smawk", - "unicode-linebreak", - "unicode-width", -] - -[[package]] -name = "unicode-ident" -version = "1.0.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5" - -[[package]] -name = "unicode-linebreak" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b09c83c3c29d37506a3e260c08c03743a6bb66a9cd432c6934ab501a190571f" - -[[package]] -name = "unicode-width" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254" diff --git a/docbook-to-mdbook/Cargo.toml b/docbook-to-mdbook/Cargo.toml deleted file mode 100644 index 508f379d..00000000 --- a/docbook-to-mdbook/Cargo.toml +++ /dev/null @@ -1,12 +0,0 @@ -[package] -name = "docbook-to-mdbook" -version = "0.1.0" -edition = "2024" - -[dependencies] -quick-xml = "0.39.0" -anyhow = "1.0.100" -bstr = "1.12.1" -textwrap = "0.16.2" -regex = "1.12.2" -isnt = "0.2.0" diff --git a/docbook-to-mdbook/rustfmt.toml b/docbook-to-mdbook/rustfmt.toml deleted file mode 100644 index 58b51174..00000000 --- a/docbook-to-mdbook/rustfmt.toml +++ /dev/null @@ -1 +0,0 @@ -imports_granularity = "One" diff --git a/docbook-to-mdbook/src/main.rs b/docbook-to-mdbook/src/main.rs deleted file mode 100644 index 3ebc5493..00000000 --- a/docbook-to-mdbook/src/main.rs +++ /dev/null @@ -1,935 +0,0 @@ -#![expect(clippy::single_char_add_str)] - -use { - anyhow::{Context, bail}, - bstr::ByteSlice, - isnt::std_1::primitive::IsntStrExt, - quick_xml::{ - Reader, - events::{BytesStart, Event}, - }, - regex::Regex, - std::{ - borrow::Cow, - fs::{File, read_dir}, - io::{BufWriter, Write}, - mem, - path::Path, - sync::LazyLock, - }, - textwrap::{Options, WordSeparator, WordSplitter, WrapAlgorithm}, -}; - -const XML_ROOT: &str = "../doc/publican"; -const MD_ROOT: &str = "../doc/book"; - -fn main() -> anyhow::Result<()> { - for file in read_dir(XML_ROOT).context("open publican")? { - let file = file.unwrap(); - let path = file.path(); - let Some(name) = path.file_name() else { - continue; - }; - let name = name.to_str().unwrap(); - if !name.ends_with(".xml") { - continue; - } - match name { - "Architecture.xml" - | "Color.xml" - | "Compositors.xml" - | "Content_Updates.xml" - | "Introduction.xml" - | "Message_XML.xml" - | "Protocol.xml" - | "Foreword.xml" - | "Xwayland.xml" => handle_chapter_file(name) - .with_context(|| format!("handle_chapter_file {}", name))?, - "Book_Info.xml" | "Wayland.xml" | "Author_Group.xml" | "Client.xml" | "Server.xml" => { - continue; - } - _ => bail!("unknown file name {name}"), - } - } - handle_wayland_xml().context("Wayland.xml")?; - Ok(()) -} - -fn handle_wayland_xml() -> anyhow::Result<()> { - let input = Path::new(XML_ROOT).join("Wayland.xml"); - let input = std::fs::read_to_string(input).context("read xml")?; - let mut r = Reader::from_str(&input); - let output = Path::new(MD_ROOT).join("src").join("SUMMARY.md"); - let mut w = BufWriter::new(File::create(output).context("open md")?); - writeln!(w, "# Summary")?; - writeln!(w)?; - writeln!(w, "[Foreword](Foreword.md)")?; - writeln!(w)?; - loop { - let event = r.read_event().context("read event")?; - match event { - Event::Start(c) => match c.name().as_ref() { - b"book" => loop { - let event = r.read_event().context("read event")?; - match event { - Event::Empty(e) if e.name().as_ref() == b"xi:include" => { - let href = e - .try_get_attribute("href") - .context("href")? - .context("href")? - .unescape_value() - .context("href")?; - let name = match &*href { - "Book_Info.xml" => continue, - "Foreword.xml" => continue, - "Introduction.xml" => "Introduction", - "Compositors.xml" => "Types of Compositors", - "Architecture.xml" => "Wayland Architecture", - "Protocol.xml" => "Wayland Protocol and Model of Operation", - "Message_XML.xml" => "Message Definition Language", - "Xwayland.xml" => "X11 Application Support", - "Content_Updates.xml" => "Content Updates", - "Color.xml" => "Color management", - "ProtocolSpec.xml" => continue, - "Client.xml" => continue, - "Server.xml" => continue, - _ => bail!("unexpected link {href}"), - }; - writeln!(w, "- [{name}](./{})", href.replace(".xml", ".md"))?; - } - Event::Text(t) if t.trim().is_empty() => {} - Event::End(e) if e.name().as_ref() == b"book" => break, - _ => bail!("unexpected event {event:?}"), - } - }, - s => bail!("unexpected start {:?}", s.as_bstr()), - }, - Event::Decl(_) => {} - Event::DocType(_) => {} - Event::Text(t) if t.trim().is_empty() => {} - Event::Eof => break, - _ => bail!("unexpected event {event:?}"), - } - } - Ok(()) -} - -fn handle_chapter_file(name: &str) -> anyhow::Result<()> { - let input = Path::new(XML_ROOT).join(name); - let input = std::fs::read_to_string(input).context("read xml")?; - let mut reader = Reader::from_str(&input); - let output = Path::new(MD_ROOT) - .join("src") - .join(name) - .with_extension("md"); - let mut output = BufWriter::new(File::create(output).context("open md")?); - Handler { - w: &mut output, - r: &mut reader, - text: Default::default(), - need_newline: false, - last_line_has_content: false, - have_indent_1: Default::default(), - indent_1: Default::default(), - indent_2: Default::default(), - } - .handle_chapter_file() -} - -struct Handler<'a, 'b, W> { - w: &'a mut W, - r: &'a mut Reader<&'b [u8]>, - text: String, - need_newline: bool, - last_line_has_content: bool, - have_indent_1: bool, - indent_1: String, - indent_2: String, -} - -#[derive(Copy, Clone, Eq, PartialEq)] -enum TitleType { - Chapter, - Section(usize), - Bold, -} - -enum ListType { - Bullet, - Numbered(usize), - Itemized, -} - -static WHITESPACE: LazyLock = LazyLock::new(|| Regex::new(r#"[\n\t ]+"#).unwrap()); - -impl Handler<'_, '_, W> -where - W: Write, -{ - fn handle_chapter_file(&mut self) -> anyhow::Result<()> { - loop { - let event = self.r.read_event().context("read event")?; - match event { - Event::Start(c) => match c.name().as_ref() { - b"preface" | b"chapter" => self.handle_chapter().context("handle_chapter")?, - s => bail!("unexpected start {:?}", s.as_bstr()), - }, - Event::Decl(_) => {} - Event::DocType(_) => {} - Event::Text(t) if t.trim().is_empty() => {} - Event::Eof => break, - _ => bail!("unexpected event {event:?}"), - } - } - Ok(()) - } - - fn handle_chapter(&mut self) -> anyhow::Result<()> { - loop { - let event = self.r.read_event().context("read event")?; - // dbg!(&event); - match event { - Event::Start(s) => match s.name().as_ref() { - b"title" => self - .handle_title(TitleType::Chapter) - .context("handle_title")?, - b"literallayout" | b"para" => self.handle_para(false).context("handle_para")?, - b"section" => self.handle_section(0).context("handle_section")?, - _ => bail!("unexpected start {:?}", s.as_bstr()), - }, - Event::Empty(s) if s.name().as_ref() == b"xi:include" => {} - Event::End(e) if e.name().as_ref() == b"chapter" => break, - Event::End(e) if e.name().as_ref() == b"preface" => break, - Event::Text(t) if t.trim().is_empty() => {} - _ => bail!("unexpected event {event:?}"), - } - } - Ok(()) - } - - fn handle_title(&mut self, ty: TitleType) -> anyhow::Result<()> { - match ty { - TitleType::Chapter => self.text.push_str("# "), - TitleType::Section(depth) => { - self.text.push_str("##"); - for _ in 0..depth { - self.text.push_str("#"); - } - self.text.push_str(" "); - } - TitleType::Bold => self.text.push_str("**"), - } - let mut first = true; - loop { - let event = self.r.read_event().context("read event")?; - // dbg!(&event); - match event { - Event::Text(v) => { - if first { - first = false; - } else { - self.text.push_str(" "); - } - self.text.push_str(v.decode().unwrap().trim()); - } - Event::End(v) if &*v == b"title" => break, - _ => bail!("unexpected event {event:?}"), - } - } - match ty { - TitleType::Chapter => {} - TitleType::Section(_) => {} - TitleType::Bold => self.text.push_str("**"), - } - let text = mem::take(&mut self.text); - self.write_line(&text)?; - self.text = text; - self.text.clear(); - self.need_newline = true; - Ok(()) - } - - fn handle_section(&mut self, depth: usize) -> anyhow::Result<()> { - loop { - let event = self.r.read_event().context("read event")?; - // dbg!(&event); - match event { - Event::Start(s) => match s.name().as_ref() { - b"section" => self.handle_section(depth + 1).context("handle_section")?, - b"title" => self - .handle_title(TitleType::Section(depth)) - .context("handle_title")?, - b"synopsis" => self.handle_para(true).context("handle_synopsis")?, - b"para" => self.handle_para(false).context("handle_para")?, - b"orderedlist" => self.handle_orderedlist().context("handle_orderedlist")?, - b"itemizedlist" => self.handle_itemizedlist().context("handle_itemizedlist")?, - b"figure" => self.handle_figure().context("handle_figure")?, - b"variablelist" => self.handle_variablelist().context("handle_variablelist")?, - b"mediaobject" | b"mediaobjectco" => { - self.handle_mediaobject().context("handle_mediaobject")? - } - _ => bail!("unexpected start {:?}", s.as_bstr()), - }, - Event::End(v) if &*v == b"section" => break, - Event::Text(t) if t.trim().is_empty() => {} - _ => bail!("unexpected event {event:?}"), - } - } - Ok(()) - } - - fn handle_xref(&mut self, e: BytesStart<'_>) -> anyhow::Result<()> { - let url = e - .try_get_attribute("linkend") - .context("linkend")? - .context("linkend")? - .unescape_value() - .context("linkend")?; - let name_buf; - let url_buf; - let (name, url) = if let Some(v) = url.strip_prefix("sect-") - && let Some((sect, v)) = v.split_once("-") - { - match sect { - "Protocol" => match v { - "Wire-Format" => ("Wire Format", "#wire-format"), - "data-sharing-devices" => ("Data devices", "#data-devices"), - _ => bail!("unhandled protocol link {url}"), - }, - "MessageXML" => match v { - "tag-interface" => ("interface", "#interface"), - "tag-arg" => ("arg", "#arg"), - _ => bail!("unhandled message-xml link {url}"), - }, - _ => bail!("unhandled section {url}"), - } - } else if let Some(v) = url.strip_prefix("chap-") { - match v { - "Protocol" => ("Wayland Protocol and Model of Operation", "Protocol.md"), - _ => bail!("unhandled chap {url}"), - } - } else if let Some(v) = url.strip_prefix("protocol-spec-") { - if let Some((interface, v)) = v.split_once("-") - && let Some((ty, message)) = v.split_once("-") - { - name_buf = format!("{interface}.{message}"); - url_buf = - format!("https://wayland.app/protocols/wayland#{interface}:{ty}:{message}"); - } else { - name_buf = v.to_string(); - url_buf = format!("https://wayland.app/protocols/wayland#{v}"); - } - (&*name_buf, &*url_buf) - } else { - bail!("unknown link format {url}"); - }; - self.text.push_str("["); - self.text.push_str(name); - self.text.push_str("]"); - self.text.push_str("("); - self.text.push_str(url); - self.text.push_str(")"); - Ok(()) - } - - fn handle_filename(&mut self) -> anyhow::Result<()> { - let mut text = String::new(); - loop { - let event = self.r.read_event().context("read event")?; - match event { - Event::Text(t) => { - let s = t.decode().unwrap(); - let s = WHITESPACE.replace_all(&s, " "); - text.push_str(&s); - } - Event::End(v) if &*v == b"filename" => break, - _ => bail!("unexpected event {event:?}"), - } - } - self.text.push_str("["); - self.text.push_str(text.trim()); - self.text.push_str("]"); - self.text - .push_str("(https://gitlab.freedesktop.org/wayland/wayland/-/blob/main/"); - self.text.push_str(&text); - self.text.push_str(")"); - Ok(()) - } - - fn handle_link(&mut self, e: BytesStart<'_>) -> anyhow::Result<()> { - let mut text = String::new(); - loop { - let event = self.r.read_event().context("read event")?; - match event { - Event::Text(t) => { - let s = t.decode().unwrap(); - let s = WHITESPACE.replace_all(&s, " "); - text.push_str(&s); - } - Event::End(v) if &*v == b"link" => break, - _ => bail!("unexpected event {event:?}"), - } - } - let url = e - .try_get_attribute("linkend") - .context("linkend")? - .context("linkend")? - .unescape_value() - .context("linkend")?; - let buf; - let url = if let Some(v) = url.strip_prefix("sect-") - && let Some((sect, v)) = v.split_once("-") - { - match sect { - "Compositors" => match v { - "System-Compositor" => "#system-compositor", - "Session-Compositor" => "#session-compositor", - _ => bail!("unhandled compositors link {url}"), - }, - "Library" => "https://gitlab.freedesktop.org/wayland/wayland", - _ => bail!("unhandled section {url}"), - } - } else if let Some(v) = url.strip_prefix("protocol-spec-") { - if let Some((interface, v)) = v.split_once("-") - && let Some((ty, message)) = v.split_once("-") - { - buf = format!("https://wayland.app/protocols/wayland#{interface}:{ty}:{message}"); - } else { - buf = format!("https://wayland.app/protocols/wayland#{v}"); - } - &buf - } else { - bail!("unknown link format {url}"); - }; - self.text.push_str("["); - self.text.push_str(text.trim()); - self.text.push_str("]"); - self.text.push_str("("); - self.text.push_str(url); - self.text.push_str(")"); - Ok(()) - } - - fn handle_ulink(&mut self, e: BytesStart<'_>) -> anyhow::Result<()> { - let mut text = String::new(); - loop { - let event = self.r.read_event().context("read event")?; - match event { - Event::Text(t) => { - let s = t.decode().unwrap(); - let s = WHITESPACE.replace_all(&s, " "); - text.push_str(&s); - } - Event::End(v) if &*v == b"ulink" => break, - _ => bail!("unexpected event {event:?}"), - } - } - let url = e - .try_get_attribute("url") - .context("url")? - .context("url")? - .unescape_value() - .context("url")?; - self.text.push_str("["); - self.text.push_str(text.trim()); - self.text.push_str("]"); - self.text.push_str("("); - self.text.push_str(&url); - self.text.push_str(")"); - Ok(()) - } - - fn handle_code(&mut self) -> anyhow::Result<()> { - self.text.push_str("`"); - loop { - let event = self.r.read_event().context("read event")?; - // dbg!(&event); - match event { - Event::Text(t) => { - let s = t.decode().unwrap(); - let s = WHITESPACE.replace_all(&s, " "); - self.text.push_str(&s); - } - Event::End(v) if &*v == b"code" => break, - Event::End(v) if &*v == b"varname" => break, - Event::End(v) if &*v == b"literal" => break, - Event::End(v) if &*v == b"userinput" => break, - Event::End(v) if &*v == b"type" => break, - Event::End(v) if &*v == b"function" => break, - Event::End(v) if &*v == b"systemitem" => break, - _ => bail!("unexpected event {event:?}"), - } - } - self.text.push_str("`"); - Ok(()) - } - - fn handle_emphasis(&mut self) -> anyhow::Result<()> { - self.text.push_str("_"); - loop { - let event = self.r.read_event().context("read event")?; - // dbg!(&event); - match event { - Event::Text(t) => { - let s = t.decode().unwrap(); - let s = WHITESPACE.replace_all(&s, " "); - self.text.push_str(&s); - } - Event::End(v) if &*v == b"emphasis" => break, - Event::End(v) if &*v == b"firstterm" => break, - _ => bail!("unexpected event {event:?}"), - } - } - self.text.push_str("_"); - Ok(()) - } - - fn handle_newline(&mut self) -> anyhow::Result<()> { - if mem::take(&mut self.need_newline) { - self.write_line("")?; - } - Ok(()) - } - - fn write_line(&mut self, text: &str) -> anyhow::Result<()> { - self.handle_newline()?; - let text = text.trim_end(); - if text.is_empty() { - let indent = self.indent_1.trim_end(); - if indent.is_empty() { - if mem::take(&mut self.last_line_has_content) { - writeln!(self.w)?; - // dbg!(""); - } - } else { - writeln!(self.w, "{}", indent)?; - // dbg!("indent"); - self.last_line_has_content = true; - } - } else { - writeln!(self.w, "{}{text}", self.indent_1)?; - // dbg!(format!("{}{text}", self.indent_1)); - self.last_line_has_content = true; - } - self.clear_indent_1(); - Ok(()) - } - - fn clear_indent_1(&mut self) { - if self.have_indent_1 { - self.have_indent_1 = false; - self.indent_1.clone_from(&self.indent_2); - } - } - - fn push_indent( - &mut self, - indent: &str, - cont: bool, - f: impl FnOnce(&mut Self) -> anyhow::Result<()>, - ) -> anyhow::Result<()> { - self.handle_newline()?; - let len = self.indent_1.len(); - self.have_indent_1 = true; - self.indent_1.push_str(indent); - self.indent_1.push_str(" "); - if cont { - self.indent_2.push_str(indent); - self.indent_2.push_str(" "); - } else { - for _ in self.indent_2.len()..self.indent_1.len() { - self.indent_2.push_str(" "); - } - } - f(self)?; - self.indent_1.truncate(len); - self.indent_2.truncate(len); - Ok(()) - } - - fn flush_text(&mut self, synopsis: bool) -> anyhow::Result<()> { - const MAX_WIDTH: usize = 80; - self.handle_newline()?; - if synopsis { - self.write_line("```")?; - } - let text = mem::take(&mut self.text); - let trimmed = text.trim(); - if trimmed.is_not_empty() { - let options = Options::new(MAX_WIDTH) - .break_words(false) - .wrap_algorithm(WrapAlgorithm::FirstFit) - .word_separator(WordSeparator::AsciiSpace) - .word_splitter(WordSplitter::NoHyphenation) - .initial_indent(&self.indent_1) - .subsequent_indent(&self.indent_2); - let lines = textwrap::wrap(trimmed.trim(), options); - for line in lines { - writeln!(self.w, "{line}")?; - // dbg!(line); - self.last_line_has_content = true; - self.clear_indent_1(); - } - self.text = text; - } - if synopsis { - self.write_line("```")?; - } - self.text.clear(); - Ok(()) - } - - fn handle_admonition(&mut self, name: &str) -> anyhow::Result<()> { - self.push_indent(">", true, |slf| { - slf.write_line(&format!("[!{name}]"))?; - loop { - let event = slf.r.read_event().context("read event")?; - // dbg!(&event); - match event { - Event::Start(v) => match v.name().as_ref() { - b"simpara" | b"para" => slf.handle_para(false).context("handle_para")?, - s => bail!("unexpected start {:?}", s.as_bstr()), - }, - Event::Text(t) if t.trim().is_empty() => {} - Event::End(v) if &*v == b"warning" => break, - Event::End(v) if &*v == b"note" => break, - _ => bail!("unexpected event {event:?}"), - } - } - Ok(()) - }) - } - - fn handle_para(&mut self, synopsis: bool) -> anyhow::Result<()> { - self.handle_text_block(synopsis)?; - self.need_newline = true; - Ok(()) - } - - fn handle_text_block(&mut self, synopsis: bool) -> anyhow::Result<()> { - loop { - let event = self.r.read_event().context("read event")?; - // dbg!(&event); - match event { - Event::Start(v) => match v.name().as_ref() { - b"synopsis" => { - self.flush_text(synopsis)?; - self.need_newline = true; - self.handle_para(true).context("handle_synopsis")? - } - b"emphasis" => self.handle_emphasis().context("handle_emphasis")?, - b"firstterm" => self.handle_emphasis().context("handle_firstterm")?, - b"type" => self.handle_code().context("handle_type")?, - b"code" => self.handle_code().context("handle_code")?, - b"systemitem" => self.handle_code().context("handle_systemitem")?, - b"function" => self.handle_code().context("handle_function")?, - b"filename" => self.handle_filename().context("handle_filename")?, - b"literal" => self.handle_code().context("handle_literal")?, - b"varname" => self.handle_code().context("handle_varname")?, - b"userinput" => self.handle_code().context("handle_userinput")?, - b"ulink" => self.handle_ulink(v).context("handle_ulink")?, - b"link" => self.handle_link(v).context("handle_link")?, - b"itemizedlist" => { - self.flush_text(synopsis)?; - self.need_newline = true; - self.handle_itemizedlist().context("handle_itemizedlist")? - } - b"orderedlist" => { - self.flush_text(synopsis)?; - self.need_newline = true; - self.handle_orderedlist().context("handle_orderedlist")? - } - b"variablelist" => { - self.flush_text(synopsis)?; - self.need_newline = true; - self.handle_variablelist().context("handle_variablelist")? - } - s => bail!("unexpected start {:?}", s.as_bstr()), - }, - Event::Empty(v) => match v.name().as_ref() { - b"xref" => self.handle_xref(v).context("handle_xref")?, - e => bail!("unexpected empty {:?}", e.as_bstr()), - }, - Event::Text(t) => { - let s = t.decode().unwrap(); - let s = WHITESPACE.replace_all(&s, " "); - self.text.push_str(&s); - } - Event::GeneralRef(v) => { - self.text.push_str(&v.decode().unwrap()); - } - Event::End(v) if &*v == b"para" => break, - Event::End(v) if &*v == b"synopsis" => break, - Event::End(v) if &*v == b"simpara" => break, - Event::End(v) if &*v == b"literallayout" => break, - _ => bail!("unexpected event {event:?}"), - } - } - self.flush_text(synopsis)?; - Ok(()) - } - - fn handle_variablelist(&mut self) -> anyhow::Result<()> { - loop { - let event = self.r.read_event().context("read event")?; - // dbg!(&event); - match event { - Event::Start(e) => match e.name().as_ref() { - b"title" => self.handle_title(TitleType::Bold).context("handle_title")?, - b"varlistentry" => self.handle_varlistentry().context("handle_varlistentry")?, - s => bail!("unexpected start {:?}", s.as_bstr()), - }, - Event::End(v) if &*v == b"variablelist" => break, - Event::Text(t) if t.trim().is_empty() => {} - _ => bail!("unexpected event {event:?}"), - } - } - Ok(()) - } - - fn handle_varlistentry(&mut self) -> anyhow::Result<()> { - loop { - let event = self.r.read_event().context("read event")?; - // dbg!(&event); - match event { - Event::Start(e) => match e.name().as_ref() { - b"term" => self.handle_term().context("handle_term")?, - b"listitem" => self - .handle_listitem(ListType::Itemized) - .context("handle_listitem")?, - s => bail!("unexpected start {:?}", s.as_bstr()), - }, - Event::End(v) if &*v == b"varlistentry" => break, - Event::Text(t) if t.trim().is_empty() => {} - _ => bail!("unexpected event {event:?}"), - } - } - Ok(()) - } - - fn handle_term(&mut self) -> anyhow::Result<()> { - loop { - let event = self.r.read_event().context("read event")?; - // dbg!(&event); - match event { - Event::Start(e) => match e.name().as_ref() { - b"literal" => self.handle_code().context("handle_literal")?, - b"synopsis" => self.handle_text_block(false).context("handle_synopsis")?, - s => bail!("unexpected start {:?}", s.as_bstr()), - }, - Event::End(v) if &*v == b"term" => break, - Event::Text(t) => { - let s = t.decode().unwrap(); - let s = WHITESPACE.replace_all(&s, " "); - self.text.push_str(&s); - } - _ => bail!("unexpected event {event:?}"), - } - } - self.flush_text(false)?; - Ok(()) - } - - fn handle_orderedlist(&mut self) -> anyhow::Result<()> { - let mut n = 1..; - loop { - let event = self.r.read_event().context("read event")?; - // dbg!(&event); - match event { - Event::Start(e) => match e.name().as_ref() { - b"listitem" => self - .handle_listitem(ListType::Numbered(n.next().unwrap())) - .context("handle_listitem")?, - s => bail!("unexpected start {:?}", s.as_bstr()), - }, - Event::End(v) if &*v == b"orderedlist" => break, - Event::Text(t) if t.trim().is_empty() => {} - _ => bail!("unexpected event {event:?}"), - } - } - Ok(()) - } - - fn handle_itemizedlist(&mut self) -> anyhow::Result<()> { - loop { - let event = self.r.read_event().context("read event")?; - // dbg!(&event); - match event { - Event::Start(e) => match e.name().as_ref() { - b"listitem" => self - .handle_listitem(ListType::Bullet) - .context("handle_listitem")?, - s => bail!("unexpected start {:?}", s.as_bstr()), - }, - Event::End(v) if &*v == b"itemizedlist" => break, - Event::Text(t) if t.trim().is_empty() => {} - _ => bail!("unexpected event {event:?}"), - } - } - Ok(()) - } - - fn handle_listitem(&mut self, ty: ListType) -> anyhow::Result<()> { - let indent = match ty { - ListType::Bullet => Cow::Borrowed("-"), - ListType::Numbered(n) => Cow::Owned(format!("{n}.")), - ListType::Itemized => Cow::Borrowed(" :"), - }; - self.push_indent(&indent, false, |slf| { - loop { - let event = slf.r.read_event().context("read event")?; - // dbg!(&event); - match event { - Event::Start(e) => match e.name().as_ref() { - b"simpara" | b"para" => slf.handle_para(false).context("handle_para")?, - b"warning" => slf.handle_admonition("WARNING").context("handle_warning")?, - b"note" => slf.handle_admonition("NOTE").context("handle_note")?, - b"variablelist" => { - slf.handle_variablelist().context("handle_variablelist")? - } - s => bail!("unexpected start {:?}", s.as_bstr()), - }, - Event::End(v) if &*v == b"listitem" => break, - Event::Text(t) if t.trim().is_empty() => {} - _ => bail!("unexpected event {event:?}"), - } - } - Ok(()) - }) - } - - fn handle_figure(&mut self) -> anyhow::Result<()> { - loop { - let event = self.r.read_event().context("read event")?; - // dbg!(&event); - match event { - Event::Start(e) => match e.name().as_ref() { - b"title" => self.handle_title(TitleType::Bold).context("handle_title")?, - b"mediaobject" | b"mediaobjectco" => { - self.handle_mediaobject().context("handle_mediaobject")? - } - s => bail!("unexpected start {:?}", s.as_bstr()), - }, - Event::End(v) if &*v == b"figure" => break, - Event::Text(t) if t.trim().is_empty() => {} - _ => bail!("unexpected event {event:?}"), - } - } - Ok(()) - } - - fn handle_mediaobject(&mut self) -> anyhow::Result<()> { - loop { - let event = self.r.read_event().context("read event")?; - // dbg!(&event); - match event { - Event::Start(e) => match e.name().as_ref() { - b"textobject" => self.handle_textobject().context("handle_textobject")?, - b"imageobject" => self.handle_imageobject().context("handle_imageobject")?, - b"imageobjectco" => self - .handle_imageobjectco() - .context("handle_imageobjectco")?, - b"caption" => self.handle_caption().context("handle_caption")?, - s => bail!("unexpected start {:?}", s.as_bstr()), - }, - Event::End(v) if &*v == b"mediaobject" => break, - Event::End(v) if &*v == b"mediaobjectco" => break, - Event::Text(t) if t.trim().is_empty() => {} - _ => bail!("unexpected event {event:?}"), - } - } - Ok(()) - } - - fn handle_textobject(&mut self) -> anyhow::Result<()> { - loop { - let event = self.r.read_event().context("read event")?; - // dbg!(&event); - match event { - Event::End(v) if &*v == b"textobject" => break, - _ => {} - } - } - Ok(()) - } - - fn handle_imageobject(&mut self) -> anyhow::Result<()> { - loop { - let event = self.r.read_event().context("read event")?; - // dbg!(&event); - match event { - Event::Start(e) => match e.name().as_ref() { - b"areaspec" => self.handle_areaspec().context("handle_areaspec")?, - s => bail!("unexpected start {:?}", s.as_bstr()), - }, - Event::Empty(e) => match e.name().as_ref() { - b"imagedata" => self.handle_imagedata(e).context("handle_imagedata")?, - s => bail!("unexpected empty {:?}", s.as_bstr()), - }, - Event::End(v) if &*v == b"imageobject" => break, - Event::Text(t) if t.trim().is_empty() => {} - _ => bail!("unexpected event {event:?}"), - } - } - Ok(()) - } - - fn handle_imageobjectco(&mut self) -> anyhow::Result<()> { - loop { - let event = self.r.read_event().context("read event")?; - // dbg!(&event); - match event { - Event::Start(e) => match e.name().as_ref() { - b"areaspec" => self.handle_areaspec().context("handle_areaspec")?, - b"imageobject" => self.handle_imageobject().context("handle_imageobject")?, - s => bail!("unexpected start {:?}", s.as_bstr()), - }, - Event::End(v) if &*v == b"imageobjectco" => break, - Event::Text(t) if t.trim().is_empty() => {} - _ => bail!("unexpected event {event:?}"), - } - } - Ok(()) - } - - fn handle_areaspec(&mut self) -> anyhow::Result<()> { - loop { - let event = self.r.read_event().context("read event")?; - // dbg!(&event); - match event { - Event::End(v) if &*v == b"areaspec" => break, - _ => {} - } - } - Ok(()) - } - - fn handle_imagedata(&mut self, e: BytesStart<'_>) -> anyhow::Result<()> { - let fileref = e - .try_get_attribute("fileref") - .context("fileref")? - .context("fileref")? - .unescape_value() - .unwrap(); - self.write_line(&format!("![]({fileref})"))?; - self.need_newline = true; - Ok(()) - } - - fn handle_caption(&mut self) -> anyhow::Result<()> { - loop { - let event = self.r.read_event().context("read event")?; - // dbg!(&event); - match event { - Event::Start(e) => match e.name().as_ref() { - b"para" => self.handle_para(false).context("handle_para")?, - s => bail!("unexpected start {:?}", s.as_bstr()), - }, - Event::End(v) if &*v == b"caption" => break, - Event::Text(t) if t.trim().is_empty() => {} - _ => bail!("unexpected event {event:?}"), - } - } - Ok(()) - } -} From 6fd3cd534b1e26a8faafbc5051764fc416f2a568 Mon Sep 17 00:00:00 2001 From: Julian Orth Date: Fri, 30 Jan 2026 21:08:43 +0100 Subject: [PATCH 04/11] doc: add copyright notice to mdbook Signed-off-by: Julian Orth --- doc/book/src/Foreword.md | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/doc/book/src/Foreword.md b/doc/book/src/Foreword.md index 48cadf6e..468b1654 100644 --- a/doc/book/src/Foreword.md +++ b/doc/book/src/Foreword.md @@ -9,3 +9,26 @@ There have been many contributors to this document and since this is only the first edition many errors are expected to be found. We appreciate corrections. Yours, the Wayland open-source community November 2012 + +## Copyright + +Copyright © 2012 Kristian Høgsberg + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the "Software"), +to deal in the Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice (including the next +paragraph) shall be included in all copies or substantial portions of the +Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. From 25ed270c7dd364df722ba8d749fd22c3ffed6f57 Mon Sep 17 00:00:00 2001 From: Julian Orth Date: Fri, 30 Jan 2026 21:18:11 +0100 Subject: [PATCH 05/11] doc: copy images to mdbook Signed-off-by: Julian Orth --- .../content-updates/content-update-legend.png | Bin 0 -> 15946 bytes .../content-updates/content-updates.drawio | 1528 +++++++++++++++++ .../simple-desynchronized-state-1.png | Bin 0 -> 2037 bytes .../simple-desynchronized-state-2.png | Bin 0 -> 6732 bytes .../simple-desynchronized-state-3.png | Bin 0 -> 1625 bytes .../simple-desynchronized-state-4.png | Bin 0 -> 7302 bytes .../simple-desynchronized-state-5.png | Bin 0 -> 12728 bytes .../simple-desynchronized-state-6.png | Bin 0 -> 2102 bytes .../simple-desynchronized.drawio | 198 +++ .../simple-synchronized-state-1.png | Bin 0 -> 2117 bytes .../simple-synchronized-state-2.png | Bin 0 -> 2586 bytes .../simple-synchronized-state-3.png | Bin 0 -> 2989 bytes .../simple-synchronized-state-4.png | Bin 0 -> 17710 bytes .../simple-synchronized-state-5.png | Bin 0 -> 2209 bytes .../simple-synchronized.drawio | 207 +++ .../content-updates/sync-subsurf-case1-1.png | Bin 0 -> 26995 bytes .../content-updates/sync-subsurf-case1-2.png | Bin 0 -> 27535 bytes .../content-updates/sync-subsurf-case1-3.png | Bin 0 -> 22771 bytes .../content-updates/sync-subsurf-case1-4.png | Bin 0 -> 22017 bytes .../content-updates/sync-subsurf-case1-5.png | Bin 0 -> 10932 bytes .../content-updates/sync-subsurf-case1.drawio | 500 ++++++ .../content-updates/sync-subsurf-case2-1.png | Bin 0 -> 26210 bytes .../content-updates/sync-subsurf-case2-2.png | Bin 0 -> 25821 bytes .../content-updates/sync-subsurf-case2-3.png | Bin 0 -> 10069 bytes .../content-updates/sync-subsurf-case2.drawio | 287 ++++ .../sync-to-desync-subsurf-1.png | Bin 0 -> 18621 bytes .../sync-to-desync-subsurf-2.png | Bin 0 -> 18069 bytes .../sync-to-desync-subsurf-3.png | Bin 0 -> 19371 bytes .../sync-to-desync-subsurf.drawio | 223 +++ .../sync-to-desync-transition-1.png | Bin 0 -> 9299 bytes .../sync-to-desync-transition-2.png | Bin 0 -> 15177 bytes .../sync-to-desync-transition-3.png | Bin 0 -> 15872 bytes .../sync-to-desync-transition.drawio | 203 +++ doc/book/src/images/icon.svg | 19 + doc/book/src/images/wayland-architecture.gv | 36 + doc/book/src/images/wayland-architecture.png | Bin 0 -> 26968 bytes doc/book/src/images/wayland.png | Bin 0 -> 5649 bytes doc/book/src/images/x-architecture.gv | 53 + doc/book/src/images/x-architecture.png | Bin 0 -> 28785 bytes doc/book/src/images/xwayland-architecture.png | Bin 0 -> 7611 bytes 40 files changed, 3254 insertions(+) create mode 100644 doc/book/src/images/content-updates/content-update-legend.png create mode 100644 doc/book/src/images/content-updates/content-updates.drawio create mode 100644 doc/book/src/images/content-updates/simple-desynchronized-state-1.png create mode 100644 doc/book/src/images/content-updates/simple-desynchronized-state-2.png create mode 100644 doc/book/src/images/content-updates/simple-desynchronized-state-3.png create mode 100644 doc/book/src/images/content-updates/simple-desynchronized-state-4.png create mode 100644 doc/book/src/images/content-updates/simple-desynchronized-state-5.png create mode 100644 doc/book/src/images/content-updates/simple-desynchronized-state-6.png create mode 100644 doc/book/src/images/content-updates/simple-desynchronized.drawio create mode 100644 doc/book/src/images/content-updates/simple-synchronized-state-1.png create mode 100644 doc/book/src/images/content-updates/simple-synchronized-state-2.png create mode 100644 doc/book/src/images/content-updates/simple-synchronized-state-3.png create mode 100644 doc/book/src/images/content-updates/simple-synchronized-state-4.png create mode 100644 doc/book/src/images/content-updates/simple-synchronized-state-5.png create mode 100644 doc/book/src/images/content-updates/simple-synchronized.drawio create mode 100644 doc/book/src/images/content-updates/sync-subsurf-case1-1.png create mode 100644 doc/book/src/images/content-updates/sync-subsurf-case1-2.png create mode 100644 doc/book/src/images/content-updates/sync-subsurf-case1-3.png create mode 100644 doc/book/src/images/content-updates/sync-subsurf-case1-4.png create mode 100644 doc/book/src/images/content-updates/sync-subsurf-case1-5.png create mode 100644 doc/book/src/images/content-updates/sync-subsurf-case1.drawio create mode 100644 doc/book/src/images/content-updates/sync-subsurf-case2-1.png create mode 100644 doc/book/src/images/content-updates/sync-subsurf-case2-2.png create mode 100644 doc/book/src/images/content-updates/sync-subsurf-case2-3.png create mode 100644 doc/book/src/images/content-updates/sync-subsurf-case2.drawio create mode 100644 doc/book/src/images/content-updates/sync-to-desync-subsurf-1.png create mode 100644 doc/book/src/images/content-updates/sync-to-desync-subsurf-2.png create mode 100644 doc/book/src/images/content-updates/sync-to-desync-subsurf-3.png create mode 100644 doc/book/src/images/content-updates/sync-to-desync-subsurf.drawio create mode 100644 doc/book/src/images/content-updates/sync-to-desync-transition-1.png create mode 100644 doc/book/src/images/content-updates/sync-to-desync-transition-2.png create mode 100644 doc/book/src/images/content-updates/sync-to-desync-transition-3.png create mode 100644 doc/book/src/images/content-updates/sync-to-desync-transition.drawio create mode 100644 doc/book/src/images/icon.svg create mode 100644 doc/book/src/images/wayland-architecture.gv create mode 100644 doc/book/src/images/wayland-architecture.png create mode 100644 doc/book/src/images/wayland.png create mode 100644 doc/book/src/images/x-architecture.gv create mode 100644 doc/book/src/images/x-architecture.png create mode 100644 doc/book/src/images/xwayland-architecture.png diff --git a/doc/book/src/images/content-updates/content-update-legend.png b/doc/book/src/images/content-updates/content-update-legend.png new file mode 100644 index 0000000000000000000000000000000000000000..84f12e76aefa65bdc7fe98fb81bc168fdbb14416 GIT binary patch literal 15946 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
L23 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/book/src/images/content-updates/simple-desynchronized-state-1.png b/doc/book/src/images/content-updates/simple-desynchronized-state-1.png new file mode 100644 index 0000000000000000000000000000000000000000..d319ac2579f10e583afc13d6dd3bd467dc769ef1 GIT binary patch literal 2037 zcmeAS@N?(olHy`uVBq!ia0y~yU_8XY!0?NMnSp_Ub;foOrI73q~wMMX|k)80QKB(pTCu)dZHZ?Wn<>j@sw466@Uhl?Z+lzNb!|VqsyCl9I~J&5enPdH??XrcIkTIXT(b*cL2U(7JrLp{?uUGfx^8Z1(o{ zK6&!wuV24{f`ZN#C@6U3$Po(*i?Fb;moHyVnKC6JB4Ypk{rdX)*4EZ)YHAlRUi9+v5)l!R zmX?;0kufwhESa=;)BRstwrttEckj%ZGnX!1`r^fl*RNkMTC}LCsYyaY!o$O(t*veG z;>Eqay&E=c2nYyhZf;()W=%^=OH@=8D=RB+z<*H&1_s6?Z+91l4pvzY1_lQ95>H=O z_E(GooCY$Np6rcaU|@OS>EaktaqI2fpTWZE5(hrEJ3J7~n9#s-;aV802+ucxa8Ab; ztsmb!y~riFH1x=7*V|oDuB#VqZMS_<`)~PN-i2w+rEF=_pPa0*-`}wNy+Pi-b(P<_ zlo(Kf+0@ok+J{7+F5Kkw-*tmZ>eNuH^{XazHAa6->Hb%F)pYBu)n+lVFMM@MwdYk$ za#ioSlDTh}$HMI!kNljyL1}hwYV8)qsQpI2mv=ekr(}LMO-x>PV^!O-8*`RD3!SOj z+j{TRq-W`ecGeo)5~^OJda6#sL|)kKPQ=>P$#JWr?;hPF&vtx&%hh*2%SwH9?n`Y? zl>L0^z>n!0j@`Ze?EAsx^8;h8_sj3nKGb^e!lkFthm5{g7|dGx?M?A7jl?sx_G_L> z)N5W_d;h|ta%kci#Me6(8nCoSD4gWbDcROS-QwW#``+ z&!7FrBdhM=?qBoLC&Y6)zq6b&(nM34V8K06ppw4+D8!A5A7yVGZnh%2ZGV)v75+4IuQhmy91R&TT16*4sBXSO0eTX3eg$j*rv#<)!BKJL}s`>r|fBeg1I!y+_6=P1?|oc@+hTe785kH;OI#yLQW8s2t&)pU6H8JVj0}v-bPWu34NXIg z46RH|txPPn4GgRd4D?sI>_E|wo1c=IR*9y;$kNKd5TZf)_OuWN1_lkd4JDbmsl_FU jxdjM4W+4WaRwfo!Mivk~d<(y4ft=~->gTe~DWM4f`Yf6v literal 0 HcmV?d00001 diff --git a/doc/book/src/images/content-updates/simple-desynchronized-state-2.png b/doc/book/src/images/content-updates/simple-desynchronized-state-2.png new file mode 100644 index 0000000000000000000000000000000000000000..ecd284cd6751882532c29984c00957ebdf323b8e GIT binary patch literal 6732 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 b%EZFT$O58=Z{hbWkRv@^{an^LB{Ts5an#hk literal 0 HcmV?d00001 diff --git a/doc/book/src/images/content-updates/simple-desynchronized-state-4.png b/doc/book/src/images/content-updates/simple-desynchronized-state-4.png new file mode 100644 index 0000000000000000000000000000000000000000..83dcc063fac852fc513e3bfeb63a7450462cb454 GIT binary patch literal 7302 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 P1_lOCS3j3^P6&6h2cL4F4((#G6Mqxdx@v7 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 aurjiM=;2%VJ&S>Xfx*+&&t;ucLK6Tuv==A< literal 0 HcmV?d00001 diff --git a/doc/book/src/images/content-updates/simple-desynchronized-state-6.png b/doc/book/src/images/content-updates/simple-desynchronized-state-6.png new file mode 100644 index 0000000000000000000000000000000000000000..ebb88d8189e24c11c018540d8068380b753031df GIT binary patch literal 2102 zcmeAS@N?(olHy`uVBq!ia0y~yU_8vg!0?-cnSp^pk&S-_0|SFXvPY0F14ES>14Ba# z1H&%{28M(N=nM^ zmDAW*Sq-$+LPJAOoH#LO&Ybn@*JoyC*4EZ8p4_y3>7?HJ!t2+si;Ih=r>DPt`}Xta z&%wdLJUl#petuW3Tv@SV1rrm~^XJbeO`0SrDXFWg`|;z)fB*h1U%oseBSTwTo1dTm z+_`fL7cRVf`SSPg-y0hn6A}`pPoJ)*r+5GUeH|Sg6&022?Cd2=mIw+89yxNv!ouRq zmoH&qVb0FZFJHc#GG$6cM8y96`}Otp@1NYXf6dIC#IRZ2)juB|x3;!cQ&YQm@#5yq zo4vfeL_|cSrKM$LWDE@rn@TgDU)Z^2%a*-+_s*O-bLrBhFJ8QO{rdHyMT?r6nkp(P zBqSs}JUrUk+7>Tf+}qo`aY3J{ftCOtZ?L!1onsr$?_TEaVCi6Ge0am04I4HD1O!~# zyTZ&+J1;qcmxs&TNay3tgJL2=s)}-jX;F%DQhdDJ@2>A_Zf;()X3eq9^PZmH9_Huz z`_ajZdzMdVDn7bto|L$#y0ZM;;~QOU&E#byUtZd!ucfwi@x&!lnuP`VAD`VODK7Hj z;;u~#`y%|^_<4D*>|gcc!7*b!%`-a|A6z$Ua%)*jOG{K#)WqfzPbaIHT~#}lO}=q> zEei{CWp1Lax#7vJ3t3rN^HU;st(eNi$-&CPVri_maz?wGy~XuIYg80ue?2_0eANMA z1_lPkByV>Yh7ML)4+aJX_7YEDSN2zo0-Odim!9m6U|?Wr@pN$vskrs_?$7X$REYy0 z(~kv4ili9G?>S|_p=+`3tzPb-4ld0{VHrz1mM-#K+Vm`8+l6_qzms-vi?}gQciZ&0 zzrQ^%NnI?Qs$CgSLBoH|3+?~**?rNqSP^bw zqF|wMgsvZRTDaZkJ&|6x z@U~m##SH)BCvH6Q@C;F2YUFqN(9^1-XFdBLYA%13X;R|Z+Bf|MOa3F3xjIHiXKO8g zEm^c|-c-xS*%jX`pI^G5`_n47>QixBTl%rSIX3?1&(Ha2y63^6?u-}HB3)Na4K17* zyVffG-JUBuXWcq+bf&TGyLOWj-*bOnFs+T&_}VR|e{tz)mnV}R?eVTvHYtgBZWUX? zH|;go#M56sY5#f6D78yxUr}hxlECnA^RoF*{Uug)Z5ed;8nAu!*ltGu@x{tWQ+h zde6@}nyJP=Sq?df?4)kFL&J@GL;A5j3*@V>qXsqxFM)yc%fkKZ`D?j9>12FvvYC9> z24M&^@cX1~QZmBI`aIrkcv$&Uc~W{=*4+A*wmj*ju8VDDm6N-bRRepcblth&;vB72 zvge3eg|Pa|l!==6LO55uJ4b&iz4hhEa~|IFJ*xa=cPoT>b7zJwiHa1Re)H<8;%Dc) z=k1!=cI?TSe!UC3T7&jyd=!e^)zfBX8j|7oDq-ikAM4xpcwfu>ICb?SrQTh;c4hW@ z^oCu$FmJ1rX5{jzuV-)7*|jjn{FJWj_E)*Gvb>VUCMD5pDvKXZdl5GA+P2)=x1(J1 zu1~qtBZ=XyZx=7X0xZ74*7zCg-y6HxFaiiwfZ1aK|KHl$7ts^a9cLfkor07;p=Q0< z_vQALuY7_huN|vjfB8b~yzS1~w(tE`?)R?FtoUxb`~BYc9y`zdF1P=nz$^P{f}M`i z(pC39O4|kfev#a7e{pWX`N{saf6r__fANCs%QoKg&)?bB9j@&ZchZ05{jzPgkbe8O z*V-l}?zl=SRXuKYG-`Tl*PQ+pJduwW6XB^u8b*|XEcD|Q;6Tk0H zx&PK`$NL-WA6CDw|L{;zYS&{Isk$#84>G%R*G;kz`4wWnc%k(!>AHI#Tl?PJxLRy_ z_k;Iet%)96RdP{kVo554k%5t!u7RPhp=pSbp_PfLm5HUc zfq|8Qf&MC&9Vi-d^HVa@D$z6;Sz4JILNo+h&oE$MV9 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/book/src/images/content-updates/simple-synchronized-state-1.png b/doc/book/src/images/content-updates/simple-synchronized-state-1.png new file mode 100644 index 0000000000000000000000000000000000000000..be101446104f7798a8d39f8edb0dbd1bdec3e24b GIT binary patch literal 2117 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 literal 0 HcmV?d00001 diff --git a/doc/book/src/images/content-updates/simple-synchronized-state-4.png b/doc/book/src/images/content-updates/simple-synchronized-state-4.png new file mode 100644 index 0000000000000000000000000000000000000000..e8b9b3db323541330fcfecce76c831f62c97698a GIT binary patch literal 17710 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 literal 0 HcmV?d00001 diff --git a/doc/book/src/images/content-updates/simple-synchronized.drawio b/doc/book/src/images/content-updates/simple-synchronized.drawio new file mode 100644 index 00000000..a478ae02 --- /dev/null +++ b/doc/book/src/images/content-updates/simple-synchronized.drawio @@ -0,0 +1,207 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/book/src/images/content-updates/sync-subsurf-case1-1.png b/doc/book/src/images/content-updates/sync-subsurf-case1-1.png new file mode 100644 index 0000000000000000000000000000000000000000..1f7ff8e42b9783c3ee6fb54c66828ec033cdd13d GIT binary patch literal 26995 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 literal 0 HcmV?d00001 diff --git a/doc/book/src/images/content-updates/sync-subsurf-case1-2.png b/doc/book/src/images/content-updates/sync-subsurf-case1-2.png new file mode 100644 index 0000000000000000000000000000000000000000..6839b679990902c4ae4a4a5e092244d74b853ee7 GIT binary patch literal 27535 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 literal 0 HcmV?d00001 diff --git a/doc/book/src/images/content-updates/sync-subsurf-case1-3.png b/doc/book/src/images/content-updates/sync-subsurf-case1-3.png new file mode 100644 index 0000000000000000000000000000000000000000..9810a028186cba6b1578637834e7a5842fef9aaa GIT binary patch literal 22771 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 BZ`c3; literal 0 HcmV?d00001 diff --git a/doc/book/src/images/content-updates/sync-subsurf-case1-4.png b/doc/book/src/images/content-updates/sync-subsurf-case1-4.png new file mode 100644 index 0000000000000000000000000000000000000000..bf3c04bcf0fc93b0661a475aaa02b7f7821bb734 GIT binary patch literal 22017 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 literal 0 HcmV?d00001 diff --git a/doc/book/src/images/content-updates/sync-subsurf-case1-5.png b/doc/book/src/images/content-updates/sync-subsurf-case1-5.png new file mode 100644 index 0000000000000000000000000000000000000000..1b2ebc3b1dd53819002152d9f8d77413bdefec79 GIT binary patch literal 10932 zcmeAS@N?(olHy`uVBq!ia0y~yU_8XY!0?NMiGhJ(ugZlq1_lO&WRD&6h2cL4F4((#G6Mqxdx@v7 zEBh-(0Zs#%OHcMjFfhpYc)B=-RNQ)dw=yC){2u!U=C+BdTe&0-ta9P-W}U9ox7Af^ z2?tk3dItMOU4^{R75Ro`UGEz_I$OhCW$t*b-m>6PP^Ne4MJvHK7K_*V#kfTY2)qbk zk7QBN=o`a5@?KY8-+UGRR}@AGy`l$4eVGB5;8UAWAgfx%(B zq8lT_3I#e41txnL4I+wm#%N8QHhuc_t5>&f-!3gJ{kg)1ot@p>+}zmM*f(GHRqI4< z!&Pse6jg?Wh57mQxhTC{-5a36!^OqL%X_uCMl$njlbpeeSFbL8G2>bDrJ?bcRe9XX zrPU4#13HdAnleRXrjOZ-Z!vn|Dndt(9V@c1`dNQ`VwnC5-npHD>HoE}URvIdwN5tC z*VnhQ+O=rWqs;vp0vtiX!OTodCb5jKS|>6YuIe?MHD}JA%*)H>y?!hEc5cj^HR=(w zXGm<{y7l_KwYu7xtM`Q7+?*N|6y)R6v+T9QUIV2E86K~5Zf()Dw4Ay3Skj)Omo_B) zSE#?Oxy|mM&G*)bzZ3bwS*PdWqhw>ls^~@6b^)N~%3m zrM#H&U;Fi&D?PmZPT!b)FmC1FZ#=_ign-oeC1^Iq}{1rFV6;vXJ4OJe>DC4 z=GkXU=Fi;o{N&1GU0qxoBi6ip6tZ%$a6%-yfN8c+Y94&g7Gu zHf{R#^Xn@R$jV*){mDd`$kk^qT=?+hrv5&w?@v!|j+c;<+O~b`^OSneNc{sBf(+fh zzrQapDS7ka#f^D)t=QSy&zw1PJ-&XfK+)e{UtPP!?(Qgj{C4~OZ=XL~SASd6-|z42 z%&hoi_4<8Lo6~%QgM%F$9GsnrckXXEP z=gyW1&FuW|ZftyfXJ>I;U0w3Ap3JN)EghXVFJ1_Ay6i50f9~A5y8nN_r=Oh_8W!fp z@$=2*^Bjuq{c^U2kB-c#c%?ms{5?e+Cj??mkkw7GcfmH&U?kB`^hK7H-)%Ij&m z{3+gtT#bINk2YKPGDKtA+TX#sv5$lQ&-iunY0BdR}oxv1N_+2HP0!EdeQm)qReOUMT(}M&5W91Xmf8RNK=~VL0`(bok=- zBz!xwa&dj~mwV5qd|EYsZKc?(d(ZD~JYRjo`quZVvzEqO*}0i#|5ya?e0FN7_UZcl ze?0y@TzPrfx14=R#m(_ zG{N(a=l&~yKFz+kpEFi=S3zg|`nSJVi96g4k?B2l^ytl7x8_-up1OK9R6*d#(W9oO zrh-n>bfcd=eHt1T_U!H3+|<;qNk_XbUAmNa|L*qu_^2qU{^Q+UT|sZJ$ItzKn_084 zY}?}|FMQ#9?^^kD^38O0 z@#Xtwm6nwi9WOZECp~+@q=1sQcdprY^YZdqTUmX}yMO(9_>H|&r%(T0#c}@m=f{s9 zuU@t4+4=eFL%&K%Nchb7BXfS%^@|q+D_4Jdc(^_JcyDbQ&-VHAc3-u&dCIUtVlh+W zf+b5-Y;9{VE^;k@cSo@M=;rkEd6}7#wpCkPlun*KTl;$Lb{<|{Vkdt zXlQ6?WHjmcg3dP&>(7K($R!hw!dx$7WVA;7x!1){qq07(x(SH{b$dfRo)eB?`v%^qv~e0 zsKeTj`76y04I}qfmDbh$n`>SE?99yI$jFs8>+fH^y0zltBjRkQFzc2pv zFSCCyAo1&-eSOs{b`IX=Z{NzU#hJ?e5m&$Ir_%CA>-X06Y;W%Us;pVg_BHsuc)P!l z(=*QJd*6KBw6XJJ%=w+4Yo7@_75P8mTW0<(jx|6#G-=DmjT6s5_n&35a_7#O0!ev! zcFD(hoH`aRe0Zpp+tyO^z z#hZ-{bbjUK?tOCPpM(7QeY0ZsMv84NEkDhC^O7oe(*5X*|28-mJ!JQN{~=C7+WzP9 z``4~LxBu5%ZETi*W6sonPlD#XIwj?FqC)%hzI}(@`D%z{?Yh9YZNuzmzkN^r@0ww{ z*iBN%DQZ>}+hytM^-L?KY6bgeklQigF!& zd3kwlP0gRbf8BefLIVO45)uT2gq%16?Timyxl(dTZ~Xj$*}~)b|ATL@2(-4do1(w-!?X9|b+x-@ z2pA==TD+{hLchXBZgWia_HFCap4#8FDm6NPkB%`{IWZE_FeDZaKEU5#Z-4XVjj+03kFKF zOiWGhZp{vNbZneBapLOLui52m9=v|-&9QRrTGf_2dn!LaJ3IT7UrbC)$nUS4x}=;= z{OrE;S^U58^ViS6UOL=&Zd%yQ$H)EiCd~h~=fMZLkL}j>z8*i1%u3%`e41_j^t+~e z4_7~Y@IggNxi=e9R7H`SlByWr82&hmey%lEFGn|!46SMn2u z*RpL<3}4<}RFU%ztNBy^|Mjb!|01^82N!!jDYBgYJLTQ#2T67D*BP$fS$A`P@&Bpa z|1(x(8*De3zyHD16TK79+_kEU}-%68{A?~|3amQ;d-(2Ds5FoI*M(1-y`tqhthtK&P-FW8l-f!oZ@myZD zO6#d@T2;J$gVl?a7cb^txDfEnV*AE@hPsx$n+|VzV)9H@I!4dj#AM6-V~5T7u1>0A zY!gcg(Vj7LW~YmPp3;dMvja<(c|5(>bxvgC{dI~$om<{=lrOo;{mXa#vKb*SBe|E& znBsQp@&os%y$g;TNL>|^;Zrv?o%&NFd+K`5$j@7nw=6PtedD9pvSit^tn_6)phlsh z+g1+;2ZrCG2RDUPhTPb#*=fyg%zXLgN)OLFlA_=Atb->_nzZHT-#q2DaTmfZR$QOf zTy<>1p6#)fw`ch6*p51U&so|~Hw{K5+o6?63#a7OG)4i8o`t<43n>RU~ zE=Jkcbe?8M-o10@i;?e)s@Jbx-MW3dx3{;_W}e)2?p@r5tEzc;c&3yWgoTD?Rz))~ zTg{p00oW%QFTBx5c~MEJZ>OHHbJ!Cz!1A-nI7?Gjk9_Zo|bDdWrn5 zQwKQSwTD^Me%ahMP-&{XwzJ2|^A_plkv9Q?K zwJ*=INGvSK3rW{#o^<}XvAXB(UAwxvyMNaF`>=m9AA>|k;N8Q0fxh|N3=bB_F*NWc zi7+&94PwImvNS`p>h#k~gEA{CEjOzvD<3|1@Zj0ApzL@#n%$sCvZS;$vr2k_ebG)E zZEbCJb$6wSU#_}oh_JD;wzjn?`7^f7&pVRwl9Bmq>AO8a-rpOX77BD9)zs89nwewp zc4y2w50$Ro-lqix6BrF@O4Quu{$0Of>GPWMw>=m4?Ai0;#fz@4uH}ChIVgDe`tovc zTqt2>P-bn@y`^DkS$TPxukH2Q*0-#8T15J9Ff%mF%g$cEH##~jD6Dezq`S)&EmATt zFwoT0R8w=iT*}bH(Gj?IbLQn`PoAWFlj{B`=6$&7Z}Xqr=W|7J zt@7^4)22;ZvP8u3LZpF{4rSiV%>X{`aTbveNC@Ez4#bdZi z_ehdqb(~$L|0kdCGvBbScD}YFV)wT{(XyM`?&d7}eddX+f8SGWEv+L-8<%x6Ur6r= zT&pnsbZ}76jDEq1g8tTgsh>Z6O`5On>*+c1^wU{-f)4pB&A_o z{QT?JuMb~0-9u&Gym`sT`%KNv<2NKUhG?bMdn-+pkdUyjw$9#F@OIMFsYhdy^9}DM z)t>n^FSo2_&)+}2NzeS1{+?F(r{Z+N=6xl4N6sWxso@@39kk|8@}ECGK7POAG4IxE zmoMIY`Q&4DGv~YdpRf66-CV47^5n_HY17+SzgsOgd3MuqnvM4}{qIN2|F8NteedGG zo1QA#N=w6fVhlXGqU)v4o;|DDB4blgaBoi~SF4hN!GyyPO-xNi#l*@=N{$>mcI@a; zK_@l8ITdejZQZoV$lKeSpTGb0_4Vv*Z1b#2y=uR{`Sm3u^{l?s?YUYLPd|P0`|022 zKkR=_>6`9f^4?3m<%r6$o<}{ew)WOf_o~|Id$sP%IfOq z$jG%38y9Wa67qBEi4!MUxy4s)onhZ~InB4cPWeM9?;8)UH|h5+cUth?_;>4R_9Q1x z#gw%fx&L)_yPft%D4mf#VFW!FM@3;5*OWwPE+O^9n?PgWe*M_(DxBp8j zro8&Hve@R?m;00MO8*XLNZ?p$7o4Azw5jUrt3QAKSeL&$Gt+qarcFVX{TFdG>dPhj zF<*Imp0 zW+u!wp~bzuy)}0AmzH>*J$trApt$(6q;Z;n6Av%1xL!;~Qc}^!N3KpB?S}*B^%$Fk z{Jy%9KjqVE^V4?cPDwt0^EE6)M)Aqkr;8rnuUS2F?yo65z4KdQqi-`LmcRS5^LW3U zuv1*D$%mcXW%+O785``!e6z&)&YR{r~Upp+ipI-rn)?@vTmU zzrJM3%gfi-{|{X3CMqH#AtBMy(jwqw_y5o5uCA_a+svFioSmI>a�`%*@I>{#6$H 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 M)78&qol`;+0Ak{N+5i9m literal 0 HcmV?d00001 diff --git a/doc/book/src/images/content-updates/sync-subsurf-case1.drawio b/doc/book/src/images/content-updates/sync-subsurf-case1.drawio new file mode 100644 index 00000000..385c6fd7 --- /dev/null +++ b/doc/book/src/images/content-updates/sync-subsurf-case1.drawio @@ -0,0 +1,500 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/book/src/images/content-updates/sync-subsurf-case2-1.png b/doc/book/src/images/content-updates/sync-subsurf-case2-1.png new file mode 100644 index 0000000000000000000000000000000000000000..25408cfcc4290ab9bb830824518b0a46cd1bd789 GIT binary patch literal 26210 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 bpI!d8_sP5e^D`M37#KWV{an^LB{Ts5gHhMH literal 0 HcmV?d00001 diff --git a/doc/book/src/images/content-updates/sync-subsurf-case2-2.png b/doc/book/src/images/content-updates/sync-subsurf-case2-2.png new file mode 100644 index 0000000000000000000000000000000000000000..63ea066cf2e69d339936f24f6900908606bbca55 GIT binary patch literal 25821 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ℜ7d?Pq?wI(mT9(FY?nw;T~il_FJxnl)A^@` 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 literal 0 HcmV?d00001 diff --git a/doc/book/src/images/content-updates/sync-subsurf-case2-3.png b/doc/book/src/images/content-updates/sync-subsurf-case2-3.png new file mode 100644 index 0000000000000000000000000000000000000000..3948988d51cf3f2f671bdfe53e81f9b6d1ba1ec3 GIT binary patch literal 10069 zcmeAS@N?(olHy`uVBq!ia0y~yU_8XY!0?NMiGhJ(ugZlq1_lO&WRD&6h2cL4F4((#G6Mqxdx@v7 zEBh-(0Zs#%OHcMjFfhpYdb&7l;y^&k5OcA2oenM`~MTFPe_IOCjRHcx2b zbY#q(9(9CEAYb!|{t>SFMvtCD{;n~5Ts2v>;wE)HS+rC6#;(;%t>ePDSXgeAOzdtr z!*WPtzkOQ#}EpU?c97hYF&uJYW`1-p08W?*Po#dGr>0|Ud` zHVIaS1x<7y4kcDICwQb7&2&*(xnjkN_3Piicwt~>_N-_pQ{#cNXV0EF)AM$%^WFv5 z1r|&Bs!dK!Pk;XGS=Z4=|88-#9$K(q!G#L}vM0oASBsZ4JC>K5-@a|IW7A)@SFi6> z?o@lnxHCpis52-ycxlkffLpU?&pv+S$dRK*3oW94?so&}>AZGi#peI1Tff9SSl4Jc zYyNzBS=rdg$e&B%pM3tAnVHGR$e0t}Q03UK;AX1l79130mUH7m_1@;i&6B$)pS6${ z7JmHgTi-70(x*$GhMKRg+V11$*Vo&dx|{C`_b(=PmszQY+juoKHP4t%OV$-{XZ_9o z^S1A%*LU}A+qF$$`-6;Y8<(}IrKzu7yY}SClR4qdRgU@zCaWA5U%dBtQ^$#ptsAp@ zd)R*Nj}4!0W2o&o}c|vo49Cp|L;BD?^o_$v}TdJ zbnZ&=66vHVwMH{_Oie?78Y&qr`o1yu_FuE3haz5YytXao>HLi!Psr)+t=X%jq&!7F zI5;@fNb;hJ^UCkjU&a4>B3<*zr7qc7x&M52R*u%6Wf>p;Oo$fUzGYq9h00aOU)+74Fn|t{1VQDETk=I9)HZEWO{Kdt^x;i?~&dye!=rJY!=a)tE9zBe}8@>)Tv*8y*}_nhTnM>LLiB&XT^ke%S>Hs@&K z!P;-G@Av5U!cK0s)~DhU{5dv?-{`L@6H#2U_Upb=Uzt{P zb{Wo^KHZ(evf#miZ*Om(pJ)5}`E&EED=VHod$wrNqI2iY&6qJGc6Zs+Cr|eL|M%NC z?Tm)LzIsc|zn{-rCMdi2$=KJ`e1CVhWkT?Bzm?x!hkNJi#p_GuXaBwU-{nuq=WCNp z<-gus^L1ZIU`0>Jx7*9UuHNI1p}$j_d5NNEfcOyyY}f)k&{Pi zWoov!w&D}l^Eb7wa4!hcI+qz09WCs%E%$a>V&cO`kAgx%j>Ode_>joY&+qSler@!2 zt^J?gZojWJT|aJ*2ggi{!bMs8?^Uc%%`ABEe_ii}?bYwxBClTD^M2Q^CwtjVd%s61 zIf=39&oM9l^yo!xuys#vqTvp==97wSwoH^;Jz;qRkv{du201h-cG75nwCWbKy+ z>Fr|Y`DY%O{UQ79`u);BcVC#g@U!^OuQ&JYuVS3XBWo7FA^GZrfpML)N z@#Dv{XV11wQ1zZxQCT^4`t<7R>gecb{pf9L)~s1`y!`vSyR+xbJNL9`@uEc`zrTh* z|5I0=wP)|$;zx)~udi9X`gF~dpDzp-3kM5#ub+4KPx{1#3lr1RpU=y!{{5S4^Y*T;E<65* zl{RrsPEMtzU+?TJHeD6R%-mckJpb{n0&8pQ)p=pI6(175%(!^I$4Gv`bGff}bBh>4 z`UCCe$45oYnmBP|!ojB7+w;3!7R@wH-?nXApNwUYj@a|3PxpSk7Twm?Hgo38yu7^W zda*%uhMJn1Mn;oPKb>b;eC*hZj`d2%#>UqFc-X!&c=@HA^4QwTbFNSOU$WWi`+>0h{+Y~M=KP-Y zdtz<$GCO?^p4#{G?d?Arw_I7fcyaSa@80%*M>)$Lb1Lrltbe_par1UYx%(#n(I37Lm;rtgh2Gc%m`*0Ort`4}gUdmr~K{BrEhYKB+Kyn4(`O+Qxb;S^TevSo{a zla7wgGT+&59EK()bL{K)b#|U?g55s-3&%I_PYchRay;+e)vEYi6&LsH_&%-F=7q@o{}bQJ-kZGf zxk|OAXY00C@3qg|YjIM%-O9JA)ppCB?65!T zOJaaj`VbnKS3{@&0~EY zdb+;3sp;LF#p#KO3nxyTxO(;LcKNy&uU~s}tX#cXx#iA|!pFyYrMvuMVq!vmfBkeS z%IU;T?n%Ys|BT{wXnKVRv(d)@!(`?qb|vaYVUx9I7PkB=AKdtW}Q@8)a=g$ExiW}D@5 z@$;v*t$cJRBP=Y;$;qjrV#l*9yVLHzl0X0d#-%$(_22${6h40c-}SeB-}w3j)n7HA zP`vhAB#SZN!b+V|b@4dXaV^`V1H^-+3c`XfkHoLnj{#!_F?Aga3O;+7o zH9K_vn;%bhJ*hf;*G+rf)Ym1~uNuDRnDhJG@y6Gz0or#f#m@Pg=bM_C`j^c)@~zEA z(%9H|VZe$xOj;*&BR1Fh&ewhW=IxCBhY}Hvd5uMp8Y16LOp#N*{Nclg<&zishpca2 ze0ZDxHeT<&3|UL9`_*Q?$%wD}r+u_!S{Wx7SCF3kS*vSTRhPfnu-d!M0O|{Uf zwCXNT$NTfx*5`k1$~&A9qFi7xXUi6or|y}vb3#w7QkPvUI$tj>jZ0BQSJ&6r*!BJ^ z*1K&IS49{Z8P9~Xc;8M5Onkpg?XAQq9-r{(Hl~^GAvboP@$vNYyY}S!?w8Sf7aT4K zSTD%_)$8!5du2y$lcPS~D+4vVg_1%xCv7>ueY>`Wg_Xrli<>>04Gj(R^53u69ULAP zwXWun+T^mm8)HHCHA`IGArZRgu&tHVte@}BC_Vx=%%jS4K>p~vI7=cl{<)OI;;x-J z6FsKPnzgFt_w55`&Yn$9N_zC@(Uy`vkfUQ4$r`TOo?;YPR#ujm_l|*|N0h78(a~|? z!i81^dzb9H%Ds!xaFr~q7joj{Nx|-;#%X5)_DsHd_N=e^WtYhO+S*!o_x6n&4X2;J z`moAzwW8bBp2o(;M||gAy~^6Qot1%Oo%B_sQ_r=pU%8?ayKBnZvy2Q)7gtOR zP++|vAkmxEE4TjFfd&x==LC~grZb!aS$RAdO&Hx4-&%Nn`?*91t_7S1Qdjx*wlCt6 zn837wZ*idR0+}wO`62e@?_$78lR~&P;vdeOFkwNAq?p*U2n|im#A;^7FH%V%m#<#A zqH$^R@yCYosvz}88%%U`)+}4r_Vz5xg?J0|Rk9+ECm(;DqVBnS_ik@5uL_%cm+RGK z84MKNw(=Oe-MlBppkT3ronb*M9eRC~^ej<(i~;LTo;f4J!IGDkmzI{6lP}v4XZ+&b zyR>TQ1@T5Rb*!ze&CSDg#J*p5(-2`}Wo>P1Q}SnwSSV{4we7w`?Obd9>ql%Ark{3I z3e3t{6{02URb5>CdB%(xJ9b#`vAat!_)jIKi^#CR-Js~Ag{G#av{}xJz4s1YJb3cx z$+S7Wot=f%)$Vua?)r4;)2i8_XUwKfo!Z#gc=F`QjT<-STxVRMFR+-zP9pOH@q&Ys z**rZxUrt;oI8iXEv*PS8)7mr*#Upu>?#}v}eMG3xCFRJ0SjL7~3T~#Zb#->1Bkui? z+ zcK2q#-#=Ax^^CL2cKiF^{QDzf-=Ehl&H!i5D9`eNO-wzls5a=D3# zhWYnwI$aL^nHHgAW?)cIR+hHAfOpc|xoh_vyH~X4>8%@E_ukI=pK^QWYt>Ws8=vS4 zR|s<`7VmlfC2x;e+1jTO-bXiuXq`QGE^W69L+rAoo_Dvm>l+zu+Pt~=>?~8JMg?u{ z*I%#4tGC4LF3UaG#Cm;weEsjY+yDOgb8e312yH#VBzt8iZXwWO@n zvhvTxggL+C|NT<7uKsfJ>9c2A)5Y6azgsRhd37@|EJpij{JoF)|3g3Pv%9yedOKH{ zn;AXQ;p2X{xt>9yOe@YD-o=_@S^T7^G9f{s{cvVpo}QN0t2b|Yy1Tpk`_)@|SD)y+9;CJ#ivpL&Cwgx3{}0T|6_>I66Aoy-!9{to!q)Pxq=` z>pD9hK6A#$+>A*|+;k(sI35)l#MGuy0JASolmqW)iv zu<&GVaXkSi3z@!0HFFj&ytUqMum057oq_*6%ic+(uiw7t5vSsM-CoOYZ_D4jxuTw! z^T*=Nt=sIJyEiXCXIJ&3L*Ub^ri1=52Gz;`xEOf!Lzm6a(bcuJvEh@qvq?QAlAr&+ z`ujUkQPIfA$e+J{oqGByc)8!tA3uKl{@pKOxM;(M3kMD;sHn6Ed^#!~9}*U}ZTog% zCn;&^$B!OyC>9nL9{!|%=gyTaKU~_9e*WnXf4u$O?R_6@<LNLJ3@7%}7$B*|&ZqB&4=*SV5=;+%|Pfwpc zYu39vJ2!9GaN)#>6IZW(JnTkDcLdaAVcr@ILqj$^5hFVZ!h)-Xt=a7t>90ZQtRmGcE`QZmTlAFgl{~`^=d$ zNl8gl7B$$PT#UQ>@CwH=I>)zS3wj^s9`^Cn7y0SzzF!8;Sv5BRnrGi4k z+f585@<}1hM~)pkcI@Bv#i2&uQ@HN7RBwO3cI~>ipS8DM-CDirpnIXWjhY1fM*(PE7qT53y$gHEk-`v2U;`!Y28+u|42|sw9d)U}Ppt_<$ z!0A}8^zt7s9zAm6Sh;?^zn9moO{u3hshaGm z?_2WSzG6|p-rqtDUoIKkIa>1NMWE9O^ZPZ$|Ni_GkE?L}I8orzrAtYc@R#uE5s^J|Tb{1sH>)py_lSLB;&N|2o#^i$_k_o7k;`6q>@Fw6FZbT( zZoR#|_Wyo7)(&5%6T7RVqB<|Xe!_-4*K6~I+4HX5sro-VSoL+--kBTnj?P?M{XV>= zpNF*}arr%o-v0jiR;8~te1CI5T7Ksjf3{}Zbx+(PuO4piuiF`${&COtuOai7Z29|2 zTa4k$G`;gzw%^HDZu#@~($_U#T-Hy&yM0M|+@It2H}7dMTrk}wv-p^@yO2}Zp0Dk$ z`_`+hiT339`7ulLwlpilF1P8)S56-66DZoguv6gD#|MmxN3I;1@wS(VA$IY-=e=qw zDmFDgHmq6GBT)46($XC}ETW@tpE%)hDo=XWtn;xG?)-Xcrubxj>QwblNA=ImD0+71 z=!+KFo$TAVZ0pu%n0>UAJ}-XP&i2dKh|`AgqVr5273_(h_w!4cF2f7&Z_c>MN>I^UDCw5=F9#_3~_wMJnEuIwZv@)xD=WV>}{g;mh zf1G!=Zi~@=HjDG|n*G+h++}YwFf3SL{oJj7SLN!3D=RlWR@r9G!tka0+Me#rfXT9N zPoJ+p`Ynv1;oil$7d03dv;`J3FofVIwmkdvdlOUnHgiUX1^jG#^IO;%8WtXQv}Irr zJ)$wFiK+kDy|nvY&B&Q{fPsNQwZt`|BqgyV)hf9tHL)a>!N|bKOxM6r*U&V?$k58f z)XKzC+rYrez(9YM%MKI`x%nxXX_d$t3@xopjI4}}AQ~oh`)DvQFlfMSD9OxCEiOsS zEkNio3o)>?GO@5SvViE}TlhVTfr0Z*RY*ihZbe#VPAUUK#hkaXvBisb2>mr(wd=Qm zp5g)d{)3&y*48t9bJMgZ*Lo&S*r+D4bHk(?pI_&nY+&|KOUX%cnWDa$k#osAJKe1% zOlLkO*(xitah!YE#rRo9p+qpL|ELKQ2P4Z}2KSe(+P}J67II%W^3Jj0!T&l5HUrs) z2jN1t>lm9}C;s1;|Cdp~CR)$Arh9q4;Ia4S?6#ZF%l~}+`TOei484p^ij@y|GEgC zRIba^|5uk;&(S+c|Af{v@o9Mt;hi^pRJ70Y7AkqZpLyxV@j|7hn3On%3br5l9A`HA z-%%(NXK;L^ZqBQ}qOk1e`M1xbZMdi1uRC^SrfR6`JEgVNM`MoJ-_Z!45xP4f{@A;s zI@em6Pj!*Y-?OkAtUP^RWm03OkfT7le!?D(yc6r+WM6vT_Fh;WQ{`P_=D%bbZ~T+_hMdnbPiySnP_Vf=_+Zw% zUtcQE?+~#zUN+_J-anTfC(E?$EcCg}nDOabdU?F$d!6SKUL9J!fBBm?>c5=kzn_!8 z`uvm5T)TxnyYGH5e0yh0`VF<$ZxxpHpPnmduxDEDM(eYA?T@nGUkvz}9iO!8fX=-F z^MH`uz8io1G5YdMW9r$@hv)6>n!PG|!|I)R>P#k{zdu^s&E0eF_MYy}=WX$KHTl-R z?AmbTwU1_U38Rnt?uR-mjQbC~5Snprj;>R}ykh%ZvvzyO-As}#`261YuIR@qZ>c<{ zxXFj>do_Fi=5D{iw?UTUf&|m=Io2V!8}~NG3P?DeJaMp`u)+G-(iaa&#BH8*ROE}wRh7=7ohwgP zS|rt|utvuS+<$)7;(YNTgX=2yo)y0-5?<ZO!p#d$OOD3sPQH1lXU)#Vg--8Q z$X>60pqTL_JVVgoSx(#UdFsW!{}N1EmzT20Fn_8$Am$u#QepO5>6B=RC%+7KZ+@_M zS!@fRH`9(gC-&}?-YnN^_p$O`ZBM$zv5D#zIqn~GzCS6G<<7rUscF^6=l&M_6X@sv zd0wiB4Ry=Q`)*ah)@bBYT{uPh9>e{FKScbJ~0MoG?`tJY9J; zFmN-w>QvtB!7?{)NNdHyiJ7pFYjjZPl(aXP-NfR_ihXcl~cQm^+_|Rd$8xmS)jTheC(K~h4mfYN=MPgl@I~VfZxFx$`=HEV**1+CB6ZmfQ zaak?aYv{}r=Uwo#WPN7H_7xjjvKP+ac(a|ud)h+pMgEuH?zVJ%^NYoOP1VzT8}-j{ z{(DiOoD&ji=H8Gc(-K_f^zpWOXY|wC{)T}DUcO4U!4po!isScy58(gOa8I-_N(V2o+>ahND3PwNl^w%ilIQIaW#U z{L~q#>zjZ1#HHO_U(AX`S8iM$xp;!tZ0Vl?jy_YAkIU(94byz{zr`$YAkV~W;C_g42l zRoc=%$x&D0!WXmL)B=r9ZQ+bh4aXdGZnH;h zba#Drt<{q8Nnfs(swFvj%y$da{S|8QAoF|S;a6Ap z);Mjtwd<4Q$yJdnUTL1J6SQ&fRaf!mjgq&K-RaJKRJgs0x%zf(O{M$7U3ziymNlRG zzBLyv7jEY}Ei#kCj90xa_HL5<$0sXZe*e-a`S93T)&K1Bx4lo^{hy!7z`(%Z>FVdQ I&MBb@0KaK6BLDyZ literal 0 HcmV?d00001 diff --git a/doc/book/src/images/content-updates/sync-subsurf-case2.drawio b/doc/book/src/images/content-updates/sync-subsurf-case2.drawio new file mode 100644 index 00000000..c1eaff66 --- /dev/null +++ b/doc/book/src/images/content-updates/sync-subsurf-case2.drawio @@ -0,0 +1,287 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/book/src/images/content-updates/sync-to-desync-subsurf-1.png b/doc/book/src/images/content-updates/sync-to-desync-subsurf-1.png new file mode 100644 index 0000000000000000000000000000000000000000..3a56f260a12df2c07b0d95f2bedd518f2d4cb061 GIT binary patch literal 18621 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ξ5oqLG$`A_9_05Zk(PP|Jd=jbcma%tD;e3l+TWJ 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 P0|SGntDnm{r-UW|Uh!wq literal 0 HcmV?d00001 diff --git a/doc/book/src/images/content-updates/sync-to-desync-subsurf-2.png b/doc/book/src/images/content-updates/sync-to-desync-subsurf-2.png new file mode 100644 index 0000000000000000000000000000000000000000..9cb6210c6594e2979d7177df8865866b098eddfe GIT binary patch literal 18069 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 b{rCNsD%r!pz`)??>gTe~DWM4fMP1|1 literal 0 HcmV?d00001 diff --git a/doc/book/src/images/content-updates/sync-to-desync-subsurf-3.png b/doc/book/src/images/content-updates/sync-to-desync-subsurf-3.png new file mode 100644 index 0000000000000000000000000000000000000000..34bf7475ecf227af341f314e02e4a670861ce849 GIT binary patch literal 19371 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 literal 0 HcmV?d00001 diff --git a/doc/book/src/images/content-updates/sync-to-desync-subsurf.drawio b/doc/book/src/images/content-updates/sync-to-desync-subsurf.drawio new file mode 100644 index 00000000..7a72e0f6 --- /dev/null +++ b/doc/book/src/images/content-updates/sync-to-desync-subsurf.drawio @@ -0,0 +1,223 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/book/src/images/content-updates/sync-to-desync-transition-1.png b/doc/book/src/images/content-updates/sync-to-desync-transition-1.png new file mode 100644 index 0000000000000000000000000000000000000000..cd69f3c34da5cf101bd2d0703225b7e695e1c03b GIT binary patch literal 9299 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 E0Lwg-GXMYp literal 0 HcmV?d00001 diff --git a/doc/book/src/images/content-updates/sync-to-desync-transition-2.png b/doc/book/src/images/content-updates/sync-to-desync-transition-2.png new file mode 100644 index 0000000000000000000000000000000000000000..677a0cdb1b182a19442633be3597337c6c869de9 GIT binary patch literal 15177 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 A_5c6? literal 0 HcmV?d00001 diff --git a/doc/book/src/images/content-updates/sync-to-desync-transition.drawio b/doc/book/src/images/content-updates/sync-to-desync-transition.drawio new file mode 100644 index 00000000..9843acb6 --- /dev/null +++ b/doc/book/src/images/content-updates/sync-to-desync-transition.drawio @@ -0,0 +1,203 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/book/src/images/icon.svg b/doc/book/src/images/icon.svg new file mode 100644 index 00000000..b2f16d0f --- /dev/null +++ b/doc/book/src/images/icon.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/doc/book/src/images/wayland-architecture.gv b/doc/book/src/images/wayland-architecture.gv new file mode 100644 index 00000000..f2c35075 --- /dev/null +++ b/doc/book/src/images/wayland-architecture.gv @@ -0,0 +1,36 @@ +digraph arch_wayland { + edge[ + fontname="DejaVu Sans", + dir="both", + arrowtail="dot", + arrowsize=.5, + fontname="DejaVu Sans", + fontsize="18", + ] + + node[ + color=none, + margin=0, + fontname="DejaVu Sans", + fontsize="18", + ] + + c1 [label=<
Wayland Client
>, URL="#c1"] + c2 [label=<
Wayland Client
>, URL="#c2"] + + comp [tooltip="Wayland Compositor", label=<

Wayland
Compositor

>, URL="#comp"] + + impl [tooltip="KMS evdev Kernel", label=<
KMSevdev
Kernel
>, URL="#impl"] + + c1 -> comp [taillabel="③", labeldistance=2.5, URL="#step_3"]; + c2 -> comp; + + comp -> c1 [label="②", URL="#step_2"]; + comp -> c2; + + comp -> impl [xlabel = "④", URL="#step_4"]; + comp -> impl [style = invis, label=" "]; + impl -> comp [xlabel = "①", URL="#step_1"]; + + c1 -> c2 [style=invis]; +} diff --git a/doc/book/src/images/wayland-architecture.png b/doc/book/src/images/wayland-architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..2be7da007d541a121cca973e7a95cec23ead2179 GIT binary patch literal 26968 zcmeAS@N?(olHy`uVBq!ia0y~yV7$n{z$C@N#K6GtA?<-00|NtFlDE4H!+#K5uy^@n z1_lKNPZ!6KiaBrYmd6BN|8M^xTlx^IdUkvDBkc9ci>QzkdaObHUj@2{tS~cXj zV~k&XY2C$odFmFXRJ}mQKSFzUbh$sAfU)-9Gh6|?Aw*F2@$-7l3ow5n%!Y_atb59CkP z3rzB~chX4M#j)s7&^G6Qb0vaXHHteotvcoY&v#k3!m9r8j_cQF=q(aU)e8(;f6g)B zWQpLC*b|nAOIWvN>}6fFhU=aA*5_wzk1R>t#x1kvXt`?Iqa(Qt8w?J;df7YY_iNWD z(-W?mlo(BmU0GW3OG%aew9SRZlVfg8FINqO|^Cp@6rXu8Jg?VP@EJG~BG3)av+es1cc-Tycbr0FwUc#!l{C8OZ=TV2h=ZOsoh ze7ssSb9(gI%i?tpB_1ECdADWTq(wn*EShWYX=twA9^2e~RCq(Gq}BDG(W@>V6a8~D zTJYo4oexBved7gFx3(Bf*U*j&46crmZ4Ca)FyQ#qR$&Ac{}+tW`S4M*|^-WqgOPDzLb8rLU{EQ0U4Dau3v0t7|>t zv%~7q1FJ9Z7}hU$*#L(YqF@S#KiCfn~j~^ z-WA*bx@vv$zHnBC`wpYR0!R0VE2hiNh_qp(+gn@9 zruiP}_nsji5?FNQysFm8tAYm&Kky&_;kZ@Wm6=)dzx6M>C^qZon?;9%idOyqUl;MUEOk%q zb%s>EK+ko2KYr$Xjd1Lpb>?jzqqgyqr%GC)-)vWXx9f9Liy`^e;vbL6l6>AGI(wqLiW;7hk!w_vfd#M7xWOu6o!QMFyF>C3yJO)cT6 zUdxfIw_n^4R^Kl+zf$R8y11-b(VlZMd8s=}Zz`RNSu`m|=0KXF2AgQ;*2%&yGqqnm z>DzRCW;I90inB2r58iow@PvNbZ-*}%8g?ocaXl1oTcUI3Zd3LC14kEri+bPZrk>oQ z{xDI*?Ph2Art{Ja*Un|Fi#oYJH2JFBo*LHU^CWJG|GHHn*8e;4$7{W+l0*Kdv-y9k zGrZ4j4d9UWuCQ?S=QhmTA=Prz{?Lk-e&w*DSti*IwS%dKpkuJ7uSfs^qIf_oNlBb6v)>pX{ZP6%J-uUW%C~oH5|~8c=hP-$Frf@KeuM3>^U}(_eVj|Tl)j$@dw(PZ@ll-J$)dN z*&)+1>|Ikp2XFC);?%Eh41y;={0Q0;eRs;58ir4=q~T+m4=>zkW=TfjwI$ z=6Z~6Y3I6it5siqTw7$waPsDi$6dbfudWX8WmBXwbLbZ zr&Ypz)gSH;q8Yxji!oSyYuRTOR6Jo`_qwzSq3%swH@-J`&b6H7q&V;B<4UEX?tnnf zi(Z#zy%OMnqr+Pse&9Q@@%7g8!B0dVe~H}?8DYHmX_o5#X(yg6d=z~{ z=gT&iIKxj}tG9R9eR{;%d#7iXrI1^dhDPR2gNrY|&EBpnui3i$JmZ2zT+#lF4H+BX z&HDf9wSu*L;Y*1dyYEF#swunbI@3F3>WcZ&60G|eWXejXZ%fOWa`sTizYn~Q4l2+3 zb5o|>m>aO>Uh|KhW77J0AHuq>8b6TjxW7K(a&^LHh6gW9r-Ucn`rziKa&*hLCHb+Z%XT=L z$4@%HZkI-J=c-KxO}XJmmOhTOsVZ~(;+>J1u)+5&<6_xYDS3Yn-swp3`6)HkCSq37 z6j>eLg=;xY`5InX8#l47_x~u-b8ni*i33{|e5CpIF|g}1>)y4U{4Ppp(n;&Mw(o}- z<$tt3{(RFY!iD)Yynh^FMCjU&ed_A+_CClhpVc*~G(}CrsnkHh$Ti8Imr{P_W^c zId|%vO|KSJXSlTPv|?zecX@l}&Mp^0nVCHM4Me6c+MfDWOSdzUVZ()38Zm1Z@SJ(JUV`r*mi7r#%2Z*_gES=`B0T+GzKF8G0)St@1SG&Z)I z4hl!MT|Tg%Q8#H7Kf`nRE7o?3%*ESGzFX(4X|K!^;Mn+2;a!_kIJdWLlwQ!TY|o^7 z5)!W;dg|=63CeF!(qdixecPhBZ?zNda+W(A)(OWg>3Xlb{>Z}98{!qu&S|VnPDpI& zNLh1JTW&X#;-AA4r`>*Kmfa!O>wRj{K32C2H<$tw@1D7MRz^QwaS4lzncEj}`-CmF zO^XU&YXo(vTKDaQRB&73arYnJ z_*>K!ZB|w#iwn#AWwJhJA|879SKYWIi4i zVz}_&(5`>^kC%PlkRem!JYgz(tnQcBZ07121rviW9BOJ2p8HWp?lJqq{N(SCq+`!- z2)&+_=6b}f{H%O;=HZ9ZO)WeHR}*fFzGGgvw(-xTYirkJtmu}Nf4E;>!GLRH<_Yb# zZERK1X8-1OxM^pu`ZTeu;-9sXuz*bSA0dgC2QRT4{uNs8xAfneU$-i%1h&st)M8!w zRKV>2oApIH^SB#Sr<|-2c1qF9v5JdN+|}WBW4%KN*PiVO$2^vKD+)b&abT^4&e9#V zOGR7-E^+*26J9W-q26LqP{Li#%Wej-TodQqOHk#E0VS)rXP+m0VZQ7d^7)Hvkl3bA zh4LP;vYDfk0iWSdXw*cHWwyIrd&Y*gJ<~rsT`x9P2;uP`~R6f@ zRz7{Zgk2mD?n_&=SxH=5KT$H%Wo6_Z_EOcTi0SVZ3aYA!D5R)#HP2Yryh5i>&+UkV zbLYMAH9C(^wU{&=b(_C8;o|;d9b4Ay4_xydfJ{i*Uyhne0Xr*5;T)HH`bkFuLo;&5x*hP%9z zHGQsMlsOf%sOeL_(qoRe_*MtI^?oW^ZLEg_Uu=RI%%V*dM^EhUoD>l9 ztYP`D_syznk6vWEE@4$>FpuGEo=>>4=BXGbjzF1N+Z{L*yPRiw6Hj(@tz5NgSMBd_ z_v`=9oiXFanZ&}vLN4u2k3OU60-=*8O}ex`em|$Mnoi7)3)ildeSUV39(-Vvi4K+>mQuZ#HK4r?D%Fk|J{-2(% zzg*GfspCxV4lT=)7Z*-URCfKpe(l=YCnqK{GP9Z3=$M*@ez6Y?4Q*^}T<$kFD5i5s zWC?$-z}3g^-sL4He?G0h|HZ3UW>p8aW?x_CH&^Rdy;yf@M#hW@6B2TA)*O)Xe7s`5 zcgHJFAD=gOcb5k@azA)_db*BS_tB)noiPgoA|fJo*430k&%(H zyUTK)&DgTVL|1q1Lg)6d(9qob`)tk4zyE%}KRlv!iR6@>Eh}ccdGlt~DlKj8)oFb{ z|9n2*-Q6v3Uzd}WwQA|o)TE?E8$Nk_zA{6vLEw^AW@aYCtn)F(#>N-_TUc7Qwzg_6 z(ovFp^;~FC(xpq6Zse3r*NauLtT@oXcz(Y9^m0#^BCri#zI^eUYjt(*(%U@h>dRNG zSh1^ronTtvGl;fX@)0Yt4>T}}ii%#mc(F(qk^)38uR8Pg`uh3HmZ|aTYw&~O$ET`l z*OQs6mo2-tzy5zm2glB7E-LOI-)4r|i#M!Yn_E+}=g%v}wV)8tdib&8=FOYarcIkP z-)ZLRkc>J#MW08Xf1W&f($&?Kjg9TvwQIc7vqV0Bdg^UAKR-8D_or%3PL7bU@XwmM z?p|Tm1!q)SB>(;U_xs!1-Nn!Srt8J>@bGkXbr~5M-MM?${^yg)8@uYilA+8@U~vos*xPnfd+QU1{5@Ewg7w*VWY>zC3yIn1Iz(^KqH7U2@ti`h~AJuf^woZ;WUf7A71yLx+TzrLC}ZCcp+xV_W#&Nf=^XO=|j@arvZck6owNeoR8@FyC%-eSKhpNlV8r}LD5d@@^?BqIxHV< zrqBQR<44EV2~(!1xIT-Dit38<^ppU_def03M=Y$ZH{aa4za%d&kB^VfG}^6SE;lXh z*z?cY+S-g8ZoZkQ?0&7bWzCKq7W(@BT^m`wy-$Dn^2My4Nr~BHo_9x+P35N}M~^Oj z_-(oWd^L6T{k6Zp-P)QxbLLFr^m8WW=HhRQ3JWWLeOcMu-2CG7ks~f!iWbfAxV|nn zes5K1WaP~&-8VZA1w0d4q_A`6&cp5e`8)nTIM{6Zcw3GcC>~6ATa~~2^Wov)S^ASF zO}dd&_Wj-6=;};wZ|_Ej33KP(T^qgqnz&y|=P@ykKml3VxsxVMYP)@XU2OHoM@NO# z{c1iQ6?b!U3tsMLTk~T>M!2V^=iSI%o}QkuyGmAC@AYw7G=2HS4^2i3&ZxRLu359j zrI|U2jYq;D``ViC_v`;ZpI=}1>x*Xh(O+*ipZD_iW>is8xe|L$&C)WmtC5vqu66md z0*ex9UrDeB^z`)h?b~-&J~=P%+|wd$EiISr7i(&3@7}qS^-WDp&1?Ej8NTC(4mJIP zCQ1QY+r6t+t=h$J$|Gk}@$b)1=XO3*b8~SHmX9Al?*H@Y^zH5WckkZq?dh2`dGhJg zr@wyvnjO{A*;!a#KKeOQKhpQ{!-o%_ zKCN1{>erLW{@>o+jo!R>%^DqB+r9qt?JmXc%D%o1lsAl~3mkoUclY;0t=!`Jac^F} zT)A@P%*m5K|M>X$#*G_){?zcbCue3_R(*M~ulDz}>C^ZB|M#0)OlQN!jVmq9&CJ3S z1irkz9lpyuIx6atbk!8bR6RwmtrZ_1UAlD1F!|Vre0Vrn-G81M>9x2x^x>EYt$PEJlu>EZXI()rKNAL4%g?5-*|7r(xs_sY0CmM zM50aFH6*+>M2upY6=g#T3O;PjzW(U(V{R_4o}QkZoSbDoGmT1KTyW!`XJ21eS^0CR z_w*&Zuif2Ue!N%u`>U(k#>Sh?ruf|I`n9vgAnnD4g}$me&W47Dlhu4D{fb)jytBBt zShIMh>*r$5K*mKgQ-b`X7!tCwxE_3ceSMR5mq)YFbOF&1pPruHw8?0tx-Nr(scGuQ zh$%aJ7N1ddVLfu}7*mF~eYmgh*#id}jHVZY3iyT@GbDRen}7B5bgmcDrX`tmcW zGO2osr}T7nb@lc8jkecggbDef|Fa z{^e(K%{7WS1G54H18wBapFFwpt#9Bnh*?n)5i_Pun|5V=`-*O(aBxPsa_I13Ss57% z8Nb`J7o7=Z1C{YxKYS>d$)m&Y;PX$TlX;iKKw_pdZN6#;g@&qreSM{44JfVexpet* z{Qf%MnYZVyxb^!&1*-<9`&I1_QG-~nK#M-T9c~vkHm8{{^A4PF;X;5|w<}1U$Fomd zA79yQ@?UsC-ih(@Re@zMzce3pDv9D)JI`mjQoN(1W9_dmnZJYgD^1yX%Hid4u@;*Y z8Mg(zi|m~a)^f!#F)Y34@r$oNM_?<<)SW)z%I=Pij)&WLCx>RMs;X91Rc*@Z^>E*5 zyxoM$ky+rg;i`Prm)4R3@i?uf5HXBgWR!_j(Z!UTbn@yG5hI&{cMSy?%9tJ{*r zM`q5h=T=-CD0Q?%)@5htQ{_jtDt|dRX6m^fOG-}W=H^blab8zPXUbIr)`_z=rRANA zw3*Kor+B$kV5)-4r?ew=he{-k#6(1vtXz5XTWWE3z%wo8rDyIu5^$+!Q0#wc)#2r7 z-!Xmn3_Yi5P0h{hyi!ZntaDJ5@jg@*A8z0`<&CT8pOO%tU0O|DSfze6R0MjzhX+p`RSuO5p&{3^PvJ7e{O2MIU%o-JFtbYp~$x3{C-9e|>%Z3?nNm zYi4Gq)4~g@ML`?Bikv#Nv3Ti^b@faeZgMl2?1-@Al=>R} zL4)8p{z`j8f5bTc-s~-fto7f*TxwGFDqI7CukKvIFK?H!F~Vrh76t_?tEww20(rNK zi;2lumArUza`MlgKf}Vpa?GqvO|M?KP;haPYxcD@3)5Ru{bn8$t8n#wTUg4%@V~>Y z%=Sllva9I4BVF%#J6Pfy7S=A*++6wetxJ+xTU}G`^1xqW=e9+d%HG#GvV5~arN)jd ziz;3|ZGrg*OQwFU{FSs>JV<4Z=ZaJOhWB=tpFerhv#nBHgey5YS^8VCe#{PoloJ!o z^Y6v%sW3D)HrCL1adENx%$YOo?CeBEMU~xpc2s^|wkAtK>C~0;qMv5pGQPx@C1ca; zoM~BN@_LTqk;5JgGpu;Rn*{_qFMj*#_l2MRUvEy(;uRvo`<;^1Vq^;oWPg>f-~K(9 zweS9s{Zyj;?3#+*4ZF)=y$@$auc zz8+t{x8&uexz^>oN`>S5ca*=s7ria#=ZnStc0V38-?(wZ-~Mk%+tHGOQ&-OC&gxTR zyV-F3_+s&|+xC07)^YBdncQg2z+&=(qkGq}DLa$)S#=%p*};Eg?c7I=+z#H%tCuN% z(#VOP6}BZusV?Twp9NmlljqNu7ZiN>?3vnOv*zaJoiXnYG%{yzyR)zM_Vw%EzrDSE zcUP&mpWnT`)!+A2es1HJfA{X)zN)XUIyyKQ!otGL^Y87c{au!juz;ug<%20J=ik-| zcV{_%z+UDt`_()VUY#8lA?5kZ@eUd+-JyHG=dwB_9ZXD4`Tt6nNwFzeV18eZO-9kh z_11S}q$SICd|(hfSx|iB24inX(9y%&E(>scylHKaS7jK)xxV$+;VCC??vU=9!zA(I zz){9N-!tcQ@Xlq_|63;1(`sga;Fpb{ zk6@D-X?1mV3~v2$x`)l?+f*jy=dWM7RQ1=S^UvSk*!cL(&CNMx(g*JBES_&y%XQ$& zl@MRwxA*o|gW4tgYJXo_6L~mov#qUd`uTZpU%&Q#J@<6WtCV%jb#~FVVF8QPig!mJ zIK`8>v%{;kw*S@M{>6bOn>Xuz*}|A`T=LCN_M1PyMr|-Sbg;By`M-Yi{{FLZ1#dbx z9PSM%x+iZh)81@a7jr3P>!f(@|Mxnju8Gg~KX7^by>+eceiToxFq-%I@T~ZcyUxAX z-YVEvcQM5bdjh&!0Sb^2iaFw%o3>-}ZtUQcJzFk9EI&^TzJii^VrLr_Y`>i|ND1 zkCo5omjC-a|G!S`t`K+k<0npJ{QUIv`T6!;4?PQF`zJ8JxSB9^s+j%mj0ZO^ zi?6hdh+3Y%dWrMNT; zSV(BorcG7f-|;5AyR&n3`1)mMrgBa_8RHy#BU;&p^Pu6?nNw#qZ;6q39op~FCzhJ0 z686{H`}+F2XLY+d&TaeJ)Tw{K{P>2?`G5A?KMYS7byz25H>YR5-@}IO70=q#6b!i9 zc2(5Z6kqkKTPr2GzA%N^ZcfZ^{ttJ>H#}7MR-Js>s9@X7Mfk@sQds@n1mdv>+k*opmVxm5J#2S@ywwQE1*vfBM&UH(4lapIrP zi+@Dw)_qGAW_<9kc*(Pbn=Un7&)s8FF6Y_xJlVu2L|ov-{-y8)5O@DMv-t z%m~UqQhax}!A18#%}1A3Z=dtoInHoS?#Iu^w-&M;I4H$_-89@kcG2qBS)Nrjt7CW^ zip-wvNV;78RqM*70~_@htZmfp54@G2%i?KQ&92yg@Xqe?_fZiMSLSM5^J#eY^y%K; z?{?SN)n8v1TgqObS)A&c`fDdcjO>Q@LVuJ$=r;Uf=4Ozoc8Zr?Y3Xs^HQd;y(>0Ry zP4xkn{o7a<3Y>rR(ME8m>xva?;(XnMWtkL(HXAGme>*WOZHAf5y+(_&z27Rk_9V^O z$8E-)owg-r?UU<5Gw(c@scgo*S9fA~&z?uGbQksSsc=#@U!2z0GEt7pD@xDDWY^zk zxu@N|9=JwO|GXk!!!#@8jF_S#Ww^kmH&<|eH0ybzM)*9Zhw>S`^K|O4U4Y_#C2vK zmX@3-a`{#^qd~?S%L-pTh7bSdX3m<)zTl%~jE-22j-bqCr$mRZms2%wg66HJuV;Ah zNjawO$`iw*yt{r*s`)#Z14MMXt<`+dB;K7IJ$ z;pca6fBpYirrAfnnN@L3Y|=_y*D9E^TS-s${G*GTjTgl`c{4ZXX7NkB4NxzB&Hv0z zCHd6#6;BRc5?TBvA(JcDcSRvX$o-juCO@L@BpXykD=9KxZ!*ZW_`xKzhi6O4cb{F^ zo*rtky$}Bu9AK||_@ibUPn7WC=gbHGYo*tR0* z8B;;2ON`Z@!xLw+FBCZZt10@qaK|x8ITr^7mxPe7AC=f^15O@ZRQTaeh-|&7o~=t( za{uH_5kD%l%;b(S%KJ$7o$jA7i~07t4-$8rCI-cLJ55{0ATYnt)A>j_XX_-pRn~i@wfZQa^UCZ=dQQ!-nnz;%o&E9`}=C&-r8!kW|eaA(&`L` z7+Hn`_KV8W@?sZp^!c>KOLTc%yuGPx>a-&|3=uE%)G)y$g*(tM85Y=-Gz9cF&UU2+0?n>QQ}R%5YxZ&&ZA9hu?1fI zK3RW4?P)J36XWo0r%%P~tEv1|@{#rXukY{m1vqMISEswg?<`unU;)E{e}8{Jza}Uu z%6j1X_37uIciWo#ELoN`^Yt?p27aXn;%p`-Vsv?VHZ?kQ^ED$S@n+kSePP`tCWSAG_iPvaZ_WMw zz^!zpbvA5Kmv=1G%gZ@_CI6v3U%RM8PPFapA7`VFq(5+Exwogav+iqv+v<$$2S>tZ z{L<}JO<~22Ue!Ko+?0xw6!}r=8tDf|a8w{9kUEjQ4Q&ZE> z(D3*7_tO(+PuGvXcJX3iX=&~b@9^;NZ*Fcbes*T2N#>FVCyTmAj( z>+9#|+pk}}TKn)SD~qM4?o9i4k&mIE^vKEE3v)d&Ywo;x`JH?OY*sjlVhPgO1#U2k#=K*Q<8!%zMDS;hXu9rPseXpXDj| z!u`hTe%GV^3oeYP}c-6y+5gLnU%u2u`q3wd7{XU3h^ zms|Cq;%CaALT15}79~5Yyf>f!=k?|B5}S4L``0aAeEEgY_MqKWUthIw3eT$gv#|L2 zx$<{+e!g5j|IM2>$NJ^pKYDa&Ww5$f_td#_K|_kSx996eZFzBSuJx>0vwG+GEjb*t zD6`zruR{3Vqrk?%9X~}F*uEV*Gx1S1x7UX6N(>nVA4{9nMUCSQo3lh#UbyPCKd+#; ziEaDSsT=lNw&gB2tP{w4o0F0syxhBPZ5mfb*7e!jKkzy_vF*s(@RsX)D0?9A0y zyn7F7RGuo4b@4%cmm02ZXxzQEX)t`UmDfyP#2VfC>fwup*Ugr7XUNLS%L@xn7F13tJFZ}E{{7k6 z*-6?Hg;f{&e80fZz`!o}?A9b2mM+T7A1%I8ZOr=2Khyk(qzZpG@=mk%@*1#LUS z`h{(=KJOpll{3z}Za+U$Z&7L7-YQWM5tZ9DHl?qw%&{ykDUpg+nrz_v(@5N5`qLL` zAGJj}1q~(mto5(XQeu1X>FMcLuU-kO`Ai6H=H%o&c<^AinC_&|W|wVKjEWg={NcZ5 zzv9k&{=}Y-EId2-w!N}l`s(px>GBJWKI%>6R!@&y#0oo2Q?jcJqu`qeH=;A0J)2#V)=+J!RUZG(Cm| zmw!u0w)=S*R`+Nq&)p|cz+79$?0qurfyc8;OT9PEb*=vW?d_B)Q~2$EIE3*E%?w`l zRcuz^gZ4AZC%&@%=e@jCK=r_*0~tJ4x{k|T6IK?q=N;>jbXxe~Q|e4zW25|gd)BO3 z!_Gfrey-=NMM`^_mCYq~HpaI#-PYiAPZet^s^Dh~tOKt@y=XCYw!pQ3#KebZXPfiO z+v%)k`~2xsO-)VR|G(vtrXEimU5&z97V}<~G*}whzQk5Q_qIjxGoMJ)7vRxs%kp5t>`^*S*-0-~dv%4Z5Z3wS1UsA12ZJ-4^#pWfjA z>%+st;`(tlKOVMk%9?P3GgVKK$D;Td&-Bw%AMP?c-X~jJQX*qhv0;srN|Dn{Zw_X^ zITnW1-*O`N-u`%Yw)yjObE9__E%k{~E&@%}EINApI6FJLew@zc&gaYh=05uTlUrPG zN@%l79cbXxL|=dXxw+Q;vesc?ymGcxCFkZ?Zi!mw1sZi-*y8kXW$Y%cF-;G`S*FJD~jzPtSWxu->M-@I8DzyIE!gEn&S@0Q>9_4g0=$(6lxaj|D+w#{~wRbL)^izAakcyi_v!3Tif&F&t7t6YHT=~^!MlU z`Df=F6+b)k=+PrkW9ZTn&zUo4epwCqj)vNhst+xCOK6BU9e zae;vs-`w0Rt`iXu5TNkf%X(V%_jh|MK037t^L%@A(>VLunz+4HCs#QxVgMPnE%)}8 zEn9ZPteZ7UYWnH7cXodM_4ReMP4>4pH?y*`7+9DX8;sM><=ooh`EF~ON;{vdlws15 z21e$TOScxg_siMW>71Oe6R4%NDa|r->76@wl->K5ELoC~nJH^oq@tp-r2hZEv-2m- zm~mrwc|JpqS+s^o-T%L!S*g7l2O77;y1BJ&-MV%8^5tvhiOn`n_shz9HCf$1<&spO z#Hl-FehLCTGM1B0KmGOl_jZf9EBxo%6&4n{xw*Brw%)sU@A7j0aG!~?2dBr^RepMM z^2w8w($cTnwu?zhzI^heL)YSAMH>Ldi^wgx$G3?Z-Q+=}5-%hH}KcP~GJaPGcPaOy4Q43!jzq|PMMi2_wL=hdiCp%kB_U`Jbih2xw3oTon57`kM&AF zjf&o_F2eQp&6}8*n3S)}Hf3I3mYSY!U-_wJo^7zF(Wq0oFtBw8?yea{_f76%Fp}% z|6T7BrQEZiF7NoJ?Ca~+@BjDf=jZ2te|??&Van_4>;30ieZ8_Wm|IL|LU!)kOHWQt zK7H!cpFe+Y-4mIAUf!Z$!Pc!?U#PxyaSeP{reh1HLFZ0Q)&i?)V{rwGz&Mq!3YuD!9j#l`ZOYh8Y7iP<5EwETyHZlH`1A8)U#>-#C#$=Uhp)vM+2?r82`b!(=$eq4dYoXgAo zPcPZ(Z~ynoojZFrYzRCNiWL$D2@dPy_O6TBsq{0_y6nx5hwbv9{IfbV z>elvFZgIQ%e>O%&o8JC6>gek$D=M<8_@J=X_a0xsv$BA?y1L}!eYVBVdY-&a=Vod8 z`1ttqCr?^hS~4;-Pj0md6_=O4zdnBdWOe^@^X>P)U0YdEv8V2@m5NFWTiGqfQ+N8Z zpPrfust7(lYMnWAX3O#=%a>bQS?R^@D*68IZqZubtGZEJG)zoF)aKp^UhbzGx#`IL z`}J2=1RAaEHRyS`k@wJ?MT-`#i`}gkyK75mdSzwh#)vi9*Vmm~zT%sLo}Qnt@7wkJ z|7BGNuaDnvW^Nw8x2p8^Y$dOzUpr-QP1O!x=0Csg@v+`cVRf&%YfY@&fBybGeE6`h zkI$3v*{_6ppSZcW6j;nLGuvA7@>2BnyuB444_&wrpte=;Sm3j=lH%v*YCk>kOi5X? zZr!?;?H zbbDUFv$B$#H*c1em352j-`kwt|0MnHzS`S|4?q6#@o~4f{uZ`Y*?!tu)p_6NF+s4Po zGnBu-ms=eyZJuXhU~uBZiHz!Cmz4qb(-{s-(F~q6X_Aw(v+8`7u)sjWj0+3&Vt3uy zQ#o0zh*d#^Ywp~+yGvdc{rvRQ%uG~5;>D|1RSym@o}4eLqSgHJg1VQYt?k_l7YZI9 z>s@R0`r=}D8NTNyCMp-L^4dDbrgGBRH2eC0dwSpQsr-EG*s)`W4?8OeoLFM8C`6;! zbL-)D{>?Yvu=C4pd8KnP`G}^bX3;9I(2$UjFR!k?Zsxbks180oUEkc)^z4~4In}`~ zoEL8}tyB}?TJAGbDQe-KP-UKT=gvKQ_H29p{dXsnd8)s?`T6Vh`sC!~+dIC@+P?k! zn#j$dHVCLya@B1L_vMBDQ#vwQ9-h|UpK~?Rf4<$*qMht~G82MBPp#jvDlg8?YvDG9k6faqG&M9{+}yl;_ipR{ z(3oS8=u}o#=Hb!tM487%F8{}ehp%3};+M0@`29)ml)r|^uAMtS z{`}L>z_9Xp4oB-D%i?D&Y;0|9ZDp^ncy1FFQoXXV?OsPqgwC|(%hS`+o|WIPRsR{8 zm6cWh=i~9q%l*HE%H9OMJ&)eoR>GtOI{_WepuMA$UQDDuLw)>{b z%)cLx%jcN={`dFyTC42S({!bzqyhs2i&lAgiinGszr2)sbya9?riz6{L~LyB?QOZ6 zR&{CEOGPW3ooQQLmXVPW5iw)lym>9lKUD0QsO(;3F{h!Sq0HvchQi0kl8^TtJ$iKJ ztXW>y53LSg-^L@El%8Jx^wiWovzv>R7u#oEn&aHgH+9;yZCPSdX3e_w@$vEb_Vxch zpSM4~-XQJh@#CPlir$_#)v93is#W)@-`kqae*5&PYvb*W26r#2oq7jek@Wi2)zxdQ zvTtw8m6DPY6cj94)fG8e-GAHm?dw;qnzXC+>gw>bUdv=MgjD6i7 zP+qy}J>B#7!IBrkq5%N`38|@D6Am_o%@q|EUc7Ya*3#EumZ3`%USC^V{o_MoW#!J^ z-m`~VxtHdt8yEyQJ3s#Ye*g5uT$k2>XF{DFVru_?zu*6}=HGey|22Pqm3p50b^rgr zFMdZx@)go33++zdP?_!0}iI9rVLDt3)Za3`S<7N+SrS33Icon|NE_} zsd?|-y`W5rNqn52(XP1A^hMBo})}6rMVBx)w zw^d3?N+$KYe)#$4&6}K^A)5Ymb#*p!{b$oQN38LkZ8q1wJ}x{w{L^KAdAmQa*Y5}Q zL7tqL_(^-x3O107dfvQw^YQWV?p?cb%&H$9>C~MkBq5>k?entr>(>`;@87g(6T^lG z9a~#l&V0FRrEhPUnwoC?|9k)c$?mx>PXnG!3VZPR=k0B|j|(hx#JruIAHTi5U3cE5 zjEhQUv(G*)x_b5M&75!X^?#Q(Sf#!`)XL59>&wf@6DBB}{1_S<`uqF)axl2RF}c05 zk#TQc`;`UhN*=3iD?g>YyR&oU%9ZAMcV<`=CVgh-Zaq~0@8|P#bFHhYsy;slH-?hB zrY!vb=ehmLl`HH2{aoJinDg{>{qLVXJ^K8U!9wQTjg6ocMc2;B@hAo@KBIa`LsRqT zm&^XWy}jjcZyhbsEdq@matf_|wCii$cM{{PtVb$DUF)b~vZ}09_|NB$9FuRl7>A-up++$$K{8`+Yu_p*?)*c6U#0#8E%Sbva6>AWmkdBr$3c)`7gT)>|F5iPMK%N@;r^210|A6crB_V1i5?9`CNBQ>G`$uZQ!>| zu9&IE^&OS|dM}k-bSAeSv_^&1MQoG*BBjYMl{$I?pKY_wR|@#l^HQlphhz1JS2~wn z1tb@r$u0l1&M=m7;@srY1}RuoQ)Rbk?!q&< z$VzNe&_3`=|O`e&zCoB7B8Xie@B{_MHj zW~zXydouSD)^&Xh59BYNSjYZ9Z_SEBlOsOvWt{kc+hB{n$ERnrp zQ6bfS=~LD1RwtVtmWGvw859(P{q<&q zId{ZNMP2d0l^fm%?)_e9qE%V2t#zIm!yAic+y4sI`{TI9+$?tRz3*AKed6)sY5Er5 zTy8vc)3SWuFW-0gpp?B{=BB8V>s#yJ*YdvZKCAxVWpw^^r}95LIbVIPcRlwr@$CAF z*pT&47ss1K@+c;06nmZ?L|ZV;6-xu3O`3+ek&^%KZsr3SfzRBMuI}Gl^7mExyY1Z% za-#KT{9vjn=CS^N?Ei1!y4_jZi?4oonDVEDi+#^gV{;S6#z2EBM}I$_y*lhu_SF*= zy~@%b9zMCXaU#-$JT9w}-_>4cT) zOB`r9_{i3gPx^NFfinz@f*P8ux4(Xz`CvogJ^7ukU#~YDTmxGRuQqo?QaCFM81FRd~#m;!Kc!fye%d64nek!h)IJfP`&&Rh8us%rWZGJs#b^C-} zE9QHvJbKkoJNwn&P zLf6SvwS|Gfx0IvB}c8to!q`LU(yqK;9qO3#;ofJ;S*E#Ritubqv754aB`hL>k%A9K5@ z)ANG=z5t6$(!U#SX`OdDkG`_)IG?fSxfxS(ZX3W3?II@X7RB& zeLP*sPrad_(i}#%b^7d6w&PaxS%>|AN}FDs_1b;M zlTOcs;0sSgub*kSuKR<9=|B+wi|p+&ORikcn%JktSKIe}+oSsQhq4jBeU3~$?l4
=HGr-Q1bM8neQaN7re2$ANQID9}loEUe0s4uYbWY#|ojky&bX73!fUE z;VH=E{uO0fzBBQ!!HfI1OLXtS_V(4+G7HxpS(zj$_i z$y)ra&1n1FQ+r!Jl+Vy>+R}J+`G&t!Un+IHxoEqk>{O1Jm2T254kg{Ub}x3ezEtXn z33#?G{_nqriPD!{CtQ0hb@-*x6`q;vnoqE%=KVez*8Vp#<9p&RzDrUvu@-SH+k8*E z3te@Yd3)W;*~urAC3YIevQO-B6X)5-?;O7DwL+20_X}1GiK36LDL+UIu2aS-XYQ8zW?B{ zNiUnG_Pp@yHS{w&8xvby@>3u->_n-l1!&aBS|n`Zu^*kU_xt#?zvkH8Jp1_9_ve}( zU#3;tvPjfB&JW2^V_yz&F4#Hy{8?-e3mcly)QXU zYR9n)@3@-WEU5F;!ZU9p_WgRb`p6NN^78MmudiRddUf~Pt4v|M2j*;DudS_p zaVc~9yX(EVSNm8uU3km=MRxInDvxTX$2(;`^78Vw=iRNaiAzdK+Mahesx;5lwRQgd z_>z*6$jHd&=jPtMb7#%kwbF9WUcQ_;Y0{>go15fptClQTa%XqBzPkGH0|yd*e0a#r z&bP)=$J+Y$wYAYRXU>d@iqg~5D=qId6_S^K|NQy%*|W1VGG4rTm6e`;ecC66C(obX z-&w3~X*u&~QeBa5}*&^t0mNBTld(-C4@9*xOK5=4T zRMfA7?DAW_@wcu}QG98zXU`snGqX%rZ&jaXUB0gPdDZvJkviA@{QS(#&3&}5q_~*5 z;O(ugs@~H&{w_H?!*KDA9Xs~y`E%Ld{%OIhy^2K-54BF6IyI>mv|{Dmot;U&XXaRL zUa-L7)u*yIHx{m3sd;VL=FP=UPELpY3*X<{yDQ!-q`0Bv{vv++KNHTbo4e-a`}g;6 z*^4jg%E(#BT>0mRVZ$<^C7S8y=0xr&SQw!3=IZL}OFSok`SNAa;>GLZ_EtSRGqa_o zrJ;d=mzQ^AaM;?Yub-ZJTU+l=JlrNJDcRcE3K}pye*F1me|ueRZR_%Pb8f8L|L@o8 z^7r>KS={o>P!-j;J_h9U3oou>blziwYq z|Nmd|@jg>S!^DjdS5CgwkT_Sf$l?8-&wLHt;`&~7UV(uV8yguL&fER&IsW)+4nHri zsku4(hSJy9b{+3#ntL|w{r&y%3IbPh?r+bZ|KfS?*)(~Jf(7r^#n=B8ZJ0PQ(D%1# zz4n^;{rldz9zJ~7y7U!G!tZZygQl3LpOXokoismi%1&N;*SmQ+!O~0ri8228`F#HC zI(ZLv$C(c${K*w=X?tf$)L>om#? z=ASn=HfG+CbhN8&w~wzcql>%y_1q&jZ|+P~iQQ8n=%FG>0b~I?D&8iX&RK9%WicgHu^jFi(r*FvCE8VTP z^5xmLtM4CKKdGy!F)c4)K@&F@lU7p>lQHw>-^m#V7*pmNAD?;sbN}xN#dh;8^LO02 z{`Z6B{Lhxw+JD!rp1RZYx8ToTzrv!}BvtKxXFKKO`7KX=>d>aP7#SYKb?>GEB& zar^zc+xPDMySKO6)6?^+?)vig_ZZU7%rGo}cjtcHZ(VKe)tlb$^UC_BEM;3&GB;*! zoYk2a;YB-7PM$C!;H%!sl`9!;ZPiX+EMshJ4BD-zsi|qT{LPzFH-){6KfhvK9-3#g@(W!Ys ztFO)yT=Z;T*j(-MA1n8+ShhiGih03<1HQA(V)xZps;jHp*xWgP-hX9?-+Vh;ef{-s z+Cy3y>s`JWB|V!Z;O>50GkBTCRIju3VOMl?b$vfiw`Sny=l@fC-*frRhlksZjf`Sq zV!muSk$HVxY^r|MlM@qrdV0ikqfD}|t(o>TG9u#3+uPrt&#!-XVWD$c+OxB>&EsSG zebkr(A|h54-)XQ{s**G;_C38Sbam9$EKw;btBeZ^Zrq5NyZPtOpZ0$~I3Mqm-MV;N z;p1aBZ{3R9RibHNu%YBm3~2lCnVAgBd}l9P9`ygu=ku=JVxpo`-`GnE3mYdN<6)4m z`;o|d%DU{$jA!SfGdnvwXZ>&1{Jo}y@9d*4>+*LmWXvD*cf`5Xs2$pJr>Dnyr60dfujl=tylDEQ#%n7kDyF8S=)~;UP*;2RFZ0u)pIb672L%O{-1`6N zw0>&3%JCk_;BSU^y2Lhyy`J*z=Ka9MZZBi5T)%E^Yr8k?>DsuxyY5_NQg-k2@%CQ5 z<;s~eXZ+?`O??-!%W>|XjuRpU{nD40252ZLgN9~*J~=6zo&9=S?(J`{ub;nmZQGq= zKY#vAOibLkapTXQKmGjt^7nq7mbP~--`u;2S!Jv0|Nl!&OkD0i|K0ul|9hp)4;?;y z`O>8~Z{Ga+_ICB;s;j#E2d=ITUmw4J-jpdJ5fLvQJ-W2qfBvfJt3tH==h;XK3s0Us zdv)0AQmHHd++CJ6%=BKg_~aeucD}p2N?#vrW{=%nHrF7r>6uvAQXwIs8L291XJUk8 zeV;`|M{7^@>U0T;h`6ye`+7%5$0q52)4qN@F8}-I&#x~oIyYE#W;MJP^H{>g#Wlri zsnbFY9i2T@UtiV#`#gWu7psyN6VjMjlnRrcP4bu;SH3iCwSLTwfXwMHUcC7I{r&rU zd#$alqvtObyeeZn-6j3h6iq%pzNP&hOM~Xh9z0$8c%pJf3W-`?I{zWr54R_jdf zMaHS8rY!ZIo>i`5U~C+``f6QW-PE!>`|J06E!EP}`t|Sk`>!#|fxL#ro;}ab&Ha5f zJU&xw-OgRROFnYqD3tlQ&!AcGQa-c&V|_umsBTu z{QB}TIWMp7@2{`cHG8MJg*e~IZ#=Sk!GZ;EZcCq@I)DEBDN~+2d-m5?j=+UD)ckh0^+hb8y;)8}qHs~v+I>Y&yY}wg`)x;a^Wg?YW;PxPPz5;CIK8c{?cJT7!N0HMJ32bvoF2JH z;<=c|6N_`Iif3k0UN_ zU~6JzcP8f2?#=1v)6&z~+1RGpRs8&vDlb2u-|k1k#YL{Snm<1~>+R`jS^TW$*=ebi zbuoI^bBcpsuj>5LG}F6kd*$b6ywYY<>?X~gZC&^0N0Bk`?7g+`uV=@?$6)9>)*b2?b^1~)6+aXJrkZyGE90lsm|5S zjZem6!q_fwVytuzUYj)+(hYaZq*^L)|?!(z|EOw1*He*XT_ z*VihmtC=f4J>hIvvSi7E1q!*%Yu2n;us~s^&$6?3gw_4d%rs^{6Jz9dCg#%mWxliT z?JQQew!VGrSlYEUk;3YJSLRujzq@l|V{&Xv%(=PN%PYT1HoSTBX2%W-adGi0O2s?v zrn_{{^sf4T(Oq6Qa#PCTHeNF`v!&v_rdd}w8bY+Ls;oJdKEKwi`diM~{n-B-4k%CE1lpYEY@Yip{^^GP2cT1;>G z@OJzCU%!8Y6nuSk^;T|nOl<7d{y9&dJkg2UV_|DsdwpH(tvHx!g{fZO-`u>sDs=U^ zxz_s8+uq#SS^VY<}}> zDt~`_JHPH%W=+kX%gg;iYj$E|YinxG&9`4a^PX;RF?UMMjGZbg+kVg^!OcruXn0Pd~DH#fpx{F-AsbVuV&MTBNi!>TIE&q-2_2=ajTHr%Jg~ zQfBN_37WNWm5b8KF#U776F{-OWYz3#QgfmeCMG|dv|{DeS6N%H_Y}|EsS*V;WL9r+ zwwbb{iUi0EHS^Wh=dNzK-c#1;(y@P*N|x#An7(4qEkEAqcTVxkJ9g|C8#}wZyL)3oQJ(j$?x0gHN+nbwTUtix}__%HR_U)4=2R}a68yg$@{QUg& zxuD}L=31Bk`*4_ld;Wbk%crs;Lc8Baf=VQwD2H0a@bp0`(5hr7ACIXN9#;yL+L?)_!H(w#1orcOOtodI_H z;*O4vgU#&TDnh=`uC0&1f9~A7qp^GT?ydj-xBQ;7^2EpM)j9)fYW`%e-y61857MW7 zbcYEPtVcY+2e!cxu_KVyU} z)ATw6pP!qntfZ7;H1nBXR48b%WbCezhZfUa`eu43UD=p?y!iRKnX_kWPd&A2i@ugt zS4T%ddHMB}Ek4KEYdx0ySna9w^!00LDXCQ_FYMW~N6xm2q2kL6!G;G963)tTv-8X4 zTwf>Kpc}pI$FE;Z7gDyQh3Ze_D4gT1Bq|`VAZX>IM~}SZOG-*gii?X23pHyEjEp`# zIM~d{$jD$KdG?Iz#YYy?UA(lWT3J}g*i>9Nd^q{c48!`rU&D8v{r3L;{v6)fNgaiAydSAfK6&Qs+2-cvetCO25s@$b^?w$7PFDN&?VJC6J6})Fm-qJmesgnk zJD+USu5PvBO8#D#?)|e=;%=34-vfi6KYw<1c1lW0e*5@3sGTej%jZhZ_1+v(?i z#dv#rhlgJmFMnujB4l~)`J{@OvuB6@oyoxqDv)RFREaa1xu)y9ONJpNp~soZJ^v&p z)hPzb#m64Ur0I2v)th>jJbLtKnqKUzdGq8%MMZ^$i@&{zG&bIBoPO@c?c3qE!j}e} zOfh;_=)CCY8P$uKmzVigRQx#H&TkrTSNCU!d%s*LXAFba(n*tds-(?{R=7CPYw7#_ z|M!_$ojrT@c&~K$(S1UlF28-GCUSt9G|T+vuG(9@EJVw_PbM;R`kOazGA}Qy{qeB< zWpvS zzM1FU$+)p$;XiHFRcw95o=ZTD{;<`lMmKM4OxDhwGkyB@{QGuqmDs0xO`SJSPDp6c zbE(c%y)(U)Ow-OtWM^kj^)k)6vcgMx`SRtj_gMOBO9_xiZl2iQm7B77mvi;BOwQLGe;qnw8h0~%!lt_yTm!y7z3X&|%~{;> z*P)%Pk4sEZwuKAVR@ttm3zqOdZt1dg`Wc1(7(CELLdUZ73n1w$4!N)Zxw2qH}9zHE($F$)EL~wBv8agsWE`9k`mg|FL3zcGn@%G2C9vxCCBr-$6Q_&`WbNk{7MZjSm?)1q}o#l8H- z*Cn2+JH|$=mCG`HmUHOXVTKRuXU?$p+U{uU{p4BlbIuw=NukbnH<=%vIH{c%d~MnP zqm$N7@G#gT?pAT&si=+ifo780L~#s`s>~O3J8z=Y`?W{=-4oRgUiANd+f(r#?zsAG=5 zQqd*8?^ZAK!y6{-U%hg_?|N*$;;O`5ezR*&znnV7%JACiuG}_<&f4?>E3T878w}ik zr%7CwzdNt~k}VZ zY$>_)cf#(KKNKax#9mxn_hk2sf4ZMURdefXx*XRp&W?VVr4W2zC#&$%fQNVW3l(I< zjASALD<5QKT=ULM%Qrn2cld3JNp{FNmGy4L?qA+C+^Ok_=<1NT@@eDo>~cc`fzJMm z=VfOaj_i|n#|f8Y|+?E0hPOT|=gM?Jn<7qEJx?UFg?Z`R3VncjQL9-Yl#QOX*8 zO(CA~{JIsi7vtw(~?2?((#( zJ$yz`;+pW|U&()U=5RLMk;(r4&@;^Q@%MJI@Q5!p7sOX~pT1@iu-Y(P`AXKAO7`W~ zlDfp(N{)-@x70PyR1R1mvWU${_DqcM)qRptmW&5Z-Bo3b(u~gDb6Gmev}`U*LptjX zdA<;vjSDU=v|N{aa1v)hW{bOj;S-sCH#pxP&G@5dcRS2)Md%YZrMmyzbE6XPW!w$6 zwN7YZ|HLIwwe-n@=yw^fdw%y9e7aQJ>mTFvD0xe%n|(RM4w?QN)dg7{TQ8T|m)+$t z*(MHh$DH$~fxT}x78}|y7g|gHeWv(jHkZ7?Wy4C2Z!Jm3^CMoh|F`UZlm4Ngd3CYs zUa4CNsSIIk3jY}O?j1R5F=toPirYV)%efqTa760FlBw}lMr;h1j0`gv88X=VW}W2P zDpelD@F4G1aqPX%hth9v_!@CiS&m_w9CHK1`$ziv#~2&J%Oj@zjBmap^NJw4p%Q+>0Bti)3Sj}eR}EasM_}o3>+^(cLXqn_?u36nec4ZE;ZglH4bKR zg>Q1d&L8hIeQ{~oB)#B08(xXa>}Ft4u3qf8cUJu0tzryuTLPUk*Un;a$YT3dzV4Xn zJ^8N1^$D*xKH77;Y|oDcVXxH~3M}{id1rO}YY6j9zI)Ef7N$pDDwO1OZtZJ~4{cGs+ovlox?*1UP0CI0dThX& z>i9On6n|pIr z#TSw9@=gnx8d@J;Se_i({ijN6(fbEaQupkY;oFw+nx|FBvwz|=)~!<7YKcCTd+*72 zE%1re|~K!or<-%+lE{YY%^U zxM9nIyCE*e6ck10-d0EvW!tA0z?-75@N-d}OuJDpinSAT+wZ;DBdOtPQR(oGz zN^0XgS*`r|qyBn9k3R-4S*ENmzwKJaZIQ4~tLmJe?)uMh(mx@S@p-t`{gV&xxBFg6CWBBd+s+XHvAGir@M8n>A&~cU&@S299`Is zo>8?ub>i3r*BuhC+!yO-&VD>q` z*xt^bdSAyz>irsrswel>Ug`j+cTbN0j(E%AsgI+e~@w>zTf z)p{14drkKFj}CN2#ZFm~S2)MJ^v%WKFSFZccV=AUNCdfa_ezP4JTGs~c+^@f{o#p# zQN8Pts*3Li9{cRs%=DA%u3ml2@sp=#JnYVno>0&8YBI;)WlyfGJpCg>Wl^1rpMg-> z=%bC@%e809Ly;H1r;~n|QZ43t{ ze%`uQBTzQ!S&;1OtBlU~85$&C7ydc_>9$7bkNKNdq<2;>F7==3`C*(Kkp1V{^Xg(A62*dz6YNxswKbaALrn|Yxa?U z!fbv9vwaK;!k8P<^1}Xp7sM2dC;5EPv0UwW-psc!dwGGXc+*t5c0;Foj&L!?fnq~Tp_Z>u53Vz_Nvx%y? z6BSo8Klhv4!!E-UuAL>IB)%l=#!iXJ?G9^?eaZiLcj2SQ|KHn2oGi3p+UG4O*83*? zMEHX;BfpqKZ+a#62k9RL8NIa7?z)7h4o~dC;xj5YwlM@5=UDgcoV_4GsX)hStJb^^ zymtK$KJSXXS9IN5m2GFn*_ojmyqe?E&cr0AW^{*u|FL(s?&ZY zM)=3vZ+p-8@CNH0U)MyzSyl^tgL^837yo{>TBtc@OIymK-|r`8`7hGj8`Rd*B9&Mc zkSe*0XVqM}`UBs1oy8qXdp_@U^JKam*S4-P%RQ_2SJLb^3#<;DF%9ai;f-ay>UUVt zVD%40fvQZy;@&BjT|CzE#y1cS&UBj2Anb}KH$_jp-xZoP#dvgz8`@%N8rY}w3 zFZ6^bnw{I~?zm~;>jkeSEr_;w^GjkE&n51@;@;_3*mAE+?BZCpPi?Z~4!53}*;nTL zd0=$(3A#Vf8KyihvfUSZzBDK@wI zfBZb*Z&D%~(se~jS8UPIq<0y~N;7t;pa=xNvobL?rW#J$&r>CUWO*MhhP~V_Mm28Ib01cDg>-p*!=e qO=el7=?P9O*g?l~y2Hcbzx*3nt8@IO*5wQg3=E#GelF{r5}E*QU78C3 literal 0 HcmV?d00001 diff --git a/doc/book/src/images/wayland.png b/doc/book/src/images/wayland.png new file mode 100644 index 0000000000000000000000000000000000000000..c9937928ce9584a660ee10f7092eed2033f6eab8 GIT binary patch literal 5649 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 A`~Uy| literal 0 HcmV?d00001 diff --git a/doc/book/src/images/x-architecture.gv b/doc/book/src/images/x-architecture.gv new file mode 100644 index 00000000..b223d1dc --- /dev/null +++ b/doc/book/src/images/x-architecture.gv @@ -0,0 +1,53 @@ +digraph arch_x { + edge[ + fontname="DejaVu Sans", + dir="both", + arrowtail="dot", + arrowsize=.5, + fontname="DejaVu Sans", + fontsize="18", + ] + + node[ + shape="none", + color=none, + margin=0, + fontname="DejaVu Sans", + fontsize="18", + ] + + { + rank=same; + c1 [label=<
X Client
>, URL="#c1"] + c3 [label=<
X Client
>, URL="#c3"] + } + c2 [label=<
X Client
>, URL="#c2"] + + { + rank=same; + xserver [tooltip="X Server", label=<

X Server

>, URL="#xserver"] + comp [tooltip="Compositor", label=<

Compositor

>, URL="#comp"] + } + + impl [tooltip="KMS evdev Kernel", label=<
KMSevdev
Kernel
>, URL="#impl"] + + c1 -> xserver [taillabel="③", labeldistance=2, URL="#step_3"]; + c2 -> xserver; + c3 -> xserver; + + xserver -> c1 [taillabel="②", labeldistance=2, URL="#step_2"]; + xserver -> c2; + xserver -> c3; + + xserver -> impl [taillabel="⑥", labeldistance=1.75, URL="#step_6"]; + xserver -> impl [style=invis, label=" "]; + impl -> xserver [taillabel="①", labeldistance=1.75, URL="#step_1"]; + + xserver -> comp [style=invis]; + xserver -> comp [taillabel="④", labeldistance=1.75, labelangle=-45, URL="#step_4"]; + comp -> xserver [taillabel="⑤", URL="#step_5"]; + comp -> xserver [style=invis] + + c1 -> c2 [style=invis]; + c3 -> c2 [style=invis]; + } diff --git a/doc/book/src/images/x-architecture.png b/doc/book/src/images/x-architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..549e262d84ec3b6c1c3feac6d10dc62fb021a887 GIT binary patch literal 28785 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 literal 0 HcmV?d00001 diff --git a/doc/book/src/images/xwayland-architecture.png b/doc/book/src/images/xwayland-architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..f24dc1837f2e190c9d38719420a844aeb5997efa GIT binary patch literal 7611 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 literal 0 HcmV?d00001 From 8d6af84b9e31cd7086d4030e5faedf026c7d3c8c Mon Sep 17 00:00:00 2001 From: Julian Orth Date: Sat, 31 Jan 2026 11:09:33 +0100 Subject: [PATCH 06/11] doc: rewrite the book foreword Signed-off-by: Julian Orth --- doc/book/src/Foreword.md | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/doc/book/src/Foreword.md b/doc/book/src/Foreword.md index 468b1654..e8bc9c47 100644 --- a/doc/book/src/Foreword.md +++ b/doc/book/src/Foreword.md @@ -1,15 +1,29 @@ # Preface -This document describes the (i) Wayland architecture, (ii) Wayland model of -operation and (iii) its library API. Also, the Wayland protocol specification is -shown in the Appendix. This document is aimed primarily at Wayland developers -and those looking to program with it; it does not cover application development. +This document describes the Wayland architecture and Wayland model of operation. +This document is aimed primarily at Wayland developers and those looking to +program with it; it does not cover application development. There have been many contributors to this document and since this is only the first edition many errors are expected to be found. We appreciate corrections. Yours, the Wayland open-source community November 2012 +## Protocol Documentation + +This document does not describe the semantics of individual messages sent +between compositors and clients. Consult the following documents to learn about +concrete Wayland interfaces, requests, and events. + +- [wayland.xml] - The official documentation of the core protocol. +- [wayland-protocols] - Standardized Wayland extension protocols. +- [wayland.app] - A community-maintained website that renders these protocols, + and many more, as easily accessible HTML pages. + +[wayland.xml]: https://gitlab.freedesktop.org/wayland/wayland/-/blob/main/protocol/wayland.xml +[wayland-protocols]: https://gitlab.freedesktop.org/wayland/wayland-protocols +[wayland.app]: https://wayland.app + ## Copyright Copyright © 2012 Kristian Høgsberg From 94dd263f1fc72866e5d58335e846744be1850630 Mon Sep 17 00:00:00 2001 From: Julian Orth Date: Sat, 31 Jan 2026 11:41:32 +0100 Subject: [PATCH 07/11] doc: add meson.build for book Signed-off-by: Julian Orth --- .gitlab-ci.yml | 4 +-- doc/book/meson.build | 67 ++++++++++++++++++++++++++++++++++++++++++++ doc/meson.build | 2 ++ 3 files changed, 71 insertions(+), 2 deletions(-) create mode 100644 doc/book/meson.build diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 39beeaf3..428d0318 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -78,10 +78,10 @@ workflow: variables: BUILD_OS: debian FDO_DISTRIBUTION_VERSION: trixie - FDO_DISTRIBUTION_PACKAGES: 'build-essential pkg-config libexpat1-dev libffi-dev libxml2-dev doxygen graphviz xmlto xsltproc docbook-xsl meson ninja-build' + FDO_DISTRIBUTION_PACKAGES: 'build-essential pkg-config libexpat1-dev libffi-dev libxml2-dev doxygen graphviz xmlto xsltproc docbook-xsl mdbook meson ninja-build' # bump this tag every time you change something which requires rebuilding the # base image - FDO_DISTRIBUTION_TAG: "2025-12-27.0" + FDO_DISTRIBUTION_TAG: "2026-01-31.0" .debian-x86_64: extends: diff --git a/doc/book/meson.build b/doc/book/meson.build new file mode 100644 index 00000000..139c77ed --- /dev/null +++ b/doc/book/meson.build @@ -0,0 +1,67 @@ +srcs = files( + 'src/Protocol.md', + 'src/Foreword.md', + 'src/Xwayland.md', + 'src/SUMMARY.md', + 'src/Content_Updates.md', + 'src/Color.md', + 'src/Message_XML.md', + 'src/Architecture.md', + 'src/Introduction.md', + 'src/images/content-updates/sync-to-desync-subsurf-3.png', + 'src/images/content-updates/sync-subsurf-case1.drawio', + 'src/images/content-updates/sync-subsurf-case2-2.png', + 'src/images/content-updates/simple-synchronized-state-4.png', + 'src/images/content-updates/sync-subsurf-case2-3.png', + 'src/images/content-updates/simple-desynchronized.drawio', + 'src/images/content-updates/sync-to-desync-transition-2.png', + 'src/images/content-updates/simple-desynchronized-state-4.png', + 'src/images/content-updates/simple-synchronized-state-3.png', + 'src/images/content-updates/simple-synchronized.drawio', + 'src/images/content-updates/simple-synchronized-state-1.png', + 'src/images/content-updates/sync-subsurf-case1-4.png', + 'src/images/content-updates/sync-to-desync-subsurf-1.png', + 'src/images/content-updates/simple-desynchronized-state-1.png', + 'src/images/content-updates/simple-desynchronized-state-3.png', + 'src/images/content-updates/sync-subsurf-case2.drawio', + 'src/images/content-updates/simple-desynchronized-state-6.png', + 'src/images/content-updates/sync-subsurf-case1-2.png', + 'src/images/content-updates/sync-subsurf-case1-1.png', + 'src/images/content-updates/simple-synchronized-state-5.png', + 'src/images/content-updates/simple-synchronized-state-2.png', + 'src/images/content-updates/simple-desynchronized-state-2.png', + 'src/images/content-updates/content-update-legend.png', + 'src/images/content-updates/sync-to-desync-subsurf.drawio', + 'src/images/content-updates/sync-to-desync-subsurf-2.png', + 'src/images/content-updates/sync-to-desync-transition-3.png', + 'src/images/content-updates/sync-subsurf-case2-1.png', + 'src/images/content-updates/content-updates.drawio', + 'src/images/content-updates/sync-subsurf-case1-5.png', + 'src/images/content-updates/sync-subsurf-case1-3.png', + 'src/images/content-updates/sync-to-desync-transition.drawio', + 'src/images/content-updates/simple-desynchronized-state-5.png', + 'src/images/content-updates/sync-to-desync-transition-1.png', + 'src/images/icon.svg', + 'src/images/x-architecture.gv', + 'src/images/x-architecture.png', + 'src/images/wayland.png', + 'src/images/wayland-architecture.gv', + 'src/images/wayland-architecture.png', + 'src/images/xwayland-architecture.png', + 'src/Compositors.md', +) + +custom_target( + 'Wayland-book', + command: [ + mdbook, + 'build', + '-d', meson.current_build_dir() / 'book', + meson.current_source_dir(), + ], + depend_files: srcs, + output: 'book', + build_by_default: true, + install: true, + install_dir: publican_install_prefix, +) diff --git a/doc/meson.build b/doc/meson.build index 44fda2ab..b9f6fcba 100644 --- a/doc/meson.build +++ b/doc/meson.build @@ -6,6 +6,7 @@ dot = find_program('dot') doxygen = find_program('doxygen') xsltproc = find_program('xsltproc') xmlto = find_program('xmlto') +mdbook = find_program('mdbook') cmd = run_command(doxygen, '--version', check: true) message('doxygen: ' + cmd.stdout().strip()) @@ -39,3 +40,4 @@ publican_html_dir = 'html' subdir('doxygen') subdir('publican') +subdir('book') From 2096ecf99f513d1af50bba5243987793556b2055 Mon Sep 17 00:00:00 2001 From: Julian Orth Date: Mon, 2 Feb 2026 11:38:43 +0100 Subject: [PATCH 08/11] doc: link to website in doxygen Signed-off-by: Julian Orth --- doc/doxygen/mainpage.dox | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/doxygen/mainpage.dox b/doc/doxygen/mainpage.dox index 352f69be..6a2381cf 100644 --- a/doc/doxygen/mainpage.dox +++ b/doc/doxygen/mainpage.dox @@ -9,8 +9,8 @@ * -
Cursor helper library API * * Further documentation about the architecture and principles of Wayland is - * available in the - * Wayland Book + * available on the + * website. * * @section ifaces Interfaces * For the list of available interfaces, please see the From 7f7e2d50f2cc0d13bcbea78a5369baae3cfe4828 Mon Sep 17 00:00:00 2001 From: Julian Orth Date: Mon, 2 Feb 2026 12:41:27 +0100 Subject: [PATCH 09/11] doc: add installable target for doxygen output Signed-off-by: Julian Orth --- doc/doxygen/meson.build | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/doc/doxygen/meson.build b/doc/doxygen/meson.build index 551bd4b4..7d9938e8 100644 --- a/doc/doxygen/meson.build +++ b/doc/doxygen/meson.build @@ -58,6 +58,8 @@ formats = { }, } +html_targets = [] + foreach f_name, sections: formats foreach s_name, s_files: sections t_name = '@0@-@1@-doc'.format(f_name, s_name) @@ -66,7 +68,7 @@ foreach f_name, sections: formats # will complain if one is not set, so we use a # dummy 'stamp' file stamp = join_paths(meson.current_build_dir(), '@0@.stamp'.format(t_name)) - custom_target( + html_targets += custom_target( t_name, command: [ gen_doxygen, @@ -85,6 +87,16 @@ foreach f_name, sections: formats endforeach endforeach +custom_target( + 'html', + input: html_targets, + output: 'html', + command: 'true', + build_by_default: true, + install: true, + install_dir: publican_install_prefix, +) + man_files = shared_files + server_files + client_files + cursor_files stamp = join_paths(meson.current_build_dir(), 'man3.stamp') custom_target( From d2931c68b335fbb318b1ff5b4b9877f22c4be22c Mon Sep 17 00:00:00 2001 From: Julian Orth Date: Sat, 31 Jan 2026 11:59:10 +0100 Subject: [PATCH 10/11] doc: remove docbook Signed-off-by: Julian Orth --- doc/doxygen/gen-doxygen.py | 9 +- doc/doxygen/meson.build | 2 - doc/doxygen/xml/Client/meson.build | 17 - doc/doxygen/xml/Server/meson.build | 17 - doc/doxygen/xml/meson.build | 2 - doc/meson.build | 17 - doc/publican/.gitignore | 3 - doc/publican/Architecture.xml | 392 ---- doc/publican/Author_Group.xml | 16 - doc/publican/Book_Info.xml | 71 - doc/publican/Client.xml | 92 - doc/publican/Color.xml | 139 -- doc/publican/Compositors.xml | 128 -- doc/publican/Content_Updates.xml | 460 ----- doc/publican/Foreword.xml | 28 - doc/publican/Introduction.xml | 116 -- doc/publican/Message_XML.xml | 928 --------- doc/publican/Protocol.xml | 592 ------ doc/publican/Server.xml | 49 - doc/publican/Wayland.ent | 4 - doc/publican/Wayland.xml | 20 - doc/publican/Xwayland.xml | 168 -- doc/publican/html/css/common.css | 1750 ----------------- doc/publican/html/css/default.css | 3 - doc/publican/html/css/meson.build | 11 - .../content-updates/content-update-legend.png | Bin 15946 -> 0 bytes .../content-updates/content-updates.drawio | 1528 -------------- .../html/images/content-updates/meson.build | 35 - .../simple-desynchronized-state-1.png | Bin 2037 -> 0 bytes .../simple-desynchronized-state-2.png | Bin 6732 -> 0 bytes .../simple-desynchronized-state-3.png | Bin 1625 -> 0 bytes .../simple-desynchronized-state-4.png | Bin 7302 -> 0 bytes .../simple-desynchronized-state-5.png | Bin 12728 -> 0 bytes .../simple-desynchronized-state-6.png | Bin 2102 -> 0 bytes .../simple-desynchronized.drawio | 198 -- .../simple-synchronized-state-1.png | Bin 2117 -> 0 bytes .../simple-synchronized-state-2.png | Bin 2586 -> 0 bytes .../simple-synchronized-state-3.png | Bin 2989 -> 0 bytes .../simple-synchronized-state-4.png | Bin 17710 -> 0 bytes .../simple-synchronized-state-5.png | Bin 2209 -> 0 bytes .../simple-synchronized.drawio | 207 -- .../content-updates/sync-subsurf-case1-1.png | Bin 26995 -> 0 bytes .../content-updates/sync-subsurf-case1-2.png | Bin 27535 -> 0 bytes .../content-updates/sync-subsurf-case1-3.png | Bin 22771 -> 0 bytes .../content-updates/sync-subsurf-case1-4.png | Bin 22017 -> 0 bytes .../content-updates/sync-subsurf-case1-5.png | Bin 10932 -> 0 bytes .../content-updates/sync-subsurf-case1.drawio | 500 ----- .../content-updates/sync-subsurf-case2-1.png | Bin 26210 -> 0 bytes .../content-updates/sync-subsurf-case2-2.png | Bin 25821 -> 0 bytes .../content-updates/sync-subsurf-case2-3.png | Bin 10069 -> 0 bytes .../content-updates/sync-subsurf-case2.drawio | 287 --- .../sync-to-desync-subsurf-1.png | Bin 18621 -> 0 bytes .../sync-to-desync-subsurf-2.png | Bin 18069 -> 0 bytes .../sync-to-desync-subsurf-3.png | Bin 19371 -> 0 bytes .../sync-to-desync-subsurf.drawio | 223 --- .../sync-to-desync-transition-1.png | Bin 9299 -> 0 bytes .../sync-to-desync-transition-2.png | Bin 15177 -> 0 bytes .../sync-to-desync-transition-3.png | Bin 15872 -> 0 bytes .../sync-to-desync-transition.drawio | 203 -- doc/publican/html/images/icon.svg | 19 - doc/publican/html/images/meson.build | 37 - .../html/images/wayland-architecture.gv | 36 - doc/publican/html/images/wayland.png | Bin 5649 -> 0 bytes doc/publican/html/images/x-architecture.gv | 53 - .../html/images/xwayland-architecture.png | Bin 7611 -> 0 bytes doc/publican/meson.build | 116 -- doc/publican/xsl/doxygen-to-publican.xsl | 160 -- doc/publican/xsl/merge-mapcoords.xsl | 64 - .../xsl/protocol-interfaces-to-docbook.xsl | 51 - doc/publican/xsl/protocol-to-docbook.xsl | 225 --- 70 files changed, 2 insertions(+), 8974 deletions(-) delete mode 100644 doc/doxygen/xml/Client/meson.build delete mode 100644 doc/doxygen/xml/Server/meson.build delete mode 100644 doc/doxygen/xml/meson.build delete mode 100644 doc/publican/.gitignore delete mode 100644 doc/publican/Architecture.xml delete mode 100644 doc/publican/Author_Group.xml delete mode 100644 doc/publican/Book_Info.xml delete mode 100644 doc/publican/Client.xml delete mode 100644 doc/publican/Color.xml delete mode 100644 doc/publican/Compositors.xml delete mode 100644 doc/publican/Content_Updates.xml delete mode 100644 doc/publican/Foreword.xml delete mode 100644 doc/publican/Introduction.xml delete mode 100644 doc/publican/Message_XML.xml delete mode 100644 doc/publican/Protocol.xml delete mode 100644 doc/publican/Server.xml delete mode 100644 doc/publican/Wayland.ent delete mode 100644 doc/publican/Wayland.xml delete mode 100644 doc/publican/Xwayland.xml delete mode 100644 doc/publican/html/css/common.css delete mode 100644 doc/publican/html/css/default.css delete mode 100644 doc/publican/html/css/meson.build delete mode 100644 doc/publican/html/images/content-updates/content-update-legend.png delete mode 100644 doc/publican/html/images/content-updates/content-updates.drawio delete mode 100644 doc/publican/html/images/content-updates/meson.build delete mode 100644 doc/publican/html/images/content-updates/simple-desynchronized-state-1.png delete mode 100644 doc/publican/html/images/content-updates/simple-desynchronized-state-2.png delete mode 100644 doc/publican/html/images/content-updates/simple-desynchronized-state-3.png delete mode 100644 doc/publican/html/images/content-updates/simple-desynchronized-state-4.png delete mode 100644 doc/publican/html/images/content-updates/simple-desynchronized-state-5.png delete mode 100644 doc/publican/html/images/content-updates/simple-desynchronized-state-6.png delete mode 100644 doc/publican/html/images/content-updates/simple-desynchronized.drawio delete mode 100644 doc/publican/html/images/content-updates/simple-synchronized-state-1.png delete mode 100644 doc/publican/html/images/content-updates/simple-synchronized-state-2.png delete mode 100644 doc/publican/html/images/content-updates/simple-synchronized-state-3.png delete mode 100644 doc/publican/html/images/content-updates/simple-synchronized-state-4.png delete mode 100644 doc/publican/html/images/content-updates/simple-synchronized-state-5.png delete mode 100644 doc/publican/html/images/content-updates/simple-synchronized.drawio delete mode 100644 doc/publican/html/images/content-updates/sync-subsurf-case1-1.png delete mode 100644 doc/publican/html/images/content-updates/sync-subsurf-case1-2.png delete mode 100644 doc/publican/html/images/content-updates/sync-subsurf-case1-3.png delete mode 100644 doc/publican/html/images/content-updates/sync-subsurf-case1-4.png delete mode 100644 doc/publican/html/images/content-updates/sync-subsurf-case1-5.png delete mode 100644 doc/publican/html/images/content-updates/sync-subsurf-case1.drawio delete mode 100644 doc/publican/html/images/content-updates/sync-subsurf-case2-1.png delete mode 100644 doc/publican/html/images/content-updates/sync-subsurf-case2-2.png delete mode 100644 doc/publican/html/images/content-updates/sync-subsurf-case2-3.png delete mode 100644 doc/publican/html/images/content-updates/sync-subsurf-case2.drawio delete mode 100644 doc/publican/html/images/content-updates/sync-to-desync-subsurf-1.png delete mode 100644 doc/publican/html/images/content-updates/sync-to-desync-subsurf-2.png delete mode 100644 doc/publican/html/images/content-updates/sync-to-desync-subsurf-3.png delete mode 100644 doc/publican/html/images/content-updates/sync-to-desync-subsurf.drawio delete mode 100644 doc/publican/html/images/content-updates/sync-to-desync-transition-1.png delete mode 100644 doc/publican/html/images/content-updates/sync-to-desync-transition-2.png delete mode 100644 doc/publican/html/images/content-updates/sync-to-desync-transition-3.png delete mode 100644 doc/publican/html/images/content-updates/sync-to-desync-transition.drawio delete mode 100644 doc/publican/html/images/icon.svg delete mode 100644 doc/publican/html/images/meson.build delete mode 100644 doc/publican/html/images/wayland-architecture.gv delete mode 100644 doc/publican/html/images/wayland.png delete mode 100644 doc/publican/html/images/x-architecture.gv delete mode 100644 doc/publican/html/images/xwayland-architecture.png delete mode 100644 doc/publican/meson.build delete mode 100644 doc/publican/xsl/doxygen-to-publican.xsl delete mode 100644 doc/publican/xsl/merge-mapcoords.xsl delete mode 100644 doc/publican/xsl/protocol-interfaces-to-docbook.xsl delete mode 100644 doc/publican/xsl/protocol-to-docbook.xsl diff --git a/doc/doxygen/gen-doxygen.py b/doc/doxygen/gen-doxygen.py index 1bb07e57..6006efb1 100755 --- a/doc/doxygen/gen-doxygen.py +++ b/doc/doxygen/gen-doxygen.py @@ -9,11 +9,6 @@ import sys # Custom configuration for each documentation format doxygen_templates = { - 'xml': [ - 'GENERATE_XML=YES\n', - 'XML_OUTPUT={format}/{section}\n', - 'INPUT= {files}\n', - ], 'html': [ 'GENERATE_HTML=YES\n', 'HTML_OUTPUT={format}/{section}\n', @@ -60,9 +55,9 @@ parser.add_argument('--section', metavar='NAME', default='Client') parser.add_argument('--output-format', - help='The output format: xml, html, man', + help='The output format: html, man', metavar='FORMAT', - default='xml') + default='html') parser.add_argument('--stamp', help='Stamp file to output', metavar='STAMP_FILE', diff --git a/doc/doxygen/meson.build b/doc/doxygen/meson.build index 7d9938e8..bd4c5170 100644 --- a/doc/doxygen/meson.build +++ b/doc/doxygen/meson.build @@ -48,8 +48,6 @@ extra_cursor_files = [ gen_doxygen = find_program('gen-doxygen.py') -subdir('xml') - formats = { 'html': { 'Client': shared_files + client_files + extra_client_files, diff --git a/doc/doxygen/xml/Client/meson.build b/doc/doxygen/xml/Client/meson.build deleted file mode 100644 index e51fccb6..00000000 --- a/doc/doxygen/xml/Client/meson.build +++ /dev/null @@ -1,17 +0,0 @@ -tgt = custom_target( - 'xml-Client-doc', - command: [ - gen_doxygen, - # XXX pass doxygen path as argument - '--builddir=@OUTDIR@', - '--section=Client', - '--output-format=xml', - wayland_doxygen, - '@INPUT@', - ], - input: [ shared_files, client_files ], - output: [ 'combine.xslt', 'index.xml' ], -) - -doxygen_Client_combine_xslt = tgt[0] -doxygen_Client_index_xml = tgt[1] diff --git a/doc/doxygen/xml/Server/meson.build b/doc/doxygen/xml/Server/meson.build deleted file mode 100644 index 5df97440..00000000 --- a/doc/doxygen/xml/Server/meson.build +++ /dev/null @@ -1,17 +0,0 @@ -tgt = custom_target( - 'xml-Server-doc', - command: [ - gen_doxygen, - # XXX pass doxygen path as argument - '--builddir=@OUTDIR@', - '--section=Server', - '--output-format=xml', - wayland_doxygen, - '@INPUT@', - ], - input: [ shared_files, server_files ], - output: [ 'combine.xslt', 'index.xml' ], -) - -doxygen_Server_combine_xslt = tgt[0] -doxygen_Server_index_xml = tgt[1] diff --git a/doc/doxygen/xml/meson.build b/doc/doxygen/xml/meson.build deleted file mode 100644 index 479af8e7..00000000 --- a/doc/doxygen/xml/meson.build +++ /dev/null @@ -1,2 +0,0 @@ -subdir('Client') -subdir('Server') diff --git a/doc/meson.build b/doc/meson.build index b9f6fcba..f59a11d0 100644 --- a/doc/meson.build +++ b/doc/meson.build @@ -2,10 +2,7 @@ if not get_option('libraries') error('-Ddocumentation=true requires -Dlibraries=true') endif -dot = find_program('dot') doxygen = find_program('doxygen') -xsltproc = find_program('xsltproc') -xmlto = find_program('xmlto') mdbook = find_program('mdbook') cmd = run_command(doxygen, '--version', check: true) @@ -15,19 +12,6 @@ if vers.version_compare('< 1.6.0') error('Doxygen 1.6 or later is required for building documentation, found @0@.'.format(vers)) endif -cmd = run_command(dot, '-V', check: true) -message('dot: ' + cmd.stderr().strip()) -vers = cmd.stderr().split('version')[1].strip().split(' ')[0] -if vers.version_compare('< 2.26.0') - error('Dot (Graphviz) 2.26 or later is required for building documentation, found @0@.'.format(vers)) -endif - -manpage_xsl = 'http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl' -cmd = run_command(xsltproc, '--nonet', manpage_xsl, check: false) -if cmd.returncode() != 0 - error('The style sheet for man pages providing "@0@" was not found.'.format(manpage_xsl)) -endif - publican_install_prefix = join_paths( get_option('prefix'), get_option('datadir'), @@ -39,5 +23,4 @@ publican_install_prefix = join_paths( publican_html_dir = 'html' subdir('doxygen') -subdir('publican') subdir('book') diff --git a/doc/publican/.gitignore b/doc/publican/.gitignore deleted file mode 100644 index c1656e70..00000000 --- a/doc/publican/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -Wayland -en-US/ -publican-copy.cfg diff --git a/doc/publican/Architecture.xml b/doc/publican/Architecture.xml deleted file mode 100644 index fb317685..00000000 --- a/doc/publican/Architecture.xml +++ /dev/null @@ -1,392 +0,0 @@ - - -%BOOK_ENTITIES; -]> - - Wayland Architecture -

- X vs. Wayland Architecture - - A good way to understand the Wayland architecture - and how it is different from X is to follow an event - from the input device to the point where the change - it affects appears on screen. - - - This is where we are now with X: - -
- X architecture diagram - - - - - - - - - - - - - - - -
- - - - - The kernel gets an event from an input - device and sends it to X through the evdev - input driver. The kernel does all the hard - work here by driving the device and - translating the different device specific - event protocols to the linux evdev input - event standard. - - - - - The X server determines which window the - event affects and sends it to the clients - that have selected for the event in question - on that window. The X server doesn't - actually know how to do this right, since - the window location on screen is controlled - by the compositor and may be transformed in - a number of ways that the X server doesn't - understand (scaled down, rotated, wobbling, - etc). - - - - - The client looks at the event and decides - what to do. Often the UI will have to change - in response to the event - perhaps a check - box was clicked or the pointer entered a - button that must be highlighted. Thus the - client sends a rendering request back to the - X server. - - - - - When the X server receives the rendering - request, it sends it to the driver to let it - program the hardware to do the rendering. - The X server also calculates the bounding - region of the rendering, and sends that to - the compositor as a damage event. - - - - - The damage event tells the compositor that - something changed in the window and that it - has to recomposite the part of the screen - where that window is visible. The compositor - is responsible for rendering the entire - screen contents based on its scenegraph and - the contents of the X windows. Yet, it has - to go through the X server to render this. - - - - - The X server receives the rendering requests - from the compositor and either copies the - compositor back buffer to the front buffer - or does a pageflip. In the general case, the - X server has to do this step so it can - account for overlapping windows, which may - require clipping and determine whether or - not it can page flip. However, for a - compositor, which is always fullscreen, this - is another unnecessary context switch. - - - - - - As suggested above, there are a few problems with this - approach. The X server doesn't have the information to - decide which window should receive the event, nor can it - transform the screen coordinates to window-local - coordinates. And even though X has handed responsibility for - the final painting of the screen to the compositing manager, - X still controls the front buffer and modesetting. Most of - the complexity that the X server used to handle is now - available in the kernel or self contained libraries (KMS, - evdev, mesa, fontconfig, freetype, cairo, Qt etc). In - general, the X server is now just a middle man that - introduces an extra step between applications and the - compositor and an extra step between the compositor and the - hardware. - - - In Wayland the compositor is the display server. We transfer - the control of KMS and evdev to the compositor. The Wayland - protocol lets the compositor send the input events directly - to the clients and lets the client send the damage event - directly to the compositor: - -
- Wayland architecture diagram - - - - - - - - - - - - - -
- - - - - The kernel gets an event and sends - it to the compositor. This - is similar to the X case, which is - great, since we get to reuse all the - input drivers in the kernel. - - - - - The compositor looks through its - scenegraph to determine which window - should receive the event. The - scenegraph corresponds to what's on - screen and the compositor - understands the transformations that - it may have applied to the elements - in the scenegraph. Thus, the - compositor can pick the right window - and transform the screen coordinates - to window-local coordinates, by - applying the inverse - transformations. The types of - transformation that can be applied - to a window is only restricted to - what the compositor can do, as long - as it can compute the inverse - transformation for the input events. - - - - - As in the X case, when the client - receives the event, it updates the - UI in response. But in the Wayland - case, the rendering happens in the - client, and the client just sends a - request to the compositor to - indicate the region that was - updated. - - - - - The compositor collects damage - requests from its clients and then - recomposites the screen. The - compositor can then directly issue - an ioctl to schedule a pageflip with - KMS. - - - - - - -
-
- Wayland Rendering - - One of the details I left out in the above overview - is how clients actually render under Wayland. By - removing the X server from the picture we also - removed the mechanism by which X clients typically - render. But there's another mechanism that we're - already using with DRI2 under X: direct rendering. - With direct rendering, the client and the server - share a video memory buffer. The client links to a - rendering library such as OpenGL that knows how to - program the hardware and renders directly into the - buffer. The compositor in turn can take the buffer - and use it as a texture when it composites the - desktop. After the initial setup, the client only - needs to tell the compositor which buffer to use and - when and where it has rendered new content into it. - - - - This leaves an application with two ways to update its window contents: - - - - - - Render the new content into a new buffer and tell the compositor - to use that instead of the old buffer. The application can - allocate a new buffer every time it needs to update the window - contents or it can keep two (or more) buffers around and cycle - between them. The buffer management is entirely under - application control. - - - - - Render the new content into the buffer that it previously - told the compositor to to use. While it's possible to just - render directly into the buffer shared with the compositor, - this might race with the compositor. What can happen is that - repainting the window contents could be interrupted by the - compositor repainting the desktop. If the application gets - interrupted just after clearing the window but before - rendering the contents, the compositor will texture from a - blank buffer. The result is that the application window will - flicker between a blank window or half-rendered content. The - traditional way to avoid this is to render the new content - into a back buffer and then copy from there into the - compositor surface. The back buffer can be allocated on the - fly and just big enough to hold the new content, or the - application can keep a buffer around. Again, this is under - application control. - - - - - - In either case, the application must tell the compositor - which area of the surface holds new contents. When the - application renders directly to the shared buffer, the - compositor needs to be noticed that there is new content. - But also when exchanging buffers, the compositor doesn't - assume anything changed, and needs a request from the - application before it will repaint the desktop. The idea - that even if an application passes a new buffer to the - compositor, only a small part of the buffer may be - different, like a blinking cursor or a spinner. - -
-
- Accelerated GPU Buffer Exchange - - Clients - exchange - GPU buffers with the compositor as dma-buf file descriptors, which are universal handles - that are independent of any particular rendering API or memory allocator. The - linux-dmabuf-v1 - protocol is used to turn one or more dma-buf FDs into a - wl_buffer. - - - If the client uses the - Vulkan - or - EGL - (via - wayland-egl) - window-system integration - (WSI), this is done transparently by the WSI. - - - Clients can alternatively allocate and import dma-bufs themselves - using the GBM library, Vulkan, udmabuf, or dma-buf heaps. - - - - - Using GBM, the client can allocate a gbm_bo and export one or more - dma-buf FDs from it. - - - - - Using Vulkan, the client can create a VkDeviceMemory object and use - VK_EXT_external_memory_dma_buf - and - VK_EXT_image_drm_format_modifier - to export a dma-buf FD from it. - - - - - udmabuf - can be used to create dma-buf FDs from linear host memory. - - - - - Dma-buf heaps - can be used by privileged applications to create dma-buf FDs on embedded - devices. - - - - - Compositors use - VK_EXT_external_memory_dma_buf - and - VK_EXT_image_drm_format_modifier - or - EGL_EXT_image_dma_buf_import - and - EGL_EXT_image_dma_buf_import_modifiers - to import the dma-bufs provided by the client into their own Vulkan or - EGL renderers. - - - Clients do not need to wait for the GPU to finish rendering before submitting - dma-bufs to the compositor. Clients can use the - linux-drm-syncobj-v1 - protocol to exchange DRM synchronization objects with the compositor. These objects - are used to asynchronously signal ownership transfer of buffers from clients to the - compositor and vice versa. The WSIs do this transparently. - - - If the linux-drm-syncobj-v1 protocol is not supported by the compositor, clients - and compositors can use the - DMA_BUF_IOCTL_EXPORT_SYNC_FILE - and - DMA_BUF_IOCTL_IMPORT_SYNC_FILE - ioctls to access and create implicit synchronization barriers. - -
-
- Display Programming - - Compositors enumerate DRM KMS devices using - udev. - Udev also notifies compositors of KMS device and display hotplug events. - - - Access to DRM KMS device ioctls is privileged. Since compositors usually run as - unprivileged applications, they typically gain access to a privileged file - descriptor using the - TakeDevice - method provided by logind. - - - Using the file descriptor, compositors use KMS - ioctls - to enumerate the available displays. - - - Compositors use - atomic mode setting - to change the buffer shown by the display, to change the display's resolution, to - enable or disable HDR, and so on. - -
- diff --git a/doc/publican/Author_Group.xml b/doc/publican/Author_Group.xml deleted file mode 100644 index 2bdde62b..00000000 --- a/doc/publican/Author_Group.xml +++ /dev/null @@ -1,16 +0,0 @@ - - -%BOOK_ENTITIES; -]> - - - Kristian - Høgsberg - - Intel Corporation - - krh@bitplanet.net - - - diff --git a/doc/publican/Book_Info.xml b/doc/publican/Book_Info.xml deleted file mode 100644 index 897673a0..00000000 --- a/doc/publican/Book_Info.xml +++ /dev/null @@ -1,71 +0,0 @@ - - -%BOOK_ENTITIES; -]> - - Wayland - The Wayland Protocol - Documentation - 0.1 - 1 - 0 - - - Wayland is a protocol for a compositor to talk to - its clients as well as a C library implementation of - that protocol. The compositor can be a standalone - display server running on Linux kernel modesetting - and evdev input devices, an X application, or a - Wayland client itself. The clients can be - traditional applications, X servers (rootless or - fullscreen) or other display servers. - - - - - - - - - - Wayland logo - - - - - - - - Copyright &YEAR; &HOLDER; - - - - Permission is hereby granted, free of charge, to any person obtaining a - copy of this software and associated documentation files (the "Software"), - to deal in the Software without restriction, including without limitation - the rights to use, copy, modify, merge, publish, distribute, sublicense, - and/or sell copies of the Software, and to permit persons to whom the - Software is furnished to do so, subject to the following conditions: - - - - The above copyright notice and this permission notice (including the next - paragraph) shall be included in all copies or substantial portions of the - Software. - - - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - DEALINGS IN THE SOFTWARE. - - - - - - diff --git a/doc/publican/Client.xml b/doc/publican/Client.xml deleted file mode 100644 index 19bf3e95..00000000 --- a/doc/publican/Client.xml +++ /dev/null @@ -1,92 +0,0 @@ - - - -%BOOK_ENTITIES; -]> - - Client API -
Introduction - - The open-source reference implementation of Wayland protocol is - split in two C libraries, libwayland-client and libwayland-server. Their main - responsibility is to handle the Inter-process communication - (IPC) with each other, therefore guaranteeing - the protocol objects marshaling and messages synchronization. - - - A client uses libwayland-client to communicate with one or more - wayland servers. A wl_display object is - created and manages each open connection to a server. At least one - wl_event_queue - object is created for each wl_display, this holds events as they - are received from the server until they can be - processed. Multi-threading is supported by creating an additional - wl_event_queue for each additional thread, each object can have - it's events placed in a particular queue, so potentially a - different thread could be made to handle the events for each - object created. - - - Though some convenience functions are provided, libwayland-client - is designed to allow the calling code to wait for events, so that - different polling mechanisms can be used. A file descriptor is - provided, when it becomes ready for reading the calling code can - ask libwayland-client to read the available events from it into - the wl_event_queue objects. - - - The library only provides low-level access to the wayland objects. - Each object created by the client is represented by a wl_proxy object that this - library creates. This includes the id that is actually - communicated over the socket to the server, a void* data pointer - that is intended to point at a client's representation of the - object, and a pointer to a static wl_interface object, - which is generated from the xml and identifies the object's class - and can be used for introspection into the messages and events. - - - Messages are sent by calling wl_proxy_marshal. This will write a - message to the socket, by using the message id and the - wl_interface to identify the types of each argument and convert - them into stream format. Most software will call type-safe - wrappers generated from the xml description of the Wayland protocols. For - instance the C header file generated from the xml defines the - following inline function to transmit the wl_surface::attach - message: - - static inline void -wl_surface_attach(struct wl_surface *wl_surface, struct wl_buffer *buffer, int32_t x, int32_t y) -{ - wl_proxy_marshal((struct wl_proxy *) wl_surface, WL_SURFACE_ATTACH, buffer, x, y); -} - - Events (messages from the server) are handled by calling a - "dispatcher" callback the client stores in the wl_proxy for each - event. A language binding for a string-based interpreter, such as - CPython, might have a dispatcher that uses the event name from the - wl_interface to identify the function to call. The default - dispatcher uses the message id number to index an array of - functions pointers, called a wl_listener, and the wl_interface to - convert data from the stream into arguments to the function. The - C header file generated from the xml defines a per-class structure - that forces the function pointers to be of the correct type, for - instance the wl_surface::enter - event defines this pointer in the wl_surface_listener object: - - struct wl_surface_listener { - void (*enter)(void *data, struct wl_surface *, struct wl_output *); - ... -} - - -
- &doxygen; -
diff --git a/doc/publican/Color.xml b/doc/publican/Color.xml deleted file mode 100644 index ceee779e..00000000 --- a/doc/publican/Color.xml +++ /dev/null @@ -1,139 +0,0 @@ - - -%BOOK_ENTITIES; -]> - - - Color management - -
- Overview - - - Color management in Wayland considers only displays. All pictures in - Wayland are always display-referred, meaning that the pixel values are - intended as-is for some specific display where they would produce the - light emissions (stimuli) the picture's - author desired. Wayland does not support displaying "raw" camera or - scanner images as they are not display-referred, nor are they even - pictures without complex and subjective processing. - - - Stimuli — the picture itself — are only half of the picture reproduction. - The other half is the environment where a display is viewed. A striking - example is comparing a brightly lit office to a dark movie theater, the - stimuli required to produce a good reading of the picture is greatly - different. Therefore display-referred does not include only the display - but the viewing environment as well. - - - Window systems have been very well capable of operating without any - explicit consideration to color management. This is because there used to - be the implicit assumption of the standard display, the sRGB display, - which all computer monitors implemented, more or less. The viewing - environment was and still is accounted by adjusting the display and/or the - room to produce a workable experience. Pictures are authored on a computer - system by drawing, painting and adjusting the picture until it looks right - on the author's monitor. This implicitly builds the standard display and - environment assumption into the picture data. Deviations from the sRGB - specification were minor enough that they often did not matter if not in a - professional context like the printing industry. Displaying video material - required some more attention to the details, because video and television - standards differ enough from the sRGB display. What really made explicit - color management a hard requirement for entertainment is the coming of - wide color gamut (WCG) and high dynamic range (HDR) materials and - displays. - - - The color management design in Wayland follows the general Wayland design - principles: compositors tell clients what would be the optimal thing to - do, clients tell the compositors what kind of pictures they are actually - producing, and then compositors display those pictures the best they can. - -
- -
- Protocol Interfaces - - - Color management interfaces in Wayland and divided into two protocols: - color-management - and - color-representation. - They are designed to work together, but they can also be used - independently when the other one is not needed. - - -
- Color-management - - - Color management protocol has two main purposes. First, it puts the - responsibility of color management on the compositor. This means that - clients do not necessarily need to care about color management at all, - and can display just fine by using the traditional standard display - assumption even when the actual display is wildly different. Clients - can also choose to target some other assumed display and let the - compositor handle it, or they can explicitly render for the actual - display at hand. Second, when the window system has multiple different - monitors, and a wl_surface happens to span more than one monitor, the - compositor can display the surface content correctly on all spanned - monitors simultaneously, as much as physically possible. - - - Color-management protocol concentrates on colorimetry: when you have a - pixel with RGB values, what stimulus do those values represent. The - stimulus definition follows the CIE 1931 two-degree observer model. Some - core concepts here are color primaries, white point, transfer function, - and dynamic range. The viewing environment is represented in an - extremely simplified way as the reference white luminance. The - connection between pixel RGB values and stimulus plus viewing - environment is recorded in an image description - object. Clients can create image description objects and tag - wl_surfaces with them, to indicate what kind of surface - content there will be. Clients can also ask what image description the - compositor would prefer to have on the wl_surface, and that - preference can change over time, e.g. when the wl_surface - is moved from one - wl_output to another. Following the compositor's preference - may provide advantages in image quality and power consumption. - - - Image description objects can come in two flavors: parametric and - ICC-based. The above was written with parametric image descriptions in - mind, and they have first-class support for HDR. ICC-based image - descriptions are wrapping an ICC profile and have no other data. ICC - profiles are the standard tool for standard dynamic range (SDR) display - color management. This means the capabilities between the two flavors - differ, and one cannot always be replaced by the other. Compositor - support for each flavor is optional. - -
- -
- Color-representation - - - Color-representation protocol deals with (potentially sub-sampled) - YCbCr-RGB conversion, quantization range, and the inclusion of alpha in - the RGB color channels, a.k.a. pre-multiplication. There are several - different specifications on how an YCbCr-like (including ICtCp) signal, - with chroma sub-sampling or not, is created from a full-resolution RGB - image. Again, a client can tag a wl_surface with - color-representation metadata to tell the compositor what kind of pixel - data will be displayed through the wl_surface. - - - The main purpose of color-representation is to correctly off-load the - YCbCr-RGB conversion to the compositor, which can then opportunistically - off-load it further to very power-efficient fixed-function circuitry in - a display controller. This can significantly reduce power consumption - when watching videos compared to using a GPU for the same, and on some - embedded hardware platforms it is a hard requirement for processing high - resolution video. - -
-
-
diff --git a/doc/publican/Compositors.xml b/doc/publican/Compositors.xml deleted file mode 100644 index 7a7bdaa0..00000000 --- a/doc/publican/Compositors.xml +++ /dev/null @@ -1,128 +0,0 @@ - - -%BOOK_ENTITIES; -]> - - Types of Compositors - - - Compositors come in different types, depending on which - role they play in the overall architecture of the OS. - For instance, a - system compositor - can be used for booting the system, handling multiple user switching, a - possible console terminal emulator and so forth. A different compositor, a - session compositor - would provide the actual desktop environment. There are many ways for - different types of compositors to co-exist. - - - In this section, we introduce three types of Wayland compositors relying - on libwayland-server. - - -
- System Compositor - - A system compositor can run from early boot until shutdown. - It effectively replaces the kernel vt system, and can tie in - with the systems graphical boot setup and multiseat support. - - - A system compositor can host different types of session - compositors, and let us switch between multiple sessions - (fast user switching, or secure/personal desktop switching). - - - A linux implementation of a system compositor will typically - use libudev, egl, kms, evdev and cairo. - - - For fullscreen clients, the system compositor can reprogram the - video scanout address to read directly from the client provided - buffer. - -
-
- Session Compositor - - A session compositor is responsible for a single user session. - If a system compositor is present, the session compositor will - run nested under the system compositor. Nesting is feasible because - the protocol is asynchronous; roundtrips would be too expensive - when nesting is involved. If no system compositor is present, a - session compositor can run directly on the hardware. - - - X applications can continue working under a session compositor - by means of a root-less X server that is activated on demand. - - - Possible examples for session compositors include - - - - gnome-shell - - - - - moblin - - - - - kwin - - - - - kmscon - - - - - rdp session - - - - - Weston with X11 or Wayland backend is a session compositor nested - in another session compositor. - - - - - fullscreen X session under Wayland - - - - -
-
- Embedding Compositor - - X11 lets clients embed windows from other clients, or lets clients - copy pixmap contents rendered by another client into their window. - This is often used for applets in a panel, browser plugins and similar. - Wayland doesn't directly allow this, but clients can communicate GEM - buffer names out-of-band, for example, using D-Bus, or command line - arguments when the panel launches the applet. Another option is to - use a nested Wayland instance. For this, the Wayland server will have - to be a library that the host application links to. The host - application will then pass the Wayland server socket name to the - embedded application, and will need to implement the Wayland - compositor interface. The host application composites the client - surfaces as part of it's window, that is, in the web page or in the - panel. The benefit of nesting the Wayland server is that it provides - the requests the embedded client needs to inform the host about buffer - updates and a mechanism for forwarding input events from the host - application. - - - An example for this kind of setup is firefox embedding the flash - player as a kind of special-purpose compositor. - -
-
diff --git a/doc/publican/Content_Updates.xml b/doc/publican/Content_Updates.xml deleted file mode 100644 index 30c4ed33..00000000 --- a/doc/publican/Content_Updates.xml +++ /dev/null @@ -1,460 +0,0 @@ - - -%BOOK_ENTITIES; -]> - - - Content Updates - -
- Overview - - - In the Wayland protocol, requests are asynchronous but take effect - immediately when the compositor receives them. However, some requests on - surfaces are not applied immediately but are instead double-buffered to - allow atomic changes. These double-buffered changes are committed through - the wl_surface.commit request, which creates a Content Update. - - - - Content Updates encapsulate all double-buffered state changes and can be - applied by the compositor. The complexity arises when considering - subsurfaces, which can operate in synchronized mode. When a subsurface is - synchronized, its Content Updates must be applied atomically together with - the parent surface's state. This synchronization can extend through an - entire tree of subsurfaces, where child subsurfaces inherit the - synchronized behavior from their parents. - - - - Historically, Content Updates from synchronized subsurfaces were merged - into the pending state of the parent surface on commit. However, the - introduction of constraints—which can defer the application of Content - Updates—necessitated a more sophisticated model. This led to the - implementation of per-surface queues of Content Updates, with dependencies - between Content Updates across different queues. This queuing model - maintains backwards compatibility with the earlier approach of merging - Content Updates into the parent's pending state on commit. - - - - The core protocol defines the semantics of Content Updates using - per-surface queues, but compositors that do not need to support constraints - may implement the simpler legacy model where synchronized subsurface states - are merged directly into the parent's pending state. - -
- -
- Rules - - - The core protocol specifies the behavior in wl_subsurface and - wl_surface.commit. The behavior can be summarized by the following rules: - - - - - - Content Updates (CU) contain all double-buffered state of the surface and - selected state from their direct children. - - - - - Surfaces which are effectively synchronized create Synchronized - Content Updates (SCU), otherwise they create Desync Content Updates - (DCU). - - - - - When a CU is created, it gets a dependency on the previous CU of the - same queues (if it exists). - - - - - When a CU is created, it gets a dependency on the last SCU of direct - child surfaces that are not reachable (if they exists). - - - - - The CUs and their dependencies form a DAG, where CUs are nodes and - dependencies are edges. - - - - - All DCUs starting from the front of the queues until the first SCU or - the back of the queue is reached are candidates. - - - - - If the maximal DAG that's reachable from a candidate (candidate DAG) - does not have any constraints, then this DAG can be applied. - - - - - A DAG is applied atomically by recursively applying a content update - without dependencies and removing it from the DAG. - - - - - Surfaces transition from effectively sync to effectively desync after - their parents. - - - - - When a surface transitions to effectively desync, all SCUs in its - queue which are not reachable by a DCU become DCUs. - - - -
- -
- Examples - - - These examples should help to build an intuition for how content updates - actually behave. They cover the interesting edge cases, such as - subsurfaces with constraints, and transitioning from a sync subsurface to - a desync one. - - - In all the examples below, the surface T1 refers to a toplevel surface, - SS1 refers to a sub-surface which is a child of T1, and SS2 refers to a - sub-surface which is a child of SS1. - - -
- Legend - - - - - -
- -
- Simple Desynchronized Case - - - - - - - SS2 is effectively desynchronized and commits. This results in the - desynchronized content update (DCU) 1. - - - - - - - - - - DCU 1 is a candidate, and the candidate DAG - reachable from DCU 1 is only - DCU 1 itself. DCU 1 and - thus the candidate DAG does not have any constraints and can be - applied. - - - - - - - - - - The content updates of the candidate DAG get applied to the surface - atomically. - - - - - - - - - - T1 commits a DCU with a buffer-sync constraint. - It is a candidate but its DAG can't be applied because it contains a - constraint. - - - - - - - - - - T1 commits another CU (DCU 3) which is added at - the end of the queue, with a dependency to the previous CU (DCU - 2). Both DCU 2 and DCU - 3 are candidates, but both DAGs contain DCU - 2 with a constraint, and can't be applied. - - - - - - - - - - When the constraint gets cleared, both DAGs can be applied to the - surface atomitcally (either only 2, or - 2 and 3). - - - -
- -
- Simple Synchronized Case - - - - - - - SS1 and SS2 are effectively synchronized. SS2 commits SCU 1. - - - - - - - - - - SS1 commits SCU 2. The direct child surfaces SS2 has the last SCU 1 in its queue, which is not reachable. This creates a dependency from SCU 2 to SCU 1. - - - - - - - - - - SS1 commits SCU 3. The direct child surfaces SS2 has the last SCU 1 in its queue, which is already reachable by SCU 2. No dependency to SCU 1 is created. A dependency to the previous CU of the same queue (SCU 2) is created. - - - - - - - - - - T1 commit DCU 4. It is a candidate, its DAG does not contain any constraint and it can be applied. - - - - - - - - - - The DAG gets applied to the surfaces atomically. - - - -
- -
- Complex Synchronized Subsurface Case 1 - - - - - - - Every DCU (1 and 6) contain - CUs with constraints in their candidate DAG - - - - - - - - - - Waiting until the buffer-sync constrain on CU - 1 is cleared, the candidate DAG of CU - 1 does not contain constraints and can be applied - - - - - - - - - - That leaves the candidate DAG of CU 6 which still - contains another CU with a buffer-sync constrain - - - - - - - - - - Waiting until the buffer-sync constrain on CU - 6 is cleared, the candidate DAG of - 6 does not contain CUs with constraints and can - be applied. - - - - - - - - - - There is no DCU left and no constraint remaining. Nothing more can be - applied without a new CU. - - - -
- -
- Complex Synchronized Subsurface Case 2 - - - - - - - Both DCUs (1 and 6) have a - reachable DAG containing CU 1 with a constraint - - - - - - - - - - Waiting until the buffer-sync constrain on - 1 is cleared, both DAGs contain no CU with - constraints and can be applied in any order - - - - - - - - - - That leaves the same state as in the previous case - - - -
- -
- Synchronized to Desynchronized Subsurface - - - - - - - There is one DCU (4) with its reachable DAG - that cannot be applied because CU 4 contains a - constraint - - - - - - - - - - Surface SS1 transitions from effectively - synchronized to effectively desynchronized. SCU - 2 is reachable by DCU 4 so - nothing changes. - - - - - - - - - - Surface SS1 provides a new DCU - (5) but because the CU before - (2) is a Synchronized CU, it is not a candidate - - - -
- -
- Synchronized to Desynchronized Transition - - - - - - - There are four SCUs and all surfaces are effectively synchronized. - - - - - - - - - - Surface SS1 transitions to effectively - desynchronized and SCU 2 becomes a DCU because - it is not reachable from a DCU - - - - - - - - - - Surface SS2 transitions to effectively - desynchronized. SCUs 3 and - 4 become DCUs because they are not reachable - from a DCU. SCU 1 does not change because it is - reachable by DCU 2. - - - -
- -
-
diff --git a/doc/publican/Foreword.xml b/doc/publican/Foreword.xml deleted file mode 100644 index 97908356..00000000 --- a/doc/publican/Foreword.xml +++ /dev/null @@ -1,28 +0,0 @@ - - -%BOOK_ENTITIES; -]> - - - Preface - - - This document describes the (i) Wayland architecture, (ii) Wayland model of - operation and (iii) its library API. Also, the Wayland protocol specification is shown - in the Appendix. This document is aimed primarily at Wayland developers and - those looking to program with it; it does not cover application development. - - - There have been many contributors to this document and since this is only the - first edition many errors are expected to be found. We appreciate - corrections. - - -Yours, - - the Wayland open-source community - November 2012 - - diff --git a/doc/publican/Introduction.xml b/doc/publican/Introduction.xml deleted file mode 100644 index f2a82744..00000000 --- a/doc/publican/Introduction.xml +++ /dev/null @@ -1,116 +0,0 @@ - - -%BOOK_ENTITIES; -]> - - Introduction -
- Motivation - - Most Linux and Unix-based systems rely on the X Window System (or - simply X) as the low-level protocol for building - bitmap graphics interfaces. On these systems, the X stack has grown to - encompass functionality arguably belonging in client libraries, - helper libraries, or the host operating system kernel. Support for - things like PCI resource management, display configuration management, - direct rendering, and memory management has been integrated into the X - stack, imposing limitations like limited support for standalone - applications, duplication in other projects (e.g. the Linux fb layer - or the DirectFB project), and high levels of complexity for systems - combining multiple elements (for example radeon memory map handling - between the fb driver and X driver, or VT switching). - - - Moreover, X has grown to incorporate modern features like offscreen - rendering and scene composition, but subject to the limitations of the - X architecture. For example, the X implementation of composition adds - additional context switches and makes things like input redirection - difficult. - - - - - - - - X architecture diagram - - - - - The diagram above illustrates the central role of the X server and - compositor in operations, and the steps required to get contents on to - the screen. - - - Over time, X developers came to understand the shortcomings of this - approach and worked to split things up. Over the past several years, - a lot of functionality has moved out of the X server and into - client-side libraries or kernel drivers. One of the first components - to move out was font rendering, with freetype and fontconfig providing - an alternative to the core X fonts. Direct rendering OpenGL as a - graphics driver in a client side library went through some iterations, - ending up as DRI2, which abstracted most of the direct rendering - buffer management from client code. Then cairo came along and provided - a modern 2D rendering library independent of X, and compositing - managers took over control of the rendering of the desktop as toolkits - like GTK+ and Qt moved away from using X APIs for rendering. Recently, - memory and display management have moved to the Linux kernel, further - reducing the scope of X and its driver stack. The end result is a - highly modular graphics stack. - - -
- -
- The compositing manager as the display server - - Wayland is a new display server and compositing protocol, and Weston - is the implementation of this protocol which builds on top of all the - components above. We are trying to distill out the functionality in - the X server that is still used by the modern Linux desktop. This - turns out to be not a whole lot. Applications can allocate their own - off-screen buffers and render their window contents directly, using - hardware accelerated libraries like libGL, or high quality software - implementations like those found in Cairo. In the end, what’s needed - is a way to present the resulting window surface for display, and a - way to receive and arbitrate input among multiple clients. This is - what Wayland provides, by piecing together the components already in - the eco-system in a slightly different way. - - - X will always be relevant, in the same way Fortran compilers and VRML - browsers are, but it’s time that we think about moving it out of the - critical path and provide it as an optional component for legacy - applications. - - - Overall, the philosophy of Wayland is to provide clients with a way to - manage windows and how their contents are displayed. Rendering is left - to clients, and system wide memory management interfaces are used to - pass buffer handles between clients and the compositing manager. - - - - - - - - Wayland architecture diagram - - - - - The figure above illustrates how Wayland clients interact with a - Wayland server. Note that window management and composition are - handled entirely in the server, significantly reducing complexity - while marginally improving performance through reduced context - switching. The resulting system is easier to build and extend than a - similar X system, because often changes need only be made in one - place. Or in the case of protocol extensions, two (rather than 3 or 4 - in the X case where window management and/or composition handling may - also need to be updated). - -
-
diff --git a/doc/publican/Message_XML.xml b/doc/publican/Message_XML.xml deleted file mode 100644 index 0188eead..00000000 --- a/doc/publican/Message_XML.xml +++ /dev/null @@ -1,928 +0,0 @@ - - -%BOOK_ENTITIES; - -protocol"> -copyright"> -description"> -interface"> -enum"> -entry"> -request"> -event"> -arg"> - - - -]> - - - Message Definition Language - -
- Overview - - - The fundamentals of the Wayland protocol are explained in - . This chapter formally defines the - language used to define Wayland protocols. - - - Wayland is an object-oriented protocol. Each object follows exactly - one interface. An interface is a collection of message and enumeration - definitions. A message can be either a request (sent by a client) - or an event (sent by a server). A message can have arguments. - All arguments are typed. - -
- -
- XML Elements - -
- protocol - - protocol ::= (©right;?, &description;? &interface;+) - - - protocol is the root element in a Wayland protocol XML file. - Code generation tools may optionally use the protocol - name in API symbol names. The XML file name should be - similar to the protocol name. - - - The &description; element should be used to document the intended - purpose of the protocol, give an overview, and give any development - stage notices if applicable. - - - The ©right; element should be used to indicate the copyrights and - the license of the XML file. - - - - Required attributes - - - - name="cname" - - - - The name of the protocol (a.k.a protocol extension). - &cname-requirements; - - - The name should be globally unique. Protocols to be included in - wayland-protocols - must follow the naming rules set there. Other protocols should use - a unique prefix for the name, e.g. referring to the owning project's - name. - - - - -
- - - -
- description - - - Parent elements: &protocol;, &interface;, &request;, &event;, - &arg;, &enum;, &entry; - - - description ::= #PCDATA - - - Contains human-readable documentation for its parent element. - May contain formatted text, including paragraphs and bulleted - lists. - - - - Optional attributes - - - - summary="summary" - - - - A short (half a line at most) description of the documented - element. - - - When a &description; element is used, it is recommended to - not use the summary attribute of the parent - element. - - - - -
- -
- interface - - - Parent elements: &protocol; - - - interface ::= (&description;?, (&request;|&event;|&enum;)+) - - - An interface element contains the &request;s and &event;s that form the - interface. Enumerations can also be defined with &enum; elements. - These all belong into the namespace of the interface. Code generation - tools may use the interface name in API symbol names. - - - Interfaces form an ancestry tree. Aside from - , new protocol objects are - always created through an existing protocol object that may be referred to - as the factory object. - This can happen in one of two ways: the factory object's interface either - defines or does not define the new object's interface. - - - When the factory interface defines the new object's interface, the new - object also inherits the factory object's interface version number. - This number defines the interface version of the new object. - The factory object is referred to as - the parent object and the factory interface is - referred to as the parent interface. This - forms the ancestry tree of interfaces. - - - When the factory interface does not define the new object's interface, - both the interface name and the version must be communicated explicitly. - The foremost example of this is - . - In this case the terms "parent" or "ancestor" are not used. Interfaces - that are advertised through - are called global interfaces, or globals for short. - - - If objects having the interface can cause protocol errors, the protocol - error codes must be defined within the interface with an &enum; - element with its name set to "error". - Protocol error codes are always specific to the interface of the object - referred to in . - - - The &description; element should be used to describe the purpose and - the general usage of the interface. - - - - Required attributes - - - - name="cname" - - - - The name of the interface. &cname-requirements; - The name must be unique in the &protocol;, and preferably it should - also be globally unique to avoid API conflicts in language bindings - of multiple protocols. - - - Protocols to be included in - wayland-protocols - must follow the interface naming rules set there. Other protocols - should use a unique prefix for the name, e.g. referring to the owning - project's name. - - - - - - version="V" - - - - The interface's latest version number V must - be an integer greater than zero. An interface element defines - all versions of the interface from 1 to V - inclusive. The contents of each interface version are defined in each of - the &request;, &event;, &enum; and &entry; elements using the attributes - since and deprecated-since, and - in the specification text. - - - When an interface is extended, the version number must be incremented - on all the interfaces part of the same interface ancestry tree. - The exception to this rule are interfaces which are forever stuck - to version 1, which is usually caused by having multiple parent - interfaces with independent ancestor global interfaces. - - - A protocol object may have any defined version of the interface. - The version of the object is determined at runtime either - by inheritance from another protocol object or explicitly. - - - It is possible for a protocol object to have a version higher than - defined by its interface. This may happen when the interface is - stuck at version 1 as per above. It may also happen when a protocol - XML file has not been thoroughly updated as required. In such cases - the object shall function as with the highest defined interface - version. - - - - -
- -
- request - - - Parent elements: &interface; - - - request ::= (&description;?, &arg;*) - - - Defines a request, a message from a client to a server. - Requests are always associated with a specific protocol object. - - - Requests are automatically assigned opcodes in the order they - appear inside the &interface; element. Therefore the only - backwards-compatible way to add requests to an interface is to - add them to the end. Any &event; elements do not interfere - with request opcode assignments. - - - The &arg; elements declare the request's arguments. - There can be 0 to 20 arguments for a request. - The order of &arg; inside the request element defines the order of - the arguments on the wire. All declared arguments are mandatory, - and extra arguments are not allowed on the wire. - - - The &description; element should be used to document the request. - - - - Required attributes - - - - name="cname" - - - - The name of the request. &cname-requirements; - The name must be unique within all requests and &event;s in the - containing &interface;. - - - Code and language binding generators may use the name in the API - they create. The name of the containing - &interface; provides the namespace for requests. - - - - - - - Optional attributes - - - - type="destructor" - - - - When this attribute is present, the request is a destructor: - it shall destroy the protocol object it is sent on. Protocol IPC - libraries may use this for bookkeeping protocol object lifetimes. - - - Libwayland-client uses this information to ignore incoming &event;s - for destroyed protocol objects. Such events may occur due to a - natural race condition between the client destroying a protocol - object and the server sending events before processing the - destroy request. - - - - - - since="S" - - - - S must be an integer greater than zero. - If since is not specified, - since="1" is assumed. - - - This request was added in &interface; version - S. The request does not exist if the - protocol object has a bound version smaller than - S. Attempts to use it in such a case - shall raise the protocol error - wl_display.error.invalid_method. - - - - - - deprecated-since="D" - - - - D must be an integer greater than the - value of since. - If deprecated-since is not specified, then - the request is not deprecated in any version of the containing - &interface;. - - - This request was deprecated in &interface; version - D and above, and should not be sent on - protocol objects of such version. This is informational. - Compositors must still be prepared to handle the - request unless specified otherwise. - - - - -
- -
- event - - - Parent elements: &interface; - - - event ::= (&description;?, &arg;*) - - - Defines an event, a message from a server to a client. - Events are always associated with a specific protocol object. - - - Events are automatically assigned opcodes in the order they - appear inside the &interface; element. Therefore the only - backwards-compatible way to add events to an interface is to - add them to the end. Any &request; elements do not interfere - with event opcode assignments. - - - The &arg; elements declare the event's arguments. - There can be 0 to 20 arguments for an event. - The order of &arg; inside the event element defines the order of - the arguments on the wire. All declared arguments are mandatory, - and extra arguments are not allowed on the wire. - - - The &description; element should be used to document the event. - - - - Required attributes - - - - name="cname" - - - - The name of the event. &cname-requirements; - The name must be unique within all &request;s and events in the - containing &interface;. - - - Code and language binding generators may use the name in the API - they create. The name of the containing - &interface; provides the namespace for events. - - - - - - - Optional attributes - - - - type="destructor" - - - - When this attribute is present, the event is a destructor: - it shall destroy the protocol object it is sent on. Protocol IPC - libraries may use this for bookkeeping protocol object lifetimes. - - - - Destructor events are an underdeveloped feature in Wayland. - They can be used only on client-created protocol objects, and - it is the protocol designer's responsibility - to design such a message exchange that race conditions cannot - occur. The main problem would be a client sending a request at the - same time as the server is sending a destructor event. The - server will consider the protocol object to be already invalid - or even recycled when it proceeds to process the request. - This often results in protocol errors, but under specific - conditions it might also result in silently incorrect behavior. - - - Destructor events should not be used in new protocols. - If a destructor event is necessary, the simplest way to avoid - these problems is to have the &interface; not contain any - &request;s. - - - - - - - since="S" - - - - S must be an integer greater than zero. - If since is not specified, - since="1" is assumed. - - - This event was added in &interface; version - S. The event does not exist if the - protocol object has a bound version smaller than - S. - - - - - - deprecated-since="D" - - - - D must be an integer greater than the - value of since. - If deprecated-since is not specified, then - the event is not deprecated in any version of the containing - &interface;. - - - This event was deprecated in &interface; version - D and above, and should not be sent on - protocol objects of such version. This is informational. - Clients must still be prepared to receive this event - unless otherwise specified. - - - - -
- -
- arg - - - Parent elements: &request;, &event; - - - arg ::= &description;? - - - This element declares one argument for the request or the event. - - - - Required attributes - - - - name="cname" - - - - The name of the argument. &cname-requirements; - The name must be unique within all the arguments of the parent element. - - - - - - type="T" - - - - The type T of the argument datum must - be one of: - - - - int - - 32-bit signed integer. - - - - uint - - 32-bit unsigned integer. - - - - fixed - - Signed 24.8-bit fixed-point value. - - - - string - - - UTF-8 encoded string value, NUL byte terminated. - Interior NUL bytes are not allowed. - - - - - array - - A byte array of arbitrary data. - - - - fd - - A file descriptor. - - The file descriptor must be open and valid on send. - It is not possible to pass a null value. - - - - - new_id - - - Creates a new protocol object. A &request; or an &event; may - have at most one new_id argument. - - - If interface is specified, the new - protocol object shall have the specified &interface;, - and the new object's (interface) version shall be the - version of the object on which the &request; or &event; - is being sent. - - - If interface is not specified, the - &request; shall implicitly have two additional arguments: - A string for an &interface; name, and - a uint for the new object's version. - Leaving the interface unspecified is reserved for special use, - - for example. - - - - An &event; argument must always specify the - new_id interface. - - - - - - object - - Reference to an existing protocol object. - - The attribute interface should be - specified. Otherwise IPC libraries cannot enforce the - interface, and checking the interface falls on user code - and specification text. - - - - - - - - - - Optional attributes - - - - summary="summary" - - - - A short (half a line at most) description. This attribute - should not be used if a &description; is used. - - - - - - interface="iface" - - - - If given, iface must be the - name of some &interface;, and - type of this argument must be either - "object" or "new_id". - This indicates that the existing or new object must have - the interface iface. - Use for other argument types is forbidden. - - - - If an interface from another protocol is used, then this - creates a dependency between the protocols. If an application - generates code for one protocol, then it must also generate - code for all dependencies. Therefore this would not be a - backwards compatible change. - - - - - - - allow-null="true" | "false" - - - - Whether the argument value can be null on send. - Defaults to "false", meaning it is illegal - to send a null value. - Can be used only when type is - "string" or "object". - - - - Even though this attribute can be used to forbid a compositor - from sending a null object as an event argument, an IPC library - implementation may not protect the client from receiving a null - object. This can happen with libwayland-client when the client - has destroyed the protocol object before dispatching an event - that referred to it in an argument. - - - - - - - enum="enum-cname-suffix" - - - - If specified, indicates that the argument value should come from the - &enum; named enum-cname-suffix. If the - enumeration is a bitfield, then type must be - "uint". Otherwise type must - be either "uint" or "int". - - - The name enum-cname-suffix refers to an &enum; - in the same &interface; by default. If it is necessary to refer to an - enumeration from another interface, the interface name can be - given with a period: - enum="iface.enum-cname-suffix" - - - - This attribute alone does not automatically restrict the legal - values for this argument. - If values from outside of the enumeration need to be forbidden, - that must be specified explicitly in the documentation. - - - A common design pattern is to have the server advertise the - supported enumeration or bit values with &event;s and - explicitly forbid clients from using any other values in - requests. This also requires a protocol error code to be - specified with the error &enum; to be raised if a client - uses an illegal value, see - . - - - - - -
- -
- enum - - - Parent elements: &protocol; - - - enum ::= (&description;?, &entry;*) - - - This tag defines an enumeration of integer values. Enumerations are - merely a syntactic construct to give names to arbitrary integer - constants. Each constant is listed as an &entry; with its name. - There are two types of enumerations: regular enumerations and bitfields. - - - Regular enumerations do not use bitfield - attribute, or they set it to "false". - The set of pre-defined values that belong to a regular enumeration is - exactly the set of values listed as &entry; elements after - the protocol object version is taken into account. - See the &entry; attributes since and - deprecated-since. - - - Bitfields set bitfield to - "true". The set of values that belong to a - bitfield enumeration are all the values that can be formed by - the bitwise-or operator from the set of values listed as &entry; - elements like in the regular enumeration. Usually also zero is - implicitly included. - - - All the values in a regular enumeration must be either - signed or unsigned 32-bit integers. All the values in a - bitfield enumeration must be unsigned 32-bit integers. - - - - Required attributes - - - - name="cname-suffix" - - - - The name of the enumeration. &cname-suffix-requirements; - The name must be unique within all enumerations in the containing - &interface;. The name is used as the namespace for all the - contained &entry; elements. - - - - - - - Optional attributes - - - - since="S" - - - - S must be an integer greater than zero. - If since is not specified, - since="1" is assumed. - - - This enumeration was added in &interface; version - S. The enumeration does not exist if the - protocol object has a bound version smaller than - S. - - - - - - bitfield="true" | "false" - - - - Specifies if this enumeration is a bitfield. - Defaults to "false". - - - - -
- -
- entry - - - Parent elements: &enum; - - - entry ::= &description;? - - - Defines a name for an integer constant and makes it part of the - set of values of the containing enumeration. - - - - Required attributes - - - - name="cname-suffix" - - - - The name of a value in an enumeration. &cname-suffix-requirements; - The name must be unique within all entry elements in the containing - &enum;. - - - - - - value="V" - - - - An integer value. - The value can be given in decimal, hexadecimal, or octal - representation. - - - - - - - Optional attributes - - - - summary="summary" - - - - A short (half a line at most) description. This attribute - should not be used if a &description; is used. - - - - - - since="S" - - - - S must be an integer greater than zero. - If since is not specified, - since="1" is assumed. - - - This value was added in &interface; version - S. - - - - - - deprecated-since="D" - - - - D must be an integer greater than the - value of since. - If deprecated-since is not specified, then - the value is not deprecated in any version of the containing - &interface;. - - - This value was removed in &interface; version - D. This does not make the value - automatically illegal to use, see - attribute - enum. - - - - -
-
-
diff --git a/doc/publican/Protocol.xml b/doc/publican/Protocol.xml deleted file mode 100644 index e4087e9f..00000000 --- a/doc/publican/Protocol.xml +++ /dev/null @@ -1,592 +0,0 @@ - - -%BOOK_ENTITIES; -]> - - Wayland Protocol and Model of Operation -
- Basic Principles - - The Wayland protocol is an asynchronous object oriented protocol. All - requests are method invocations on some object. The requests include - an object ID that uniquely identifies an object on the server. Each - object implements an interface and the requests include an opcode that - identifies which method in the interface to invoke. - - - The protocol is message-based. A message sent by a client to the server - is called request. A message from the server to a client is called event. - A message has a number of arguments, each of which has a certain type (see - for a list of argument types). - - - Additionally, the protocol can specify enums which associate - names to specific numeric enumeration values. These are primarily just - descriptive in nature: at the wire format level enums are just integers. - But they also serve a secondary purpose to enhance type safety or - otherwise add context for use in language bindings or other such code. - This latter usage is only supported so long as code written before these - attributes were introduced still works after; in other words, adding an - enum should not break API, otherwise it puts backwards compatibility at - risk. - - - enums can be defined as just a set of integers, or as - bitfields. This is specified via the bitfield boolean - attribute in the enum definition. If this attribute is true, - the enum is intended to be accessed primarily using bitwise operations, - for example when arbitrarily many choices of the enum can be ORed - together; if it is false, or the attribute is omitted, then the enum - arguments are a just a sequence of numerical values. - - - The enum attribute can be used on either uint - or int arguments, however if the enum is - defined as a bitfield, it can only be used on - uint args. - - - The server sends back events to the client, each event is emitted from - an object. Events can be error conditions. The event includes the - object ID and the event opcode, from which the client can determine - the type of event. Events are generated both in response to requests - (in which case the request and the event constitutes a round trip) or - spontaneously when the server state changes. - - - - - - State is broadcast on connect, events are sent - out when state changes. Clients must listen for - these changes and cache the state. - There is no need (or mechanism) to query server state. - - - - - The server will broadcast the presence of a number of global objects, - which in turn will broadcast their current state. - - - - -
-
- Code Generation - - The interfaces, requests and events are defined in - protocol/wayland.xml. - This xml is used to generate the function prototypes that can be used by - clients and compositors. - - - The protocol entry points are generated as inline functions which just - wrap the wl_proxy_* functions. The inline functions aren't - part of the library ABI and language bindings should generate their - own stubs for the protocol entry points from the xml. - -
-
- Wire Format - - The protocol is sent over a UNIX domain stream socket, where the endpoint - usually is named wayland-0 - (although it can be changed via WAYLAND_DISPLAY - in the environment). Beginning in Wayland 1.15, implementations can - optionally support server socket endpoints located at arbitrary - locations in the filesystem by setting WAYLAND_DISPLAY - to the absolute path at which the server endpoint listens. The socket may - also be provided through file descriptor inheritance, in which case - WAYLAND_SOCKET is set. - - - Every message is structured as 32-bit words; values are represented in the - host's byte-order. The message header has 2 words in it: - - - - The first word is the sender's object ID (32-bit). - - - - - The second has 2 parts of 16-bit. The upper 16-bits are the message - size in bytes, starting at the header (i.e. it has a minimum value of 8).The lower is the request/event opcode. - - - - The payload describes the request/event arguments. Every argument is always - aligned to 32-bits. Where padding is required, the value of padding bytes is - undefined. There is no prefix that describes the type, but it is - inferred implicitly from the xml specification. - - - - The representation of argument types are as follows: - - - int - uint - - - The value is the 32-bit value of the signed/unsigned - int. - - - - - fixed - - - Signed 24.8 decimal numbers. It is a signed decimal type which - offers a sign bit, 23 bits of integer precision and 8 bits of - decimal precision. This is exposed as an opaque struct with - conversion helpers to and from double and int on the C API side. - - - - - string - - - Starts with an unsigned 32-bit length (including null terminator), - followed by the UTF-8 encoded string contents, including - terminating null byte, then padding to a 32-bit boundary. A null - value is represented with a length of 0. Interior null bytes are - not permitted. - - - - - object - - - 32-bit object ID. A null value is represented with an ID of 0. - - - - - new_id - - - The 32-bit object ID. Generally, the interface used for the new - object is inferred from the xml, but in the case where it's not - specified, a new_id is preceded by a string specifying - the interface name, and a uint specifying the version. - - - - - array - - - Starts with 32-bit array size in bytes, followed by the array - contents verbatim, and finally padding to a 32-bit boundary. - - - - - fd - - - The file descriptor is not stored in the message buffer, but in - the ancillary data of the UNIX domain socket message (msg_control). - - - - - - - The protocol does not specify the exact position of the ancillary data - in the stream, except that the order of file descriptors is the same as - the order of messages and fd arguments within messages on - the wire. - - - In particular, it means that any byte of the stream, even the message - header, may carry the ancillary data with file descriptors. - - - Clients and compositors should queue incoming data until they have - whole messages to process, as file descriptors may arrive earlier - or later than the corresponding data bytes. - -
- -
- Versioning - - Every interface is versioned and every protocol object implements a - particular version of its interface. For global objects, the maximum - version supported by the server is advertised with the global and the - actual version of the created protocol object is determined by the - version argument passed to wl_registry.bind(). For objects that are - not globals, their version is inferred from the object that created - them. - - - In order to keep things sane, this has a few implications for - interface versions: - - - - The object creation hierarchy must be a tree. Otherwise, - inferring object versions from the parent object becomes a much - more difficult to properly track. - - - - - When the version of an interface increases, so does the version - of its parent (recursively until you get to a global interface) - - - - - A global interface's version number acts like a counter for all - of its child interfaces. Whenever a child interface gets - modified, the global parent's interface version number also - increases (see above). The child interface then takes on the - same version number as the new version of its parent global - interface. - - - - - - To illustrate the above, consider the wl_compositor interface. It - has two children, wl_surface and wl_region. As of wayland version - 1.2, wl_surface and wl_compositor are both at version 3. If - something is added to the wl_region interface, both wl_region and - wl_compositor will get bumpped to version 4. If, afterwards, - wl_surface is changed, both wl_compositor and wl_surface will be at - version 5. In this way the global interface version is used as a - sort of "counter" for all of its child interfaces. This makes it - very simple to know the version of the child given the version of its - parent. The child is at the highest possible interface version that - is less than or equal to its parent's version. - - - It is worth noting a particular exception to the above versioning - scheme. The wl_display (and, by extension, wl_registry) interface - cannot change because it is the core protocol object and its version - is never advertised nor is there a mechanism to request a different - version. - -
-
- Connect Time - - There is no fixed connection setup information, the server emits - multiple events at connect time, to indicate the presence and - properties of global objects: outputs, compositor, input devices. - -
-
- Security and Authentication - - - - - mostly about access to underlying buffers, need new drm auth - mechanism (the grant-to ioctl idea), need to check the cmd stream? - - - - - getting the server socket depends on the compositor type, could - be a system wide name, through fd passing on the session dbus. - or the client is forked by the compositor and the fd is - already opened. - - - - -
-
- Creating Objects - - Each object has a unique ID. The IDs are allocated by the entity - creating the object (either client or server). IDs allocated by the - client are in the range [1, 0xfeffffff] while IDs allocated by the - server are in the range [0xff000000, 0xffffffff]. The 0 ID is - reserved to represent a null or non-existent object. - - For efficiency purposes, the IDs are densely packed in the sense that - the ID N will not be used until N-1 has been used. This ordering is - not merely a guideline, but a strict requirement, and there are - implementations of the protocol that rigorously enforce this rule, - including the ubiquitous libwayland. - -
-
- Compositor - - The compositor is a global object, advertised at connect time. - - - See for the - protocol description. - -
-
- Surfaces - - A surface manages a rectangular grid of pixels that clients create - for displaying their content to the screen. Clients don't know - the global position of their surfaces, and cannot access other - clients' surfaces. - - - Once the client has finished writing pixels, it 'commits' the - buffer; this permits the compositor to access the buffer and read - the pixels. When the compositor is finished, it releases the - buffer back to the client. - - - See for the protocol - description. - -
-
- Input - - A seat represents a group of input devices including mice, - keyboards and touchscreens. It has a keyboard and pointer - focus. Seats are global objects. Pointer events are delivered - in surface-local coordinates. - - - The compositor maintains an implicit grab when a button is - pressed, to ensure that the corresponding button release - event gets delivered to the same surface. But there is no way - for clients to take an explicit grab. Instead, surfaces can - be mapped as 'popup', which combines transient window semantics - with a pointer grab. - - - To avoid race conditions, input events that are likely to - trigger further requests (such as button presses, key events, - pointer motions) carry serial numbers, and requests such as - wl_surface.set_popup require that the serial number of the - triggering event is specified. The server maintains a - monotonically increasing counter for these serial numbers. - - - Input events also carry timestamps with millisecond granularity. - Their base is undefined, so they can't be compared against - system time (as obtained with clock_gettime or gettimeofday). - They can be compared with each other though, and for instance - be used to identify sequences of button presses as double - or triple clicks. - - - See for the - protocol description. - - - Talk about: - - - - - keyboard map, change events - - - - - xkb on Wayland - - - - - multi pointer Wayland - - - - - - A surface can change the pointer image when the surface is the pointer - focus of the input device. Wayland doesn't automatically change the - pointer image when a pointer enters a surface, but expects the - application to set the cursor it wants in response to the pointer - focus and motion events. The rationale is that a client has to manage - changing pointer images for UI elements within the surface in response - to motion events anyway, so we'll make that the only mechanism for - setting or changing the pointer image. If the server receives a request - to set the pointer image after the surface loses pointer focus, the - request is ignored. To the client this will look like it successfully - set the pointer image. - - - Setting the pointer image to NULL causes the cursor to be hidden. - - - The compositor will revert the pointer image back to a default image - when no surface has the pointer focus for that device. - - - What if the pointer moves from one window which has set a special - pointer image to a surface that doesn't set an image in response to - the motion event? The new surface will be stuck with the special - pointer image. We can't just revert the pointer image on leaving a - surface, since if we immediately enter a surface that sets a different - image, the image will flicker. If a client does not set a pointer image - when the pointer enters a surface, the pointer stays with the image set - by the last surface that changed it, possibly even hidden. Such a client - is likely just broken. - -
-
- Output - - An output is a global object, advertised at connect time or as it - comes and goes. - - - See for the protocol - description. - - - - - - - laid out in a big (compositor) coordinate system - - - - - basically xrandr over Wayland - - - - - geometry needs position in compositor coordinate system - - - - - events to advertise available modes, requests to move and change - modes - - - -
-
- Data sharing between clients - - The Wayland protocol provides clients a mechanism for sharing - data that allows the implementation of copy-paste and - drag-and-drop. The client providing the data creates a - wl_data_source object and the clients - obtaining the data will see it as wl_data_offer - object. This interface allows the clients to agree on a mutually - supported mime type and transfer the data via a file descriptor - that is passed through the protocol. - - - The next section explains the negotiation between data source and - data offer objects. - explains how these objects are created and passed to different - clients using the wl_data_device interface - that implements copy-paste and drag-and-drop support. - - - See , - , - and - for - protocol descriptions. - - - MIME is defined in RFC's 2045-2049. A - - registry of MIME types is maintained by the Internet Assigned - Numbers Authority (IANA). - -
- Data negotiation - - A client providing data to other clients will create a wl_data_source - object and advertise the mime types for the formats it supports for - that data through the wl_data_source.offer - request. On the receiving end, the data offer object will generate one - wl_data_offer.offer event for each supported mime - type. - - - The actual data transfer happens when the receiving client sends a - wl_data_offer.receive request. This request takes - a mime type and a file descriptor as arguments. This request will generate a - wl_data_source.send event on the sending client - with the same arguments, and the latter client is expected to write its - data to the given file descriptor using the chosen mime type. - -
-
- Data devices - - Data devices glue data sources and offers together. A data device is - associated with a wl_seat and is obtained by the clients using the - wl_data_device_manager factory object, which is also responsible for - creating data sources. - - - Clients are informed of new data offers through the - wl_data_device.data_offer event. After this - event is generated the data offer will advertise the available mime - types. New data offers are introduced prior to their use for - copy-paste or drag-and-drop. - -
- Selection - - Each data device has a selection data source. Clients create a data - source object using the device manager and may set it as the - current selection for a given data device. Whenever the current - selection changes, the client with keyboard focus receives a - wl_data_device.selection event. This event is - also generated on a client immediately before it receives keyboard - focus. - - - The data offer is introduced with - wl_data_device.data_offer event before the - selection event. - -
-
- Drag and Drop - - A drag-and-drop operation is started using the - wl_data_device.start_drag request. This - requests causes a pointer grab that will generate enter, motion and - leave events on the data device. A data source is supplied as - argument to start_drag, and data offers associated with it are - supplied to clients surfaces under the pointer in the - wl_data_device.enter event. The data offer - is introduced to the client prior to the enter event with the - wl_data_device.data_offer event. - - - Clients are expected to provide feedback to the data sending client - by calling the wl_data_offer.accept request with - a mime type it accepts. If none of the advertised mime types is - supported by the receiving client, it should supply NULL to the - accept request. The accept request causes the sending client to - receive a wl_data_source.target event with the - chosen mime type. - - - When the drag ends, the receiving client receives a - wl_data_device.drop event at which it is expected - to transfer the data using the - wl_data_offer.receive request. - -
-
-
-
diff --git a/doc/publican/Server.xml b/doc/publican/Server.xml deleted file mode 100644 index 2333b1a4..00000000 --- a/doc/publican/Server.xml +++ /dev/null @@ -1,49 +0,0 @@ - - - -%BOOK_ENTITIES; -]> - - Server API -
Introduction - - The open-source reference implementation of Wayland protocol is - split in two C libraries, libwayland-client and - libwayland-server. Their main responsibility is to handle the - Inter-process communication (IPC) with each - other, therefore guaranteeing the protocol objects marshaling and - messages synchronization. - - - The server library is designed to work much like libwayland-client, - although it is considerably complicated due to the server needing - to support multiple versions of the protocol. It is best to learn - libwayland-client first. - - - Each open socket to a client is represented by a wl_client. The equivalent - of the wl_proxy that - libwayland-client uses to represent an object is wl_resource for - client-created objects, and wl_global for objects - created by the server. - - - Often a server is also a client for another Wayland server, and - thus must link with both libwayland-client and libwayland-server. - This produces some type name conflicts (such as the client wl_display and - server wl_display, - but the duplicate-but-not-the-same types are opaque, and accessed - only inside the correct library where it came from. Naturally that - means that the program writer needs to always know if a pointer to - a wl_display is for the server or client side and use the - corresponding functions. - -
- &doxygen; -
diff --git a/doc/publican/Wayland.ent b/doc/publican/Wayland.ent deleted file mode 100644 index da18a952..00000000 --- a/doc/publican/Wayland.ent +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/doc/publican/Wayland.xml b/doc/publican/Wayland.xml deleted file mode 100644 index 049a35f9..00000000 --- a/doc/publican/Wayland.xml +++ /dev/null @@ -1,20 +0,0 @@ - - -%BOOK_ENTITIES; -]> - - - - - - - - - - - - - - - diff --git a/doc/publican/Xwayland.xml b/doc/publican/Xwayland.xml deleted file mode 100644 index cc5a73dd..00000000 --- a/doc/publican/Xwayland.xml +++ /dev/null @@ -1,168 +0,0 @@ - - -%BOOK_ENTITIES; -]> - - X11 Application Support -
- Introduction - - Being able to run existing X11 applications is crucial for the adoption - of Wayland, especially on desktops, as there will always be X11 - applications that have not been or cannot be converted into Wayland - applications, and throwing them all away would be prohibitive. - Therefore a Wayland compositor often needs to support running X11 - applications. - - - X11 and Wayland are different enough that there is no "simple" way to - translate between them. Most of X11 is uninteresting to a Wayland - compositor. That, combined with the gigantic implementation effort needed - to support X11, makes it intractable to just write X11 support directly in - a Wayland compositor. The implementation would be nothing short of a - real X11 server. - - - Therefore, Wayland compositors should use Xwayland, the X11 server that - lives in the Xorg server source code repository and shares most of the - implementation with the Xorg server. Xwayland is a complete X11 server, - just like Xorg is, but instead of driving the displays and opening input - devices, it acts as a Wayland client. The rest of this chapter talks - about how Xwayland works. - - - For integration and architecture reasons, while Xwayland is a Wayland - client of the Wayland compositor, the Wayland compositor is an X11 client - of Xwayland. This circular dependency requires special care from the - Wayland compositor. - -
-
- Two Modes for Foreign Windows - - In general, windows from a foreign window system can be presented in one - of two ways: rootless and rootful (not rootless). - - - In rootful mode, the foreign window system as a whole is represented as a - window (or more) of its own. You have a native window, inside which all - the foreign windows are. The advantage of this approach in Xwayland's - case is that you can run your favourite X11 window manager to manage your - X11 applications. The disadvantage is that the foreign windows do not - integrate with the native desktop. Therefore this mode is not usually - used. - - - In rootless mode, each foreign window is a first-class resident among the - native windows. Foreign windows are not confined inside a native window - but act as if they were native windows. The advantage is that one can - freely stack and mix native and foreign windows, which is not possible in - rootful mode. The disadvantage is that this mode is harder to implement - and fundamental differences in window systems may prevent some things - from working. With rootless Xwayland, the Wayland compositor must take - the role as the X11 window manager, and one cannot use any other X11 - window manager in its place. - - - This chapter concentrates on the rootless mode, and ignores the rootful - mode. - -
-
- Architecture - - A Wayland compositor usually takes care of launching Xwayland. - Xwayland works in cooperation with a Wayland compositor as follows: - -
- Xwayland architecture diagram - - - - - -
- - An X11 application connects to Xwayland just like it would connect to any - X server. Xwayland processes all the X11 requests. On the other end, - Xwayland is a Wayland client that connects to the Wayland compositor. - - - The X11 window manager (XWM) is an integral part of the Wayland - compositor. XWM uses the usual X11 window management protocol to manage - all X11 windows in Xwayland. Most importantly, XWM acts as a bridge - between Xwayland window state and the Wayland compositor's window manager - (WWM). This way WWM can manage all windows, both native Wayland and X11 - (Xwayland) windows. This is very important for a coherent user - experience. - - - Since Xwayland uses Wayland for input and output, it does not have any - use for the device drivers that Xorg uses. None of the xf86-video-* or - xf86-input-* modules are used. There also is no configuration file for - the Xwayland server. For optional hardware accelerated rendering, - Xwayland uses GLAMOR. - - - A Wayland compositor usually spawns only one Xwayland instance. This is - because many X11 applications assume they can communicate with other X11 - applications through the X server, and this requires a shared X server - instance. This also means that Xwayland does not protect nor isolate X11 - clients from each other, unless the Wayland compositor specifically - chooses to break the X11 client intercommunications by spawning - application specific Xwayland instances. X11 clients are naturally - isolated from Wayland clients. - - - Xwayland compatibility compared to a native X server will probably never - reach 100%. Desktop environment (DE) components, specifically X11 window - managers, are practically never supported. An X11 window manager would - not know about native Wayland windows, so it could manage only X11 - windows. On the other hand, there must be an XWM that reserves the - exclusive window manager role so that the Wayland compositor could show - the X11 windows appropriately. For other DE components, like pagers and - panels, adding the necessary interfaces to support them in WWM through XWM - is often considered not worthwhile. - -
-
- X Window Manager (XWM) - - From the X11 point of view, the X window manager (XWM) living inside a - Wayland compositor is just like any other window manager. The difference - is mostly in which process it resides in, and the few extra conventions - in the X11 protocol to support Wayland window management (WWM) - specifically. - - - There are two separate asynchronous communication channels between - Xwayland and a Wayland compositor: one uses the Wayland protocol, and the - other one, solely for XWM, uses X11 protocol. This setting demands great - care from the XWM implementation to avoid (random) deadlocks with - Xwayland. It is often nearly impossible to prove that synchronous or - blocking X11 calls from XWM cannot cause a deadlock, and therefore it is - strongly recommended to make all X11 communications asynchronous. All - Wayland communications are already asynchronous by design. - -
- Window identification - - In Xwayland, an X11 window may have a corresponding wl_surface object - in Wayland. The wl_surface object is used for input and output: it is - referenced by input events and used to provide the X11 window content - to the Wayland compositor. The X11 window and the wl_surface live in - different protocol streams, and they need to be matched for XWM to do - its job. - - - When Xwayland creates a wl_surface on Wayland, it will also send an X11 - ClientMessage of type atom "WL_SURFACE_ID" to the X11 window carrying - the wl_surface Wayland object ID as the first 32-bit data element. This - is how XWM can associate a wl_surface with an X11 window. Note that - the request to create a wl_surface and the ID message may arrive in any - order in the Wayland compositor. - -
-
-
diff --git a/doc/publican/html/css/common.css b/doc/publican/html/css/common.css deleted file mode 100644 index 40b5c4ec..00000000 --- a/doc/publican/html/css/common.css +++ /dev/null @@ -1,1750 +0,0 @@ -* { - widows: 4 !important; - orphans: 4 !important; -} - -body, h1, h2, h3, h4, h5, h6, pre, li, div { - line-height: 1.29em; -} - -body { - background-color: white; - margin:0 auto; - font-family: "liberation sans", "Myriad ", "Bitstream Vera Sans", "Lucida Grande", "Luxi Sans", "Trebuchet MS", helvetica, verdana, arial, sans-serif; - font-size: 14px; - max-width: 770px; - color: black; -} - -body.toc_embeded { - /*for web hosting system only*/ - margin-left: 300px; -} - -object.toc, iframe.toc { - /*for web hosting system only*/ - border-style: none; - position: fixed; - width: 290px; - height: 99.99%; - top: 0; - left: 0; - z-index: 100; - border-style: none; - border-right:1px solid #999; -} - -/* Hide web menu */ - -body.notoc { - margin-left: 3em; -} - -iframe.notoc { - border-style:none; - border: none; - padding: 0px; - position:fixed; - width: 21px; - height: 29px; - top: 0px; - left:0; - overflow: hidden; - margin: 0px; - margin-left: -3px; -} -/* End hide web menu */ - -/* desktop styles */ -body.desktop { - margin-left: 26em; -} - -body.desktop .book > .toc { - display:block; - width:24em; - height:99.99%; - position:fixed; - overflow:auto; - top:0px; - left:0px; -/* padding-left:1em; */ - background-color:#EEEEEE; - font-size: 12px; -} - -body.pdf { - max-width: 100%; -} - -.toc { - line-height:1.35em; -} - -.toc .glossary, -.toc .chapter, .toc .appendix { - margin-top:1em; -} - -.toc .part { - margin-top:1em; - display:block; -} - -span.glossary, -span.appendix { - display:block; - margin-top:0.5em; -} - -div { - padding-top:0px; -} - -div.section { - page-break-inside: avoid; -} - -p, div.para { - padding-top: 0px; - margin-top: 1em; - padding-bottom: 0px; - margin-bottom: 1em; -} - -div.formalpara { - padding-top: 0px; - margin-top: 1em; - padding-bottom: 0px; - margin-bottom: 1em; -} - -.varlistentry div.para { - page-break-before: avoid; - -} - -/*Links*/ -a { - outline: none; -} - -a:link { - text-decoration: none; - border-bottom: 1px dotted ; - color:#3366cc; -} - -body.pdf a:link { - word-wrap: break-word; -} - -a:visited { - text-decoration:none; - border-bottom: 1px dotted ; - color:#003366; -} - -div.longdesc-link { - float:right; - color:#999; -} - -.toc a, .qandaset a { - font-weight:normal; - border:none; -} - -.toc a:hover, .qandaset a:hover -{ - border-bottom: 1px dotted; -} - -/*headings*/ -h1, h2, h3, h4, h5, h6 { - color: #336699; - margin-top: 0px; - margin-bottom: 0px; - background-color: transparent; - margin-bottom: 0px; - margin-top: 20px; - page-break-inside: avoid; - page-break-after: avoid; - word-wrap: break-word; -} - -h1 { - font-size: 22px; -} - -.titlepage h1.title { - text-align:left; -} - -.book > .titlepage h1.title { - text-align: center; -} - -.article > .titlepage h1.title, -.article > .titlepage h2.title { - text-align: center; -} - -.set .titlepage > div > div > h1.title { - text-align: center; -} - -.part > .titlepage h1.title { - text-align: center; - font-size: 24px; -} - -div.producttitle { - margin-top: 0px; - margin-bottom: 20px; - font-size: 48px; - font-weight: bold; - color: #336699; - text-align: center; - padding-top: 12px; -} - -.titlepage .corpauthor { - margin-top: 1em; - text-align: center; -} - -.section h1.title { - font-size: 18px; - padding: 0px; - color: #336699; - text-align: left; - background: white; -} - -h2 { - font-size: 20px; - margin-top: 30px; -} - - -.book div.subtitle, .book h2.subtitle, .book h3.subtitle { - margin-top: 1em; - margin-bottom: 1em; - font-size: 18px; - text-align: center; -} - -div.subtitle { - color: #336699; - font-weight: bold; -} - -h1.legalnotice { - font-size: 24px; -} - -.preface > div > div > div > h2.title, -.preface > div > div > div > h1.title { - margin-top: 1em; - font-size: 24px; -} - -.appendix h2 { - font-size: 24px; -} - - - -h3 { - font-size: 14px; - padding-top:0px; - padding-bottom: 0px; - margin-bottom: 0px; -} -h4 { - font-size: 14px; - padding-top:0px; - padding-bottom:0px; -} - -h5 { - font-size: 14px; -} - -h6 { - font-size: 14px; - margin-bottom: 0px; -} - -.abstract h6 { - margin-top:1em; - margin-bottom:.5em; - font-size: 24px; -} - -.index > div > div > div > h2.title { - font-size: 24px; -} - -.chapter > div > div > div > h2.title { - font-size: 24px; -} - -.section > div > div > div > h2.title { - font-size: 21px; - page-break-inside: avoid; - page-break-before: avoid; - page-break-after: avoid; -} - -.section > div > div > div > h3.title { - font-size: 17px; -} - -/*element rules*/ -hr { - border-collapse: collapse; - border-style:none; - border-top: 1px dotted #ccc; - width:100%; -} - -/* web site rules */ -ul.languages, .languages li { - display:inline; - padding:0px; -} - -.languages li a { - padding:0px .5em; - text-decoration: none; -} - -.languages li p, .languages li div.para { - display:inline; -} - -.languages li a:link, .languages li a:visited { - color:#444; -} - -.languages li a:hover, .languages li a:focus, .languages li a:active { - color:black; -} - -ul.languages { - display:block; - background-color:#eee; - padding:.5em; -} - -/*supporting stylesheets*/ - -/*unique to the webpage only*/ -.books { - position:relative; -} - -.versions li { - width:100%; - clear:both; - display:block; -} - -a.version { - font-size: 20px; - text-decoration:none; - width:100%; - display:block; - padding:1em 0px .2em 0px; - clear:both; -} - -a.version:before { - content:"Version"; - font-size: smaller; -} - -a.version:visited, a.version:link { - color:#666; -} - -a.version:focus, a.version:hover { - color:black; -} - -.books { - display:block; - position:relative; - clear:both; - width:100%; -} - -.books li { - display:block; - width:200px; - float:left; - position:relative; - clear: none ; -} - -.books .html { - width:170px; - display:block; -} - -.books .pdf { - position:absolute; - left:170px; - top:0px; - font-size: smaller; -} - -.books .pdf:link, .books .pdf:visited { - color:#555; -} - -.books .pdf:hover, .books .pdf:focus { - color:#000; -} - -.books li a { - text-decoration:none; -} - -.books li a:hover { - color:black; -} - -/*products*/ -.products li { - display: block; - width:300px; - float:left; -} - -.products li a { - width:300px; - padding:.5em 0px; -} - -.products ul { - clear:both; -} - -/*revision history*/ -.revhistory { - display:block; -} - -.revhistory table { - background-color:transparent; - border-color:#fff; - padding:0px; - margin: 0; - border-collapse:collapse; - border-style:none; -} - -.revhistory td { - text-align :left; - padding:0px; - border: none; - border-top: 1px solid #fff; - font-weight: bold; -} - -.revhistory .simplelist td { - font-weight: normal; -} - -.revhistory .simplelist { - margin-bottom: 1.5em; - margin-left: 1em; -} - -.revhistory table th { - display: none; -} - - -/*credits*/ -.authorgroup div { - clear:both; - text-align: center; -} - -div.author div.author, -div.translator div.translator, -div.othercredit div.othercredit, -div.editor div.editor, -div.contrib div.contrib { - margin: 0px; - padding: 0px; - margin-top: 12px; - font-size: 14px; - font-weight: bold; - color: #336699; -} - -div.editedby { - margin-top: 15px; - margin-bottom: -0.8em; -} - -div.authorgroup .author, -div.authorgroup.editor, -div.authorgroup.translator, -div.authorgroup.othercredit, -div.authorgroup.contrib { - display: block; - font-size: 14px; - page-break-inside: avoid; -} - -.revhistory .author { - display: inline; -} - -.othercredit h3 { - padding-top: 1em; -} - - -.othercredit { - margin:0px; - padding:0px; -} - -.releaseinfo { - clear: both; -} - -.copyright { - margin-top: 1em; -} - -/* qanda sets */ -.answer { - margin-bottom:1em; - border-bottom:1px dotted #ccc; -} - -.qandaset .toc { - border-bottom:1px dotted #ccc; -} - -.question { - font-weight:bold; -} - -.answer .data, .question .data { - padding-left: 2.6em; -} - -.answer .label, .question .label { - float:left; - font-weight:bold; -} - -/* inline syntax highlighting */ -.perl_Alert { - color: #0000ff; -} - -.perl_BaseN { - color: #007f00; -} - -.perl_BString { - color: #5C3566; -} - -.perl_Char { - color: #ff00ff; -} - -.perl_Comment { - color: #888888; -} - - -.perl_DataType { - color: #0000ff; -} - - -.perl_DecVal { - color: #00007f; -} - - -.perl_Error { - color: #ff0000; -} - - -.perl_Float { - color: #00007f; -} - - -.perl_Function { - color: #007f00; -} - - -.perl_IString { - color: #5C3566; -} - - -.perl_Keyword { - color: #002F5D; -} - - -.perl_Operator { - color: #ffa500; -} - - -.perl_Others { - color: #b03060; -} - - -.perl_RegionMarker { - color: #96b9ff; -} - - -.perl_Reserved { - color: #9b30ff; -} - - -.perl_String { - color: #5C3566; -} - - -.perl_Variable { - color: #0000ff; -} - - -.perl_Warning { - color: #0000ff; -} - -/*Lists*/ -ul { - list-style-type: circle; - padding-left: 1.6em; -} - -ul ul { - list-style-type: circle; -} - -ol.1 { - list-style-type: decimal; -} - -ol.a, -ol ol { - list-style-type: lower-alpha; -} - -ol.i { - list-style-type: lower-roman; -} -ol.A { - list-style-type: upper-alpha; -} - -ol.I { - list-style-type: upper-roman; -} - -dt { - font-weight:bold; - margin-bottom:0px; - padding-bottom:0px; -} - -dd { - margin:0px; - margin-left:2em; - padding-top:0px; -} - -li { - padding-top: 0px; - margin-top: 0px; - padding-bottom: 0px; -/* margin-bottom: 16px; */ -} - -/*images*/ -img { - display:block; - margin: 2em 0; - max-width: 100%; -} - -.inlinemediaobject, -.inlinemediaobject img, -.inlinemediaobject object { - display:inline; - margin:0px; - overflow: hidden; -} - -.figure { - margin-top: 1em; - width: 100%; -} - -.figure img, -.mediaobject img { - display:block; - margin: 0em; - page-break-inside: avoid; -} - -.figure .title { - margin-bottom:2em; - padding:0px; -} - -/*document modes*/ -.confidential { - background-color:#900; - color:White; - padding:.5em .5em; - text-transform:uppercase; - text-align:center; -} - -.longdesc-link { - display:none; -} - -.longdesc { - display:none; -} - -.prompt { - padding:0px .3em; -} - -/*user interface styles*/ -.screen .replaceable { -} - -.guibutton, .guilabel { - font-family: "liberation mono", "bitstream vera mono", "dejavu mono", monospace; - font-weight: bold; -} - -.example { - background-color: #ffffff; - border-left: 3px solid #aaaaaa; - padding-top: 1px; - padding-bottom: 0.1em; - padding-left: 1em; -} - -.equation { - border-left: 3px solid #aaaaaa; - background-color: #ffffff; - padding-top: 1px; - padding-bottom: 0.1em; - padding-left: 1em; -} - -.equation-contents { - margin-left: 4em; -} - -div.title { - margin-bottom: 1em; - font-weight: 14px; - font-weight: bold; - color: #336699; - page-break-inside: avoid; - page-break-after: avoid; - word-wrap: break-word; -} - -.example-contents { - background-color: #ffffff; -} - -.example-contents .para { -/* padding: 10px;*/ -} - -/*terminal/console text*/ -.computeroutput, -.option { - font-family:"liberation mono", "bitstream vera mono", "dejavu mono", monospace; - font-weight:bold; -} - -.replaceable { - font-style: italic; -} - -.command, .filename, .keycap, .classname, .literal { - font-family:"liberation mono", "bitstream vera mono", "dejavu mono", monospace; - font-weight:bold; -} - -/* no bold in toc */ -.toc * { - font-weight: inherit; -} - -.toc H1 { - font-weight: bold; -} - - -div.programlisting { - white-space: pre-wrap; /* css-3 */ - white-space: -moz-pre-wrap !important; /* Mozilla, since 1999 */ - white-space: -pre-wrap; /* Opera 4-6 */ - white-space: -o-pre-wrap; /* Opera 7 */ - word-wrap: break-word; /* Internet Explorer 5.5+ */ -} - -pre { - font-family:"liberation mono", "bitstream vera mono", "dejavu mono", monospace; - display:block; - background-color: #f5f5f5; - color: #000000; -/* border: 1px solid #aaaaaa; */ - margin-bottom: 1em; - padding:.5em 1em; - white-space: pre-wrap; /* css-3 */ - white-space: -moz-pre-wrap !important; /* Mozilla, since 1999 */ - white-space: -pre-wrap; /* Opera 4-6 */ - white-space: -o-pre-wrap; /* Opera 7 */ - word-wrap: break-word; /* Internet Explorer 5.5+ */ - font-size: 0.9em; - border-style:none; - box-shadow: 0 2px 5px #AAAAAA inset; - -moz-box-shadow: 0 2px 5px #AAAAAA inset; - -webkit-box-shadow: 0 2px 5px #AAAAAA inset; - -o-box-shadow: 0 2px 5px #AAAAAA inset; -} - -body.pdf pre { - border: 1px solid #AAAAAA; - box-shadow: none; - -moz-box-shadow: none; - -webkit-box-shadow: none; - -o-box-shadow: none; -} - - -pre .replaceable, -pre .keycap { -} - -code { - font-family:"liberation mono", "bitstream vera mono", "dejavu mono", monospace; - white-space: pre-wrap; - word-wrap: break-word; - font-weight: normal; -} - -.parameter code { - display: inline; - white-space: pre-wrap; /* css-3 */ - white-space: -moz-pre-wrap !important; /* Mozilla, since 1999 */ - white-space: -pre-wrap; /* Opera 4-6 */ - white-space: -o-pre-wrap; /* Opera 7 */ - word-wrap: break-word; /* Internet Explorer 5.5+ */ -} - -code.email { - font-weight: normal; - font-family: "liberation sans", "Myriad ", "Bitstream Vera Sans", "Lucida Grande", "Luxi Sans", "Trebuchet MS", helvetica, verdana, arial, sans-serif; - -} - -.synopsis { - font-weight: normal; -} - -.userinput { - font-style: italic; -} - -/*Notifications*/ -div.warning, div.note, div.important { - color: black; - margin: 0px; - padding: 0px; - background: none; - background-color: white; - margin-bottom: 1em; - border-bottom: 1px solid #aaaaaa; - page-break-inside: avoid; -} - -div.admonition_header p { - margin: 0px; - padding: 0px; - color: #eeeeec; - padding-top: 0px; - padding-bottom: 0px; - height: 1.4em; - line-height: 1.4em; - font-size: 17px; - display:inline; -} - -div.admonition_header { - background-origin:content-box; - clear: both; - margin: 0px; - padding: 0px; - margin-top: -40px; - padding-left: 58px; - line-height: 1.0px; - font-size: 1.0px; -} - -div.warning div.admonition_header { - background-color: #590000; - background: -webkit-linear-gradient(#a40000,#590000); - background: linear-gradient(#a40000,#590000); -} - -div.note div.admonition_header { - background-color: #597800; - background: -webkit-linear-gradient(#769f00,#597800); - background: linear-gradient(#769f00,#597800); -} - -div.important div.admonition_header { - background-color: #a6710f; - background: -webkit-linear-gradient(#d08e13,#a6710f); - background: linear-gradient(#d08e13,#a6710f); -} - -div.warning p:first-child, -div.warning div.para:first-child, -div.note p:first-child, -div.note div.para:first-child, -div.important p:first-child, -div.important div.para:first-child { - padding: 0px; - margin: 0px; -} - -div.admonition { - border: none; - border-left: 1px solid #aaaaaa; - border-right: 1px solid #aaaaaa; - padding:0px; - margin:0px; - padding-top: 1.5em; - padding-bottom: 1em; - padding-left: 2em; - padding-right: 1em; - background-color: #eeeeec; - -moz-border-radius: 0px; - -webkit-border-radius: 0px; - border-radius: 0px; -} - -/*Page Title*/ -#title { - display:block; - height:45px; - padding-bottom:1em; - margin:0px; -} - -#title a.left{ - display:inline; - border:none; -} - -#title a.left img{ - border:none; - float:left; - margin:0px; - margin-top:.7em; -} - -#title a.right { - padding-bottom:1em; -} - -#title a.right img { - border:none; - float:right; - margin:0px; - margin-top:.7em; -} - -/*Table*/ -div.table { -/* page-break-inside: avoid; */ -} - -table { - border: 1px solid #444; - width:100%; - border-collapse:collapse; - table-layout: fixed; - word-wrap: break-word; -} - -table.blockquote, -table.simplelist, -.calloutlist table { - border-style: none; -} - -table th { - text-align:left; - background-color:#6699cc; - padding:.3em .5em; - color:white; -} - -table td { - padding:.15em .5em; -} - -table tr.even td { - background-color:#f5f5f5; -} - -tr:nth-child(even) { - background-color: #eeeeee; - -} - - -table th p:first-child, table td p:first-child, table li p:first-child, -table th div.para:first-child, table td div.para:first-child, table li div.para:first-child { - margin-top:0px; - padding-top:0px; - display:inline; -} - -th, td { - border-style:none; - vertical-align: top; -/* border: 1px solid #000; */ -} - -.blockquote td, -.simplelist th, -.simplelist td { - border: none; -} - -table table td { - border-bottom:1px dotted #aaa; - background-color:white; - padding:.6em 0px; -} - -table table { - border:1px solid white; -} - -td.remarkval { - color:#444; -} - -td.fieldval { - font-weight:bold; -} - -.lbname, .lbtype, .lbdescr, .lbdriver, .lbhost { - color:white; - font-weight:bold; - background-color:#999; - width:120px; -} - -td.remarkval { - width:230px; -} - -td.tname { - font-weight:bold; -} - -th.dbfield { - width:120px; -} - -th.dbtype { - width:70px; -} - -th.dbdefault { - width:70px; -} - -th.dbnul { - width:70px; -} - -th.dbkey { - width:70px; -} - -span.book { - margin-top:4em; - display:block; - font-size: 11pt; -} - -span.book a{ - font-weight:bold; -} -span.chapter { - display:block; -} - -table.simplelist td, .calloutlist table td { - border-style: none; -} - - -table.lt-4-cols.lt-7-rows td { - border: none; -} -/*to simplify layout*/ - - -table.lt-4-cols.gt-14-rows tr:nth-child(odd) { - background-color: #fafafa; -} -/* to keep simple but stripe rows */ - - -.gt-8-cols td { - border-left: 1px solid #ccc; -} - -.gt-8-cols td:first-child { - border-left: 0; -} -/* to apply vertical lines to differentiate columns*/ - -/*Breadcrumbs*/ -#breadcrumbs ul li.first:before { - content:" "; -} - -#breadcrumbs { - color:#900; - padding:3px; - margin-bottom:25px; -} - -#breadcrumbs ul { - margin-left:0; - padding-left:0; - display:inline; - border:none; -} - -#breadcrumbs ul li { - margin-left:0; - padding-left:2px; - border:none; - list-style:none; - display:inline; -} - -#breadcrumbs ul li:before { - content:"\0020 \0020 \0020 \00BB \0020"; - color:#333; -} - -dl { - margin-top: 0px; - margin-left: 28px; -} - -.toc dl { - margin-left: 10px; -} - -/*index*/ -.glossary h3, -.index h3 { - font-size: 20px; - color:#aaa; - margin:0px; -} - -.indexdiv { - margin-bottom:1em; -} - -.glossary dt, -.index dt { - color:#444; - padding-top:.5em; -} - -.glossary dl dl dt, -.index dl dl dt { - color:#777; - font-weight:normal; - padding-top:0px; -} - -.index dl dl dt:before { - content:"- "; - color:#ccc; -} - -/*changes*/ -.footnote { - font-size: 10px; - margin: 0px; - color: #222; -} - -.footnotes { - margin-bottom: 60px; -} - -table .footnote { -} - -sup { - margin:0px; - padding:0px; - font-size: 10px; - padding-left:0px; -} - -.footnote { - position:relative; -} - -.footnote sup { - color: black; - left: .4em; -} - -.footnote a:link, -.footnote a:visited { - text-decoration:none; - border: none; -} - -.footnote .para sup { -/* position:absolute; */ - vertical-align:text-bottom; -} - -a.footnote { - padding-right: 0.5em; - text-decoration:none; - border: none; -} - -.footnote sup a:link, -.footnote sup a:visited { - color:#92917d; - text-decoration:none; -} - -.footnote:hover sup a { - text-decoration:none; -} - -.footnote p,.footnote div.para { - padding-left:1em; -} - -.footnote a:link, -.footnote a:visited before{ - color:#00537c; -} - -.footnote a:hover { -} - -/**/ -.pdf-break { - page-break-before: always; -} - -div.legalnotice { - page-break-before: always; -} - -div.abstract { - page-break-before: always; -/* page-break-after: always;*/ -} - -div.chapter { - page-break-before: always; -} - - -div.titlepage, div.titlepage > div, div.titlepage > div > div { - page-break-inside: avoid; - page-break-after: avoid; -} - -div.preface, div.part { - page-break-before: always; -} - -div.appendix { - page-break-before: always; -} - -div.section { - page-break-inside: auto; - page-break-before: auto; - page-break-after: auto; -} - - -dt.varlistentry { - page-break-inside: avoid; - page-break-after: avoid; -} - -dd { - page-break-before: avoid; -} - -div.note .replaceable, -div.important .replaceable, -div.warning .replaceable, -div.note .keycap, -div.important .keycap, -div.warning .keycap -{ -} - -ul li p:last-child, ul li para:last-child { - margin-bottom:0px; - padding-bottom:0px; -} - -/*document navigation*/ -.docnav a, .docnav strong { - border:none; - text-decoration:none; - font-weight:normal; -} - -.docnav { - list-style:none; - margin:0px; - padding:0px; - position:relative; - width:100%; - padding-bottom:2em; - padding-top:1em; - height:2.5em; - line-height:2.5em; -/* - border-top:1px dotted #ccc; - background-color: rgba(240, 240, 240, 0.9); --webkitbox-shadow: 0px .15em .5em rgba(0,0,0,0.2); - -moz-box-shadow: 0px .15em .5em rgba(0,0,0,0.2); - box-shadow: 0px .15em .5em rgba(0,0,0,0.2); -*/ -} - -.docnav li { - list-style:none; - margin:0px; - padding:0px; - display:inline; - font-size: 14px; -} - -.docnav li:before { - content:" "; -} - -.docnav li.previous, .docnav li.next { - position:absolute; - top:1.5em; -} - -.docnav li.up, .docnav li.home { - margin:0px 1.5em; -} - -.docnav.top li.home { - color: #336699; - font-size: 22pt; - font-weight: bold; -} - - -.docnav li.previous { - left:0px; - text-align:left; -} - -.docnav li.next { - right:0px; - text-align:right; -} - -.docnav li.previous strong, .docnav li.next strong { - height: 17px; - display: block; -} - -.docnav { - margin:0 auto; - text-align:center; -} - -.docnav li.next a strong { - padding-top:3px; - padding-bottom:4px; - padding-right:28px; -} - -.docnav li.previous a strong { - padding-top:3px; - padding-bottom:4px; - padding-left:28px; - padding-right:0.5em; -} - -.docnav li.home a strong { - padding:5px; - padding-left:28px; -} - -.docnav li.up a strong { - padding:5px; - padding-left:28px; -} - -.docnav a:link, .docnav a:visited { - color:#666; -} - -.docnav a:hover, .docnav a:focus, .docnav a:active { - color:black; -} - -.docnav a { - max-width: 10px; - overflow:hidden; -} - -.docnav a:link strong { - text-decoration:none; -} - -.docnav { - margin:0 auto; - text-align:center; -} - -ul.docnav { - margin-bottom: 1em; -} -/* Reports */ -.reports ul { - list-style:none; - margin:0px; - padding:0px; -} - -.reports li{ - margin:0px; - padding:0px; -} - -.reports li.odd { - background-color: #eeeeee; - margin:0px; - padding:0px; -} - -.reports dl { - display:inline; - margin:0px; - padding:0px; - float:right; - margin-right: 17em; - margin-top:-1.3em; -} - -.reports dt { - display:inline; - margin:0px; - padding:0px; -} - -.reports dd { - display:inline; - margin:0px; - padding:0px; - padding-right:.5em; -} - -.reports h2, .reports h3{ - display:inline; - padding-right:.5em; - font-size: 14px; - font-weight:normal; -} - -.reports div.progress { - display:inline; - float:right; - width:16em; - margin:0px; - margin-top:-1.3em; - padding:0px; - border:none; -} - -/*uniform*/ -body.results, body.reports { - max-width:57em ; - padding:0px; -} - -/*Progress Bar*/ -div.progress { - display:block; - float:left; - width:16em; - height:1em; -} - -div.progress span { - height:1em; - float:left; -} - -div.progress span.translated { - background:#6c3; -} - -div.progress span.fuzzy { - background:#ff9f00; -} - - -/*Results*/ - -.results ul { - list-style:none; - margin:0px; - padding:0px; -} - -.results li{ - margin:0px; - padding:0px; -} - -.results li.odd { - background-color: #eeeeee; - margin:0px; - padding:0px; -} - -.results dl { - display:inline; - margin:0px; - padding:0px; - float:right; - margin-right: 17em; - margin-top:-1.3em; -} - -.results dt { - display:inline; - margin:0px; - padding:0px; -} - -.results dd { - display:inline; - margin:0px; - padding:0px; - padding-right:.5em; -} - -.results h2, .results h3 { - display:inline; - padding-right:.5em; - font-size: 14px; - font-weight:normal; -} - -.results div.progress { - display:inline; - float:right; - width:16em; - background:#c00; - margin:0px; - margin-top:-1.3em; - padding:0px; - border:none; -} - -/* Dirty EVIL Mozilla hack for round corners */ -pre { - -moz-border-radius:11px; - -webkit-border-radius:11px; - border-radius: 11px; -/* page-break-inside: avoid; */ -} - -.example { - -moz-border-radius:0px; - -webkit-border-radius:0px; - border-radius: 0px; - page-break-inside: avoid; -} - -/* move these invisible fields out of the flow */ -.example > a:first-child, -.table > a:first-child { - float: left; -} - -.package, .citetitle { - font-style: italic; -} - -.titlepage .edition, -.titlepage .releaseinfo { - color: #336699; - background-color: transparent; - margin-top: 1em; - margin-bottom: 1em; - font-size: 20px; - font-weight: bold; - text-align: center; -} - -span.remark { - background-color: #ff00ff; -} - -.draft { - background-color: #aaa; - background-repeat: repeat-y; - background-position: center; -} - -.foreignphrase { - font-style: inherit; -} - -dt { - clear:both; - page-break-inside: avoid; - page-break-after: avoid; -} - -dt img { - border-style: none; - max-width: 112px; -} - -dt object { - max-width: 112px; -} - -dt .inlinemediaobject, dt object { - display: inline; - float: left; - margin-bottom: 1em; - padding-right: 1em; - width: 112px; -} - -dl:after { - display: block; - clear: both; - content: ""; -} - -.toc dd { - padding-bottom: 0px; - margin-bottom: 1em; - padding-left: 1.3em; - margin-left: 0px; -} - -div.toc > dl > dt { - padding-bottom: 0px; - margin-bottom: 0px; - margin-top: 1em; -} - - -.strikethrough { - text-decoration: line-through; -} - -.underline { - text-decoration: underline; -} - -.calloutlist img, .callout { - padding: 0px; - margin: 0px; - width: 12pt; - display: inline; - vertical-align: middle; -} - -li.step > a:first-child { - display: block; -} - -.stepalternatives { - list-style-image: none; - list-style-type: upper-alpha; -} -.task { -/* page-break-inside: avoid; */ -} - - -.added { - background-color: #99ff99; -} - -.changed { - background-color: #ffff77; -} - -.deleted { - background-color: #ff4455; - text-decoration: line-through; -} diff --git a/doc/publican/html/css/default.css b/doc/publican/html/css/default.css deleted file mode 100644 index bf38ebb5..00000000 --- a/doc/publican/html/css/default.css +++ /dev/null @@ -1,3 +0,0 @@ -@import url("common.css"); -@import url("overrides.css"); -@import url("lang.css"); diff --git a/doc/publican/html/css/meson.build b/doc/publican/html/css/meson.build deleted file mode 100644 index ddfbfe27..00000000 --- a/doc/publican/html/css/meson.build +++ /dev/null @@ -1,11 +0,0 @@ -foreach src : files([ - 'common.css', - 'default.css', -]) - name = fs.name(src) - publican_inputs += fs.copyfile( - name, - install: true, - install_dir: publican_install_prefix + '/html/css', - ) -endforeach diff --git a/doc/publican/html/images/content-updates/content-update-legend.png b/doc/publican/html/images/content-updates/content-update-legend.png deleted file mode 100644 index 84f12e76aefa65bdc7fe98fb81bc168fdbb14416..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15946 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
L23 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 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/doc/publican/html/images/content-updates/meson.build b/doc/publican/html/images/content-updates/meson.build deleted file mode 100644 index 850e81ff..00000000 --- a/doc/publican/html/images/content-updates/meson.build +++ /dev/null @@ -1,35 +0,0 @@ -foreach src : files([ - 'simple-desynchronized-state-1.png', - 'simple-desynchronized-state-2.png', - 'simple-desynchronized-state-3.png', - 'simple-desynchronized-state-4.png', - 'simple-desynchronized-state-5.png', - 'simple-desynchronized-state-6.png', - 'simple-synchronized-state-1.png', - 'simple-synchronized-state-2.png', - 'simple-synchronized-state-3.png', - 'simple-synchronized-state-4.png', - 'simple-synchronized-state-5.png', - 'sync-subsurf-case1-1.png', - 'sync-subsurf-case1-2.png', - 'sync-subsurf-case1-3.png', - 'sync-subsurf-case1-4.png', - 'sync-subsurf-case1-5.png', - 'sync-subsurf-case2-1.png', - 'sync-subsurf-case2-2.png', - 'sync-subsurf-case2-3.png', - 'sync-to-desync-subsurf-1.png', - 'sync-to-desync-subsurf-2.png', - 'sync-to-desync-subsurf-3.png', - 'sync-to-desync-transition-1.png', - 'sync-to-desync-transition-2.png', - 'sync-to-desync-transition-3.png', - 'content-update-legend.png', -]) - name = fs.name(src) - publican_inputs += fs.copyfile( - name, - install: true, - install_dir: publican_install_prefix + '/html/images/content-updates', - ) -endforeach diff --git a/doc/publican/html/images/content-updates/simple-desynchronized-state-1.png b/doc/publican/html/images/content-updates/simple-desynchronized-state-1.png deleted file mode 100644 index d319ac2579f10e583afc13d6dd3bd467dc769ef1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2037 zcmeAS@N?(olHy`uVBq!ia0y~yU_8XY!0?NMnSp_Ub;foOrI73q~wMMX|k)80QKB(pTCu)dZHZ?Wn<>j@sw466@Uhl?Z+lzNb!|VqsyCl9I~J&5enPdH??XrcIkTIXT(b*cL2U(7JrLp{?uUGfx^8Z1(o{ zK6&!wuV24{f`ZN#C@6U3$Po(*i?Fb;moHyVnKC6JB4Ypk{rdX)*4EZ)YHAlRUi9+v5)l!R zmX?;0kufwhESa=;)BRstwrttEckj%ZGnX!1`r^fl*RNkMTC}LCsYyaY!o$O(t*veG z;>Eqay&E=c2nYyhZf;()W=%^=OH@=8D=RB+z<*H&1_s6?Z+91l4pvzY1_lQ95>H=O z_E(GooCY$Np6rcaU|@OS>EaktaqI2fpTWZE5(hrEJ3J7~n9#s-;aV802+ucxa8Ab; ztsmb!y~riFH1x=7*V|oDuB#VqZMS_<`)~PN-i2w+rEF=_pPa0*-`}wNy+Pi-b(P<_ zlo(Kf+0@ok+J{7+F5Kkw-*tmZ>eNuH^{XazHAa6->Hb%F)pYBu)n+lVFMM@MwdYk$ za#ioSlDTh}$HMI!kNljyL1}hwYV8)qsQpI2mv=ekr(}LMO-x>PV^!O-8*`RD3!SOj z+j{TRq-W`ecGeo)5~^OJda6#sL|)kKPQ=>P$#JWr?;hPF&vtx&%hh*2%SwH9?n`Y? zl>L0^z>n!0j@`Ze?EAsx^8;h8_sj3nKGb^e!lkFthm5{g7|dGx?M?A7jl?sx_G_L> z)N5W_d;h|ta%kci#Me6(8nCoSD4gWbDcROS-QwW#``+ z&!7FrBdhM=?qBoLC&Y6)zq6b&(nM34V8K06ppw4+D8!A5A7yVGZnh%2ZGV)v75+4IuQhmy91R&TT16*4sBXSO0eTX3eg$j*rv#<)!BKJL}s`>r|fBeg1I!y+_6=P1?|oc@+hTe785kH;OI#yLQW8s2t&)pU6H8JVj0}v-bPWu34NXIg z46RH|txPPn4GgRd4D?sI>_E|wo1c=IR*9y;$kNKd5TZf)_OuWN1_lkd4JDbmsl_FU jxdjM4W+4WaRwfo!Mivk~d<(y4ft=~->gTe~DWM4f`Yf6v diff --git a/doc/publican/html/images/content-updates/simple-desynchronized-state-2.png b/doc/publican/html/images/content-updates/simple-desynchronized-state-2.png deleted file mode 100644 index ecd284cd6751882532c29984c00957ebdf323b8e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6732 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 b%EZFT$O58=Z{hbWkRv@^{an^LB{Ts5an#hk diff --git a/doc/publican/html/images/content-updates/simple-desynchronized-state-4.png b/doc/publican/html/images/content-updates/simple-desynchronized-state-4.png deleted file mode 100644 index 83dcc063fac852fc513e3bfeb63a7450462cb454..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7302 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 P1_lOCS3j3^P6&6h2cL4F4((#G6Mqxdx@v7 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 aurjiM=;2%VJ&S>Xfx*+&&t;ucLK6Tuv==A< diff --git a/doc/publican/html/images/content-updates/simple-desynchronized-state-6.png b/doc/publican/html/images/content-updates/simple-desynchronized-state-6.png deleted file mode 100644 index ebb88d8189e24c11c018540d8068380b753031df..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2102 zcmeAS@N?(olHy`uVBq!ia0y~yU_8vg!0?-cnSp^pk&S-_0|SFXvPY0F14ES>14Ba# z1H&%{28M(N=nM^ zmDAW*Sq-$+LPJAOoH#LO&Ybn@*JoyC*4EZ8p4_y3>7?HJ!t2+si;Ih=r>DPt`}Xta z&%wdLJUl#petuW3Tv@SV1rrm~^XJbeO`0SrDXFWg`|;z)fB*h1U%oseBSTwTo1dTm z+_`fL7cRVf`SSPg-y0hn6A}`pPoJ)*r+5GUeH|Sg6&022?Cd2=mIw+89yxNv!ouRq zmoH&qVb0FZFJHc#GG$6cM8y96`}Otp@1NYXf6dIC#IRZ2)juB|x3;!cQ&YQm@#5yq zo4vfeL_|cSrKM$LWDE@rn@TgDU)Z^2%a*-+_s*O-bLrBhFJ8QO{rdHyMT?r6nkp(P zBqSs}JUrUk+7>Tf+}qo`aY3J{ftCOtZ?L!1onsr$?_TEaVCi6Ge0am04I4HD1O!~# zyTZ&+J1;qcmxs&TNay3tgJL2=s)}-jX;F%DQhdDJ@2>A_Zf;()X3eq9^PZmH9_Huz z`_ajZdzMdVDn7bto|L$#y0ZM;;~QOU&E#byUtZd!ucfwi@x&!lnuP`VAD`VODK7Hj z;;u~#`y%|^_<4D*>|gcc!7*b!%`-a|A6z$Ua%)*jOG{K#)WqfzPbaIHT~#}lO}=q> zEei{CWp1Lax#7vJ3t3rN^HU;st(eNi$-&CPVri_maz?wGy~XuIYg80ue?2_0eANMA z1_lPkByV>Yh7ML)4+aJX_7YEDSN2zo0-Odim!9m6U|?Wr@pN$vskrs_?$7X$REYy0 z(~kv4ili9G?>S|_p=+`3tzPb-4ld0{VHrz1mM-#K+Vm`8+l6_qzms-vi?}gQciZ&0 zzrQ^%NnI?Qs$CgSLBoH|3+?~**?rNqSP^bw zqF|wMgsvZRTDaZkJ&|6x z@U~m##SH)BCvH6Q@C;F2YUFqN(9^1-XFdBLYA%13X;R|Z+Bf|MOa3F3xjIHiXKO8g zEm^c|-c-xS*%jX`pI^G5`_n47>QixBTl%rSIX3?1&(Ha2y63^6?u-}HB3)Na4K17* zyVffG-JUBuXWcq+bf&TGyLOWj-*bOnFs+T&_}VR|e{tz)mnV}R?eVTvHYtgBZWUX? zH|;go#M56sY5#f6D78yxUr}hxlECnA^RoF*{Uug)Z5ed;8nAu!*ltGu@x{tWQ+h zde6@}nyJP=Sq?df?4)kFL&J@GL;A5j3*@V>qXsqxFM)yc%fkKZ`D?j9>12FvvYC9> z24M&^@cX1~QZmBI`aIrkcv$&Uc~W{=*4+A*wmj*ju8VDDm6N-bRRepcblth&;vB72 zvge3eg|Pa|l!==6LO55uJ4b&iz4hhEa~|IFJ*xa=cPoT>b7zJwiHa1Re)H<8;%Dc) z=k1!=cI?TSe!UC3T7&jyd=!e^)zfBX8j|7oDq-ikAM4xpcwfu>ICb?SrQTh;c4hW@ z^oCu$FmJ1rX5{jzuV-)7*|jjn{FJWj_E)*Gvb>VUCMD5pDvKXZdl5GA+P2)=x1(J1 zu1~qtBZ=XyZx=7X0xZ74*7zCg-y6HxFaiiwfZ1aK|KHl$7ts^a9cLfkor07;p=Q0< z_vQALuY7_huN|vjfB8b~yzS1~w(tE`?)R?FtoUxb`~BYc9y`zdF1P=nz$^P{f}M`i z(pC39O4|kfev#a7e{pWX`N{saf6r__fANCs%QoKg&)?bB9j@&ZchZ05{jzPgkbe8O z*V-l}?zl=SRXuKYG-`Tl*PQ+pJduwW6XB^u8b*|XEcD|Q;6Tk0H zx&PK`$NL-WA6CDw|L{;zYS&{Isk$#84>G%R*G;kz`4wWnc%k(!>AHI#Tl?PJxLRy_ z_k;Iet%)96RdP{kVo554k%5t!u7RPhp=pSbp_PfLm5HUc zfq|8Qf&MC&9Vi-d^HVa@D$z6;Sz4JILNo+h&oE$MV9 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/doc/publican/html/images/content-updates/simple-synchronized-state-1.png b/doc/publican/html/images/content-updates/simple-synchronized-state-1.png deleted file mode 100644 index be101446104f7798a8d39f8edb0dbd1bdec3e24b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2117 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 diff --git a/doc/publican/html/images/content-updates/simple-synchronized-state-4.png b/doc/publican/html/images/content-updates/simple-synchronized-state-4.png deleted file mode 100644 index e8b9b3db323541330fcfecce76c831f62c97698a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17710 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 diff --git a/doc/publican/html/images/content-updates/simple-synchronized.drawio b/doc/publican/html/images/content-updates/simple-synchronized.drawio deleted file mode 100644 index a478ae02..00000000 --- a/doc/publican/html/images/content-updates/simple-synchronized.drawio +++ /dev/null @@ -1,207 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/doc/publican/html/images/content-updates/sync-subsurf-case1-1.png b/doc/publican/html/images/content-updates/sync-subsurf-case1-1.png deleted file mode 100644 index 1f7ff8e42b9783c3ee6fb54c66828ec033cdd13d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26995 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 diff --git a/doc/publican/html/images/content-updates/sync-subsurf-case1-2.png b/doc/publican/html/images/content-updates/sync-subsurf-case1-2.png deleted file mode 100644 index 6839b679990902c4ae4a4a5e092244d74b853ee7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27535 zcmeAS@N?(olHy`uVBq!ia0y~yU_8XY!0?NMiGhJ(ugZlq1_lO&WRD&6h2cL4F4((#G6Mqxdx@v7 zEBh-(0Zs#%OHcMjFfhcbd%8G=RNQ(yx3WgW_15v#)w`ab@Zl3G67WcCa0&Pr+FT*1 zG|4sa!wpt(7moI>MZb4-Uo>^hYjR=z=lI-B#Xm zW(^Upr+3;;X|y^mWMQ2e$kpn^$)&YegsW9ZB*aZqgiBRpM}c{R(@Q2Pvv$gK!#)_YN?Pc5VSH6*R4RmSeIBHYY|5U2` zV46bqha0wRvlSh-E)6hgJhful1poZyj5`mCXZZgMVQ1F7{PuL|dY|f}BCa2A*m5j< zR(qCX;f~0{h_5omvR`Mv4t-jwZU5$j!L(G#w#3M5JMTwYtrO`}Zqd0OA>i~($M_0! z$)C?|3rm=_7SCF!;q~=X)*Fq3j(bDrZ&BftOK6!;ynl05rRg8e>5d${f1d|@SS8U` z_^#aQnU%*vL0P5zr@?W)oifs$ryJrDPBMg~hJ0nnJepax`rh`QgJ}mu)pR`%#m##l zuxffZcUj|_BXd%Zl^OCp-dO$0>?$W;M4)zVfq$PaF80?UH(4 zx4d}&-FhLNvAuFmOex$A;8Srxh#`CU3#{7$cYwF&pD z=_;O+RAQdJ*~upu_aW@w>#vhiYhGvWo)*q7Clkqby;-2^bpPSEAE#8;d_BGMzNDq? zC5syzsjtkgUR|@|{+S1v@(A4B8?xFV%jdAlUxE>$~Dv6dg3)RZ(TleF2%C%^2-vfy%(0g*dcPx;?|1Y zG0#6%RLr~nvc%9hDJAk6@1@GUaT114f-HiUb*4t{5SwC{I%`kddY#jgR2)}-3EO)} zt4ZO&)?a7ew4bgxW&2=3;Yt~)2A4pV#4ZV8!zY&&*B*}&b^TbiH(|Qw3_)A#rnI4JLCfqxEGWd@des%r2FK>a)>3c5vFQzZjU^e3^cvoJvH?Bu2|FwN1Vue3r9?i{e_mMW8u%l` z?pI&NV|C5awOcn`-E-j0*Q$fodH1frv3d|RHIaSe+T&3(7xGv( z99UYEAnVj2d*W00C$C9Nws~!dk3K!-374Lc;wIvnzbM=@NW?WUGVEFE9qs2qJ5JnI zR`q0R6m}I<;n~7-Ut>pjLG*(ng@W9FYNub7SZOq;PYaP#b$0mI^+2!b`s>!PiLHnK zsxF#yI6(5M(4PaFb*jTkBBo`sPw?CCZ#4aoXI|&m4LM5PwrV`{PpR*np~Asbw)<8} zYx0!%M!&rZ98C%xi#Rr&+oWSX;b;)+++WuguPvIS)1`Ff@X`XE|Few(FE3_sEZBYb z$<`BnoA0gapC$M7V}(e+68EO?tjVP@ov;2SRDY~h;6HTt@FLFtlfSp8MoRcJ7|9%W zJT9L#AyqOa^T$es*MizE0@;6(ox?2_v+z$1JlhcY{vY>m_j_`j{Tedu=@NYnVhQ=& zRf|6yXcl;2RKUW*{jZ%#L2Stdhrb`ht}}dCX(Kf8QQ(9QiOz#^GAkpiR?G1^G%08_ zHK{z=&hsyq;ntHM+w&B{wEG@!ka}d6d|uF8^k2K#Ds{So~g z{NaFe<)ybxj-EDixGpW5^myC7FYEiHBipWc?a(_Ruji~~6v_XN`|+^{-yWDXAA4xD z<7~vQkNljG_IFG|zu4XM%VE8vx@N`>iAu43+kYt3o#tEQr{U_oq9=>l(uPaPX;E%$@-rWFHb}-zZ9^4#lKr|iJ#Pd`)V2UnQdZ@obgn>UQuI8!UCgJ zj7x4zH1hfuT`Paxuk~;^cgWWtyJDa0;jMdkd+*n|PdJzKWH}vs|07dD=;ief3{Tfw zPLdT-U{60eQ+w4Cko%-`Zg7THF5YqbUA33Od0oG?FC*%22kU)W>(y7gnsu)cuNZNk-OVL7}mR)B{rdj;lQm&6wst&%h}PV(74lf`jDYNY8}5gWbftCuWUvSrJbZQHKBEtBp& z*3#1Q<;$0z9-hsXR}RTCZP_Zmi*>>kes6&Z7k5A07Fu0hZC`sPPHXW&C%;+Fa|D(| zP1^Y7?y;vuqN1X?_xJ7Hv17+xqnkHxPFD9nck-mA`2Kpu&Eo4*PA&g5A>O}j(>L4d zYW3QyanI&-IRATkRqoFs{{7lFtQ$VRD6~^`nRhtL=dN(D=OivJu50UJUzb=hYvyl^ zC@L-%*Nr+-`22}~a{n!E`3cGE7B5_Ja7w1vt%)qc4Ida+8u|Wi*t>VazTEeg%8L)H z*IiXMeZR{`STc02$D&gKZ(arODt>;Bm0N7e)TyOgRWma)Ute20+axo{|IX@piN9O)v*H>37 zD=TdacULvd+a~`1#NR33Cch9+UgqXvFS_>f%P&=X4<<0Qn@lnCvcJDC{k`P_gZbK5 z#IGv1NZrrqsW;ho`+Q1WU0q_LVx@|nUEZxVD}~klxA1NIHLZM#by@EHuh*V!f9-d5 z;#3n;)3tGXt?q1JB7T#5^~6I?l@)?(>~iw;AMQUAcXw0j=|gwh&RNE8+Vj8ibJdb( zm!|(t&nRZkn!j@D?3CCZy|g+W$@j85mIp^f?5O!!^y$Q%-_O_G-}LX4Vfc|R-5;yH zeD==>4DX*+_}#}*VBgPA(lvh`9Bg)5Y-nt}Sv_x7Sj(k2*Fc`dyeFC#O?Q7Ry7@$E zjMIbOOXs(*zvXTH^j?=Bn-|cz1Z1#s} z?b0f52b79OkcnyCdkto1=59Zd_z>U(#BUGo@}{ z?Tt9C#Zo6UY?c}{FZ8~s`Zs=(-}1+ma&7mRD!o)at^WV{{83_$>ZLso&+<->Df0}M z{`@xl{=MSgwm)W1pEm8==kxa85A8e`aI5>e(3h&c8{U|l&^Z73NBO$trXbUA$IS{@ z!}}yc`ppwZJ-+*ztgNh0Y|FtY7ojS$E#dWAQe^+My(!E6wnYq_Xm)5qGKKUB%6Y=T6q{n@a?{1hL6U%D# zNnyb(mTy_9@Ad8f6(wHcxL^OT2f3ntgrAeS7Sm#+twS<#6Q&M*6VWYHp}KXbdg`>Pe+ zGu}6PpI5nk&zd=jGfbtg{rNq;UN?R-k77u4@bB;C_Fr`WINW0{{8;$m*2@wxQPI+Z z(%pCSw%>NHT+Fob`_uHeyqt`lm*SgK-7h|G|G&2&)Xr(e%8f41^v-CKM6e$y6noswX;_?nMLf4|=!FVOP)-EMtb+uG01&IT{@apb7| zez)BGUd7|@_v`J8pPk_pR;&5-a{1%q{r0uLOq^c){eFM{^Lf=$Qc`NZvr2w_d1?Rm zrT^`1x!l`-Mj0g>Zg9NM^Xhwv{r%c5tF+(W-v0QyB{I13-uVmu*{iF+Y+bzk+^nj@ zy26W+7cDCwF_ga19?YF0==}OyFY{;_Ox}5XKy)%U~z2)LJ zeS2yu8J^h3$+mN)H{jhz4YH=!a+xkC5$#O*VAeyOR6>8jAi#O>lKQyyDxURrFw zn!jdW`mA#bEsGW{KJZ;;lAVf{6_?_bJ0;6*e`}kVcj`r-thIpC`n}(7%`(mY_U5K> z;-QumD^|3%wcXua&fPR&_UzwxiqGfX-uCukyS$ub(UXUV+XbE0@Be4z^x~}f{hH@< z%jebqt8BS&T)ti=@3SfM9I3|%%93uv9g}v&=o#&=c=V*RuKVui>6QBXcP17-RH~@n z^T?%pHS4dhb*CqP6%iNT9kc(YYvk94x3{Lnk zZGNxPIc?=87S;iY@ET>{=!L zt!-}Jxk^Rt) zf1l-B05=@O zdf&CpYn{(acNIH%d3hb{k!0q-vCMb2)0=rL$@$k@uV0zFDp?}!O6c^v|3CbFK6k#{ zp1lUs-hQoe7I-DHVDE!gQ*+b&x=dr4pRerW&;C3-XYKBLJ02|JZrWl#g(c&C%k1_4 zU+#8}j;l<*#k+m^ji5g3zSq3J=2Tjm-!VFv|MT0Mx2h$VrDOM0Y`mKF_rqa+_a2Ff z)23~!`1q);jjiRvmzS48Y2a`>f4{W3o}uB#bJp+wJe?jN@_b$V{(m>q=lgni{J1>- zp9m<5-v=H4&n4-3`CxNYR8?77(T&!_R(k_JOFrMT^7Fo5=fgP`{%QKN)+ebHZwk`FZK5hE+epzcX6Z2K8zcFxqkI!@jfY2mNw4{{nmDD4#Uf3J>Reo0ZoN`h zuUttnkm%~}E`M{wF!>nIv{duFJ2NIu{P=Ww{3GG;bupFy|9)3jQ32(6PfyRgyQ|(W zdAeEb_t$U6x6e)Zomy5EmizYRf~9;W8`l>2=AP3v-v8&1_Ow)SalLBfpr&RM_bxf9oN!T#U-$&V)0KhryD`_3Y6$Bqwob>Fik=bNso zdp0+H(&WjHA3t8aXi<;b;;i(`1vh^?++&WH`FVbSot?$gzLT7uoZJ2On!YZNd@%Xj z$@AaOUcaw%LffMB)0NZtc|UgjSsi}Aa_Po}A6GV&uDAJ}rSNT%zieEwGy{G9& z8YUePkFWV?|Npc7!)>wN5^XE>SCz{anC`vkQn%X5_Tt+z;q6y$IG)@UT)O$c!SfU6 zm!@_9+8qey`YaETvzv_HD-ElNF)YLX(g8yK=m(NOxD*IuYaxYon;}@bt|$ zgMxyjq@@L&Hg4P~9$#a)CbQ%)ulWq0W#{ex%P1ZxlUY0jDk(a%h8jHP{ zZF}?PO~L(zeo-EertUHC-C6nM!RdJsRb@GIQzKd?e7=5Q!M+rIrx#nr&Gae@JTJCw zUTE`eF<(nSP11k6%>3k9W)Bv-MVB{nEL_&M%pps8{;Ycr`S6^OUetv%bd4n@=x8Ls*Xj-~X zNlEG5zTfXOgO~ZtGJ=j`NMp6!3wKD5D#GxGMAmzPhUK0RG8c9j-$a=I5s<=d^-t+s|Ae>rKA z@ZGiVzHiIB|M}y*V0C{`z@Pj-RiUM=UqY^DucoHv&Ye3$LqnJQ&(F)t`&MByAzv)6 zTF_~!z5LC6Z}ZQK*i|q1;gIb7_*-th^^WffP8n}X-}YtB+dW_3Nh7zy%IQUSbNrk& z>ssestGD~j@1(JJuBJ<9?vvol(l64)CM$5P4qtz7TW++gtLy%{zw36rTJ`kw^nM9L zrnby^b-!NDum3mm`A=@W9Sou7ACxO_+TH#ys)l2AfN?}d9_)laW*URHR)KG{a&=iC1KU2o;3m+am9;q%{br}NYQ zC-!M{u`Nyvc(p)ys`{O^d412#_I_lD2yZ7s5zoAPhY`@>;zae13> zRz2b?KOfgJ;qQvSN0-O_`gS@$Yn8v7t9$RRtShzrXZ@w8J=|ymi)FsE!`8)g za{u{q+26U1hx4FTW#jGF7SAd^t`y(@>(A@UTbC#QKHj(Y-K^j8yX4c~v*f+s`RS*e zZPAyd%j16Sd-6M2-T%A)3;Rct1V0zQ_mzKlU;6EhdmAplzUK9k`NSrk>ZPoc6qC(n zZ{EE5qsYN^Z+E||eqnb%X@1?;e!Z=U*T2R7C@m}7_R2ba^UZ0x(Pq`(a=-yDJ1bqM zpjyyr+rn+f<286T-12){`(YM)zR~?J+aK3!*X%1e)+5=>&VTHupskd-)Q-K^6vK)n z`xM^3{X75th0kqvKQB$5bwj%B1(*LUK|{4eQ!vjcA z&=qujx%O=S@3r$;F_tH-DeJw<6TAB_J;^FaI@T>!r8}-Usy_Y~R3H_CPT6`Lw-z8~>YCzZ97~ z&APd2Z`_|6r#jnt%idqn{hJ@HYm@Trko)B=%U|C3k<6j^I3xN0+rNp?0ej=*AM9d( zK4I_Pmj7neE6rC)Mp!X-76%J)CK2^7|Frw=OkJbZEM7n<@LWFL!@0rX#L9hQuPC#Mu5Rw#U8Q@A_1|x}!7bmb;@PCI<8B^k zH2$FlpP3BLO|`Fzo41!=dj8fnJ!Q*tt?OQHZ;RjbMoaZB?(LLUS+&ivUGS2gqGyn! zE|kWGdS;9Rjj{@`$`evL`o`fw3fM*){W7Rk`FSH4SDSL@c^xfihR-zD{f z{+Tz=Y+8RI+`jMM#$CI9Jvlj)gXq0jD=FQjF*Oyz( zeYj6pYQfIEKQ3qH=H}+*zHn@V6gI{ z`CV-%T$&FqxGLp@bNs6(PNG-F=El9;+uKCN#rtI}g}yC#yK3);uX(oDs?y#|MowG& zzT?=!%!Mac@^9SxoU8WDZ=Y0?hz&j0^48dHeHD_Dx1_Kuuvqf%de(Qd&!%bX>%Twt z^266{=Qm!@U+2zo)Lu&de}>Irg9ta~{>2vRZVMH*awY^`>7e?GM)wEx<0!<*Cgiu6^6Ih0g-_vq z^miGP7aB5BRURcB91H)Q|K2}KuJyX@i(J{(2XB|Qu)gZeV&)T3o$Pqnl>3f(Kx=gQ zZAWEU){dH{lz=yrzX@&GG+n4_h50JRiVBgmy2P7lbN$30sm!!%d++;tRWsZC?(47r zTK-M{;HG@t&FzmN)1mjgY|iUnX|v?(tHuQ6he#(hKRtYy&pbDG5tEcno$>!&Zx=MS zDYYcLVP&^$y?tulrs+aSAoC0O`(vt)?7W|O&giz?Mo0Pm<>y%E3vVeuzU#??#xSo* zUy6U74{B`@*p##N#rjLqJZzIsvPAmqJtBSeNSxP>1@~5%X>=Wmu51yQern=w?aT2i z^BQ7}i=KYln0&nKwxjpmxwC#aCOx_3@i+8WoP^85oqMMUIH!h4Z-{C7E&S-~)!z~o z-rhxzzea9OJJ?Y(OceAUtgNL<@VbJYG$*0??lzUxv}xVg0r(sPv>oC zk5lAZ^q^91+n#r!#@@4Tdvn^ByZr)@6H>^C!7D_3_z zp@V6?)Mf9QptYa`q_z0qqDg^Q<14l2f6DTDa>Jt{=C#@Nt7}#SdQN&O<^3vq<&Vm; zcjaOF>%*=lpEFX|^*ofy(*9t^;}<)86uxe`K5t5R@P|u(OJ~2+S|&VMAV5-ol@S#}2y9xVipz%=0_z<9yESyf0bm zKBaJjV90{1%B}Z}CSF#yUaPKW&*v^^@!k6GHuaZBRW3-iCC>V8`ddod%EeKjBq%zq zsycPfQoqLu${AuZJbQC2zgzpSv*BF-`|KNb@5x`B7?;l39RRK|zlQxiFqipmp81pJ zrm_N=;{`n`o*%xb>3A8W&MH{2?}31T(=s37$!8j_D76TQsTOF?c_8qCXKIL|q`UM* z29++QDV-9+jM=#p3Rcch;IIljUN~owMoia#{_ByiOn40)Ki?{@T+p*fBjR7ki=dJw zg%>T`B&9PpFVc9UFirM^)H*Yn^A_*ce&K35z@>BkGsnULUiV$6?>@=i8+v|I&h1}m zA)cC14%T0#9P~E6`&f~n=xt;><;;U)&ZQMv@@}s`ymK({SN+Qs$>#PYK{48>JHCLU zYtf6fRT|7+J46>Hh%exg+hG!uYjA_dAdfqB)^}6q7{+t`CVgg)jAV{;@*NC**LX~W zStN2=X>-YjJ@$HsH|g9f5zbn@cT{U&}4^e!S?E@GcNi4-O2IQZEK^5uWR6e`{oj zP71HT-p!`4MB&ZnLo4LxpW4hE=_oLv;eyANWs}w@c?zB06t{kQYNTFk_bfTqSNx~? z1P-MxU`&7gQ6W%7H2-$I9G2%U#!;6F%ipG zdV4$JK=jMdHC&QEMB{Ew5>AznXpG-&u&w3NbkGz}gw%rD>n^`MaiDrl|BbUxEcmj; zG`O!RtO;J=zCqMLZ}F`7W3M>*#HSp5_%wijAB)~%F300?sypU?a1s@2Sxi-G9nDZ0g6?j*n+;T()}2{6vXOMeDE6{*kmu z#nb0g{u?fC!DOWmuj6(n7(boU=4Y7c$=_py!i&ut4|Ck(+z}hBVDdYC3rHney4Z?YAF)G&sp~ zyijfO$rK|=p0+p%E3f4<&bh8IU!^K*Ghtu-r|20r9KWs>@}@izu>}{)1@&cep+&L{6(t^s{{$(|&5jw~}84WxE|3 zjMiQ{>yY(&hY$PLA8I=veNiuZqS&*^mCyY^zMI7M<;%Z#zPO~acb1>A=Iz-{?;osR zmE<_>V=n)n`x}-%Jn=!fq9N3DiS#LHj>B6w1g<`q(BKemv&Z4+6d{`sH%(h7=fLI{ z0?~Haoa;jjc^+Fmu-f`+%J&`ND}z4RHD8fln!zzO(5s)JJ7V|gyQ_Y#zHold74fUr z#jZ@78y{Aj?_1F>u2Cy$W#)BJ?yAx?i!7}#g|kxbXy^nBteY0_%K&5plZNII=|*Ob z?Ao?CH_!j!0xWaf{cD4|!U80hW^`)xi86T{o*mpD|C;TkjU2z9;$g$M5FbrPr_?Ez znoFv+1$p&(R|_^R<8Eq5o|j>y;i~;YM0lyYLF%jrt_Hu2GP!xKTw2SfIm>x(pjW@Z zY~k!3w-%^u)vXdbw$a0G>h#o`(JxckjP|-*(5&UrS}dZgSp1*YtXZQ=VR2&5WuGd| zlaD`|REC|@e3-YeRI;p4Sf|DmOa()fuckNunaq{2Z^zu}%`wgcwT&oMX z)cP*)bQev`X82^o&)d+t?2z?2hnLA0G}XGkIdDCDnAjf8zpc%C^NG2v2}|uxtXzI_ zfymi~MqV!k=lq_#$hkzeptbzGMO$JPch>8$>nGJyZZ!0NaXVZ)S)-OkYq7}NgTW7* zoE5&y@Sgtj5xUc2av;EJB0El0}5H9xq0oOh{W_i}+PE`cKD zJEi46R_&GRXAkq>%-7If+V7Y;Ws%`3#(;>~dOb70rg*bBHt2pUu+w;ZE4ZoM&oHox z<;Jy$>5I4@Kbf?C!DP#?CaO~wiGq>|k45>kY#q+m!aKBg_$j+Z`_Hra_)`6=y{r>Q zZ_I?#GkkJdBsbprbD%lkRZz)2Fa6190=_Q!!csE7s_WQ+u&!3Pr*$2 zd6imLnkT1OvMGw(Uw?nj{rgzY)uX&s;9m%|e;O)f3HtbVUUK&s;7(Wk2ST_SbT=lHc;m|K32 zvvu?4&FcR1=1iV^dF8$Y)8`g^YA+uCzc)GfebLUYuC8tQ_v2z>*8B=Kf3viuyEr-L z%k=Q-57PF3))hbCn-i_kRrKm>@YM3KPhtP|#GgC7@%s+*w^n6me*WEV7^dx{k@rQy z#;i-gYx}Z)e}6t_@2xk<*mrRx;=TlK=<_T zA!|$a2%S3KD`%`>`0-@BoC}BPoXoi0nV&l+tM9M-{&vZ~zju9otFPPt|6P7R|9uo< zR=Qd@^WOCst95Ia->Fah|HJ+9M~7UA;E?incXlQmY}&MG)4F*#HtwBL;8=fC!u785ez|OR*!sA+)2ClAG*-ylV*cccxR}_p=g)u3$yeRGkSNaQ?d4}Qv*+%% z=|W$e*dKpTos;suOE{Ql3cnulL)&?9lv_Z{~c9OE-Mo*ZxjhPjg=N|Cmn| ziHQrn=7pR+VEMI4!DEuhw6l)2(w5)sL2T+opS~o(EaB zOvt;Cf9ci3|0^Co|9|>@Dt+%xLZ^*1+m?ibOcGs3Cm5~L z;98?7TNNHMX$dR0*n{oUJU+LXo3pG~7`q7;Lx~c_(<(2lb37TZzWSR<+kb8@F1h=k zjvY#$*IE!5f6Ctag1|{jU#pf2%Xj~)OuW>=J=yKdj>=`LZm3R=4f^rt=Dys>$Vf*= z#>j^4pVIHEC{LZ$?&HJF#dV_c=b`7^`a9nUZ91^$_IpO@(Ercw*7;9|bUvoYF>W&W z8fMFqIcen=z3JI+Z*ASAW50Fhi>uG)S^s!*`P+HE9kXXWI5O+~{@*o!KQCXUcx*ZU<5m6Vi{4m2=sPCsu~`btDbUr+DcsZ(8@ot?eCd*AJP z?d9clVslq_w`7~7T}{Of-sN8uDq>SSB%97!e3U!w>gsCotmg0Y`N#i0)m!cvUb$+M z-K5pskEC>C{>*>h6I~!Kew|HI(ce!ovYH^(yZP>a9)-;zH+ zJ}&p4-**1@+wJ%Fz1?>EP_B`xh=Yq@+zrm>@kTtGYk!x;)+X1 zZC+XP`r6u=GiOFdM*7=)WU+htZufgRqm&aX0vA7e{CIbH;3-R%H^KE;S66lz3Qo(` z`C(ys!uZRcg>R2~E49pv{CnnOmvH}@3YE%$qUF;!^KIj^&DS{hQ&Uq@(m0LBX~m*N zk6L%?+id->8TxZV>Sgvk{b!x2{#AG81%}6#eKid)y&C5g@nV_zu8NOItFQig*e>5E zVW_05oBQ$6QC?nNj)gBTFORQ&yS1HPUd}u(CMoIB-12)rPwVeLp!xlN{eNEbI|6yt znznsfQJ0gyJM;*)NKO>Kc34m5TAZqV&F90?>+@s_Pj*NaA+NOAor=f3>V9)HG&CekvqFM{Cm&4E(9^rOG5L6pq;bTwyE_V#-Q12% zkFS%=GuB-AEayguDjw(N25*D+Un#?^l;ZMneuzxbf&%y5>x{M_7J5Bu0t z`7i(Z>^+$>%RK+yy4c-*b1VvviiXSBR*AIj5_R4A^V#g}IX8nsLrv@d{keAS+VgqU zdUw)-oVZ?2a8k1l3)=qsP2X{~$rs{8E1@&*3xk4eReLeS9p|>fPb*b}k%$ zf1K@qtS9^Z;BEOIw%u#amj66=&!PHT(ks8KZ-1ufJ7pX?d%b+6*{5|uPX6U7Th^^R zm$rH7k|ic)W=btd$;tZrek4UyKWdZCGnnZ!zy6=4&MW4}rfb}8PYyh%xS{9NrXJIf zX{pTz8%}T8w#(WgTxjX!t6M*;-?~&(QKjqA$yc|;!n^NpK5=W)=FNv|nXNJx#(%5X z?$3`-Vf9xfyZY^ZbtKNXoxfjJaZBdqWt%o_x^^wB<-*I$%f)r0 zS_GoDWC;Fc`(i8NdNKOzkF9^SyB4Xas60qA4K=OvKfgoialqOBCljC6$A0v?Xgxiy z?xl47{Y&>;Pu^PQKmXq;?e#ggwqzdd5>1)u*v#fT+YFSJ*_stivLEE%*&+D-_3h2# zpPxRDS8NfQB(%oaYJR6uw(@%|)h{KN{qO83e7q_3w33q2y~^iv*YE%LYg%;P&E4hi z8yK12?Rvd#ZS?lIf`hE`wO=lRJd|{#L)N-1rvC3&j)ms;Dw40R3iY@BD)M9V>aev@ zTeC#p_IwGg(3ZEf6;ga+`%bm^)#Xc<3T7T|=gY2e-L&n?my+3Mx22q%l;5>)X8W^; zkB|4u$8SzM>na`_5)vXZ%jd$EFPl4==iZ7g+rgulBAxZRZLi{n)=P4Cc`7cw{^~tl zFLqbS%J=h^`Omkj-8KK_)%t&*=RY)?CZr_Mb}{;^r@mTYc)>6G7bh7Od+YBN5x1^- zvSRTaK@XmQdT#%}^8UVBu+ygBOXEKAm|Jf1O&`81WjXKX<$se|_4DJ* z-t#36Dyall}SjB8fLa`HM96ZvC12XWAP1=U3dH zxkatL#x7s;;k5q#nEiFN8s&*xOF@mO)G3#gH|S`GdMPZf+AB9j~X7$UNtH@w>4zTY>E~%s@8nibV|cD*+F~m@44=6 zvMcv&46;*v>}T6C{btU&vuBS!HQ%?P@V$EV?%JJu=fAo88eEfKik%_$D*FZO6H zzxV!{tjzJX(cAf^7n<#UxAX73b-yyI?QeQ#aXDq&-BqgPTPRy#DqP~M+;^JeREj^K1Xj|H|K?WyJe zOkUS}`bO@p+L~o=ebr3yUD5VcybIrSeciHmih)z=lts2$?IO>wRPWu-dG!2g5K#8N z^W)I5H$88@W?!>DC0mzWHpTkd`pEfnC;ImB|5|%$yJXz@=`kv*Uk*pw=IX1)T##dQ zt@fB0B;qRK`r^i~uIsO^u3o%&@yWUEul=s>-H`T|JNp`F@_GZtBG;2MiZ@OAX41N6 zjz*VUzk8sFOqJ*+zuFV9Mq#7B?QYfOpg!@oy}7-gKYeoRk=U4Ukf}&B=)}*D+Da;r zo=^7r{MWnv_iA+Moc?4Ze{AN}d7B{}t-q<)Q>Csrafo z&S#r^6RBP|Wu2LK;@WS)7cn=pIwSg{g?m&?4u?L|+P^Ml)dT^jV@`_;yDp{}&Gb=Q ze3653$-?*7zfXWhg5iRA&(%BOy zI0Ae#u#)gr6*LGn(FcseK`% z{}egLsb~E1Lgja~=|ykjiM#Rkn`QB{lC8WJ%jHC5wzDi>8l*7`+}+XWx>U7h>!)*G zdQ%?U|}`7~=bDmHRGdyyKMCczfweQ=iF-axMp7w)Hc^w4Did z;^^cHoU|lw4fCVjwx9OZ{@!(QUfUwJiiO)>osE39;mMWYUuIXNmwvG@h+lsy{k_Cg zZLX5!mMgLE)Z!oKgjhJaZ-KgbMbm9tIsP>_do~+be`TqS4OA#-zhZtsu8Cd5wQ<^k z?t=STUhxf8i$!z~zSdef>1JZAP~(&GuQd)buYZiuRGpEuVuTWrsZOB^e;md6ROtXe1n839|A?jr3jE$H-S!MfVx zZ_2D!EI*qz+qT-w&aUiDM1e>8*;%REZ!@p-y1R1ym$J|cno}GW6oMRaan>S@U3c^5 z1fMUIQQ7?ZYt^3ZvFu+P0&eA)#rOnHsr~)!X3jQ-?`~~6YU{5@8*X2enJw&e;=}&7 zj{PnVQZC$^5bXa_8k`o+9r{vXleaxufMr79;)@vu5>|1uj)(`j?Y_n18mQt~G;h1)K=sxgv8-qE&=p%`?!91!#QDmgn#ez8x~f zvd?skpIm94(|U>b$i>|^h- zSJkVhYOy}Q^4Ry4rikx?c(tx?D}?k4-_%AtGtLgXVv?6>Q+4p7@$GXfF0EMM>~#@5 zn5g)4lJ`Rv#}`?Cd)p*(*eVonu!bJd;0<1w!6YlaG=pC=bdyfCja-CIyzuKtnwKuR!4HRIU({y#>&N#SDQi;&FoN{kP)?T{_fj5@Rsm*$ENkwEWcqA)m zPeQ!fgtZ&CxIFD`YJ2oUolCXig?Z;C9YBMIR4~u97Tu4>_H#n_@m+rgFjGDz6V<2kf+GKfUSLLAO8= z#d3`pYlWj{Ixfbp%f5I0%-vHLXR3PngW||`!9s)OEVGUl#&k?}lx#c5eOH=Y`XWOM zyIUdiig`gMji9016TFW~tz`W+@)z!xdm^;`Nce@7lY&eZZs++Q{7Z=E@D=f^@{)B+ z_HCH=d+LUiP09Ns)?b(AVcQcVe|F_^$Vm8wfGY}CM~<0G&AcyE#U8LmVD~JzMOWsC@153WcjDWJ6o7rb}wA9aN&xBh6e+U_qWY?w&)&s^ftpnaq7|U zE5EI_PT9!UqB+6!v9<2y%*nU37ie@Hf9J^YGN@!jgb`1Fo5cZ+Ewi_8%jMI$!MgrB z_rmZG>Z>5LI<~T_CutpCF8!5ZLGY?G-pywnyqfPD9Xse|GtqaN;SHX-X}j5zq;iy) zj^Aw5IiV4kZ!(4R>nbztE~PFdpUQ(=OGH4CdsQfCgH2igB8^4PJu=ds(^kgC^>%ae zG4iSDdLH6>ap(P-xHw%477JOf4`FtNg-LhTSlm&!HF+{2pZV9*FW!}=tfx5m9xh*K z|8tt;rd20d()rQ`Lhqk9n>pWDdXf}zC!n_u+S^TpGI#^ zF4&~Q-NYdM>SCl?S6hJO)gI&O^C9}{%ifi*>f^6TRhXu7oiY6Dr>y(My^DJbH$QrC zux$G7T5UnuMJk>Td<=OmZ&-RTUwXs$<(FT+GQ0XySGjAEisyyxU!&bhIs*7Jd_V6? zyZ`L~S4C&H@WOeQXZwZUi+s8KjA-ue@|Hs9WV@}t-$h*oSs34E2tC@mOruspYw;}x z{w47{KTfIMkn`}~IbdvSe3>q2Mze}7a!^YU*B#&-32 zrk!YgdFboT2iFbEv`!c8*puuvza?+O8eRj17kcH@oFc9dgKuBE$+DoI$D4QMsR9}H zhZYYeRPBvZ^=wS4$Tj~L?!c|$c}QF7@beW~%-ZL-OxPL% zLq4=7%2pSxwz!kFgL#pL(_>XnCuV_|!1dP;zdLpJhRl}R(mKg^b1ZKKS?v)~JQ9D> zJ+J#orQEhv?_Y(T7xAhN$PZyY@k35UDRRohmI>mDtd8Q+>8eig5}qftEA}oDKXu@R z;?4%?D~~@`eCTrduwwGwzzMoS0W4QPxu!7M*!r$JyKog3*Mp^RPkh>>ll+oB`h;0? zTIJq2wV94WNqcz0{u{hgVwcv5-oM>U#B{@Ar@i``PxrHEEshfEIPQ|i;<7KS)#Q+1 zP}4^H?#5=B>xAu_uSN*soVT>j$L&7^e}~Ufr{J|8|nC;w~cNrZ+4v&vO4EM)dssqepZqE zdD0!Snk(yUeTz&O;=P|{PTK6bYL!Rs(Xy3)UTpB`er(O4EVtxK`|ob&m&%}d_o7+% zN)Lz{sx^IVtjUX<)~cC2L2iwHisYv9p7TML0XKM$Xg#x5?>qfK`EBe8bLY-C8_Hwc zLishf?z8-=$ZY=R%BtW^I>(MD-l6ddQg(X>E1h^%4{<50q_(``p zu(J5a+Wer!4+KIqJy$X9%ddSMxc8gy!B5frmb;(czOtdlgy-;_m`WkVD?i+lZ~13# zQT7Lgrxf$$n-OB3ylW!^nQQCkaHO0wI{xg)q^5|?i`XtT&iZcdEP3zL@;#H7Rt7XV zXJ}+Kh(~Pr5?1@@k;@vsr8k$Z`>WS7;i(k&k!mi!gUR0=oI)-=T5{xQXT;+Lp3Kwu zKAe5`eYXDl>J7G@S^g6bGvz;ZZP&1JkqHsF_buR;M2Oo~#_Gia=Q^!#MaaK4yZ-Z; zzNv`miA_8|y*U>CT2vL&=EzfbkS|M`MdP&I;g<_l{)&G)J}>`?=|qLa=l=Q`$uelQ zyz$Y{3F|1ZbPaUqaQt;!c%Q=+gEw6-zb`(x{^SqiSJQ&FG@Z)WFoAJ~#S`gc4^GV6 zXLREqw)(c< z)qb6P6VDuf|J}phQQ*TF&qIq^{&D}_E|XjMuG}m?JJ0q;*KDrWx{kAiec~Etw=I>| zKPvKW_Ntri%rDkf{rK4^-TM3yXqHoWMNbyb&W|dUOVV6>UkI@7p75h&k&0(Ul5COQ zLY3)9;LWVy&XIK2k#&KP4*MpZV$C^~t8Q8xeX+4R zCVywkdDfLdpTeqQ*<+U7_Q}=sZ@%?t@{C5F9hnyLEA>0Me-`dIeYa|Loai)%g)E#? z1J8EMlze>WeaqRKp&DIEH&`VuAK5uuprbi`+KJF-CrW|>Os1bMeQ{yor%#`5-MV${ zTG+hj$;ruU!(Mj?D(i@GM{-(g71_cF0MRoP(+}UAhYip~ld^pFfe0S8RV?mNjGgzkv<~D@PoYEiUvN2cAdFwu- zF9(-$c}`N9aq9R&k5vMGMpN!SE!zA2UNvYOqmh~Y*6uGe43qPAy<8?~oF>7;7Q^iK zG{o}65*Mv5rBIIw8*%s3k2QW>c#JYHb{RB>roRa`hbFvZ-lMgzLc1j|O`WYds~}Iu z_tWXswm)L!>%upbGwhzQp@RK{hKgg-^7qTP%ulG$yC=xs=~I!dU}P=4dy!oK^ONfH zYySOw9;+9wkZUmeEVr0W#Et^R^Pjb*i}f?Cm}XJ<|8#7jGpmzERcy%-d1Z^fX5ag} zHa2*C@R$@55U`=_ZPfD1k{*@aM<>mmy*uNglE?R~_r;A1vm6Ed@~z(5Ju~}z^T?(( z2NN2W24yg4x(XxDrp-E`5jTVRnC;0cr3K$lZ908G@m2o&^9DTUKeIJA-bw70xd~dY z=*(|h^5(|Ib=y*2Tv+(}+S=V8k4c|A>hj@#g@c&dVwU!TFHMU%7XJ8uf|lVspp z5f$wh8anO&msr=A=Tl}bcJIGe^Z9JQ?YA4s{WebL+$VD`w%Bmr;)cbK;|J5f&1)3( zJG}LJbYfy+U0vPxH@e94aL>0F6-{6%=UXA{1)2`O#jw)o>+ILA?GpbpY&1O;;sleG zqU^F8PZk(i&lulpML#SDyQv*^`gW@_BxZjfByV=@b>Ka^Y34|vZd*2OEoVzr$#s@%3{%?=I}NmE!HA@Z5Y zI4&k~Ym3lfgMRyeKR!J@eKKqLnfi*CujS)xs$x?1TkOBy`$oL{VrX*y%-`vrAO3u~ zy8q+HW_Et5-eZQz$0l^X-M6ZDtLW}yTJLwbYwGA+xpwc&8K3>>hCIc8-aRgwEK}&& zl4Yo?wQS0Rm&%RT_A=W1=N z&Di{*P_MyO$8z5M%^yChN|(DtEc$Tp&!0bYt;<(kbNjeEMswa9uBH9goWK1NOOrUZ z^Zw0%D*?6srLPZOE9i{{F9zA#*rV6=HhNC=>%%uyHR`e z$Lw8K+O&_|-}0#U?vhP95gQnkW-?rD@@aBjp}XR%-1lF<7TW3>F5Gxsy#H=y5O*@W5Dq$UUrK=V!XqdCS?!`^r=ly$5eUCB~J^t@k`1&#Q&$+aGLCO-*HGW!-o5gWoyz@Oe7>*TpaQ zBtCh6St+egX2&=E&9D5!N)N|feH8uS<%Hrq5w8gWl2;`*IvtVLDE+Wt((zcm>!8KE zw>3Y@e|tT>cF)(Rzt``6a$!2Vb>0Ed$N962{wMw^dwXl^zKP41D6>iaTIkcqbK%}w zecPSi^f&kY`_cQL@cQ+z_c!;Ye(aG}34GDEx587`e#wp4a+M(E?83NjV!eyTWIO>;4>n|9|iIoqMXkRvj)4 zeqMHK#!P0&>8vgZSg5**uuZvu~DJ8G2tPEc6*Xnuc$&-|d>W8i3N-bI0 z+2QMAe%?s#Z@qm+u03(aKknb|e*HaF8mIF2N912U%pEGC?v(NS+uI#Cj?Dc2Yi{zy zz4y*^2FKkgezA&kd)Y0CzUS)aY<@3xz1ANnaiFHP>8H1*pO^b{edBh&@6kUyRW^!>F>Hjt_xY5`TKgMdXI@}ht+&OYYy75x_zc?hgMz38Q()* zrwn-VpC*4!S}fmpOw+lb%F~l`otEj}n*D~)ITZU|+wgR#R2Eca{rdSscVE}ty!dT7 zHzz1MZ)jtxnEY$rzF5Xv)t`3ADqg8SuweWASku>^u0*#<{I7YuV$$FFC0FDANUH9g zBJw?EPUWhZdN+J7&XGHlWF*zwEw1mzA!}KrawqMZManTnod-+0lFe`M{1yKu&f+*p zrAT1roDFg{2aigbWqx24e|+WSrAwElOqt?4+ic~byX*@X&E4e(InEm$rk#*@mG&v?Zx;wkW-|ylE+mzhf+j0+c zpPd-8_!V!uS&qaGMV<0B%+-kpwp_g$^W)sS?sZbx|DU$siC$N>eaE)_ThzY4JUjQA z+r7}D{?r#2Cr4jxKU&}=-^^x{$$Z#gYI&%fbp4tye}e8e28Nyz*tu%*@y7>`@+{-v zo$Ye%+3uS3`~}R_$&Z8toSgM`JXy5*m{Lp5Vf|etXDV6(j!txLyz;DU_d{08Crsw? z>#u*d@lTzyNDPoF!-_g(hY zl2)y@xG9YSSr(zq`HM9wnAV@o_;Xf{h3Bxx)S$bstd@E;-Z!|letCw+`BN`0E%g@H zjbbVO9$)wK=_1$exQd6Z1+(uwt~h0zBB6GV>EDa@eR7g@NB-)YTc*vLF{8uZCNy+q zqVWmPEK^)u+`f{RL7|eXul{1BDzHp|%B zKWCSRZ?T%a|K9hH+vookRy47Byy}~uVz#%3N5J2&PfktV%DOf5^Qsk9K_<)7Q%kO{ z3SAwxw#j1Oq)C%PSBLHWbV~c7*-m$byZ(V9iCUhb7x6Spp1zMN}zdsFJ^kfc`y7GZ0nOp}gu znBT84Hu-z!%a_f;pJi`YKRM*B_Uul(z^z|bK50I8*PmIrSfz8K;l|1DYgglXiW*7G1l4itKvfi{>9{6;wTiSQztjTV#WNXz!e8>-6H1 zxBgM}uqppyLgQYUvz@s7Xw_;hM+Fnro?N?pIB8^Gj z2ZPQ}5wa=C36b_t{d&W8U*^}YMGk4^IVMe?1<$5^-ck6t!1lM@jc42cW&bxw4qy7_ z`}}kF(_B()Z{EDQ>hAp3dbzD9&JD8T>ZSBttn47&YJNTvDFZ~xjLuMYu|SLI%qtunci zA7wsercI@hUHSEC(^Ud_HZe}pcz5fQP@VU+{^%7Nrxvt0e!j40|Kk1YcURBN;#lN9 zRW;_@qq&hUFR6&+E;L#t>8Y=J^pEMWPYaHg%wE|X+W3*J_=n-SlP4SZK3lkY-_w(> zj@wdBPwp<5em`mBlP6Dp=(2_TyPce*a!_jJLc!@9ZggKa3CR86z7TvukiiX}3GXaNGtds`>Ve_Xz2slM+N)k z-Y2%-4ULa4y|l#hiP%BibH>`w?tS`|+|OdftlatNb-(SVq<6YYmaU1~TXkuPr|g`i z+g}M^Q$J!S-F@AbE7jh7%D1u!JdK#MciHgK=`$5K%Vn$XsJ1xA788D7F~s*vtD% zZ4r1f`}NnVKg<_|&0}0S-n8cL_#U3ntn=yL<$JcO9xHmX)D|y&>^1lI+ztMJ8>X{O zn7z#IF`_V`Kj7<&uUvU&$KwiU^UpXxa|;bwK!<(JQD&oal$dE{O6Dt6X9=q!Hf zGTW!?9DDrsY&H6K`Qm+9(Km-&=XEPoF5Am)p|78Rq(hKfOh;k5QtKS~{Yp-grcK+H zcXwCc?@tmFgyx)VPPILat6o7bg_Exz*n+jodN&0%wHY z-njM0A2;sgyL7)%b-{w*n;(;HGA}LR6jl=v5m^(vTkQS6YldRos^;e97Z zijQ-Ty;#1ea-O+VFIzKXo0O>Q&uPEK6ix0}$}GQKZe_;)J0|b`zPWeSd%BjDeS30p za&b}7pJU$JuBZL@e_YYNi_h@i#UCxMoO>6}e_gcmz&$=OkGJ#oZql)SW+l}n_2|>% zN1q;l=n;NM-@y1Ra-cLU`sPObp;-3EF+*EfL zmpj$(L4ECfZ*Ol;PtVB6n@bLCNed5G{tV;*=l{AG@>Q)_06OdJM zS@O6!vE;&;w9kKjetv#_{`;bxUS3{a-rm{S*?05IZ_J)I&+pdl&<{%f6`2w@-nC|F zfD=u>7LTyX$>i?}Ej}~VW{8E0xULbf?E4&6rF`6Nl7G?HPgxo~%U`dp+UqMnTiCkl z%ZoE-d^9*&6%KCn{@eMi_N>ASx!vkXJ}g%b^QE{39;qwLfAM72*=L5y#~%Eh()7n7 zBr{oIafQD)7uYtpOWvNo)w5gzU6dzgv2ofTUdtYxowstLmTLafo32j6VyY^-o=uS#ttc zO}G^%u_|Ew!Bc!m8|#lOE$ZwR{&?x!hnCMPYxcYU@|?s{+QgNxw&njuwN)ASuFKTA zo8)=!pHsI_bt+?*0*8g>g7v>L9_)D?RPyA5_YP^-m)rr8yka)5d(9)-wyz4AIb)`w zhU7smg*Ogjic7Y?jy!SV4R}^#=T%CSoM#pEq`Oh`K?>K#T zlTLHbqqUw#xh95Wl__v1GF#1E_ccL#<-#`#VdfsocgHN>?aDs)m)*_;_A+D09@{0m zW1i=x?`PmzT76+=74HF0#|@8UY?fAhx0;~-!eTdQPvioIz60u$MHU)dX%3#3z$eS) zkYf|c#(!v1GKWF7iv0B6#l0!sHf8<4XGDWf#q*nzxUV}=VsBi&frO8maEsUqq0sZC z515s%Gp9seGfy|ab9Tv`)dBe-(h6*!&)hQ(yu5fpFwe_2i&?UAA$L-b9eV!#oxNPQbGE02SR;~NIC7NIMVfg*NO!zYP6aoprS%~g{9;biWzFP@GE z@3Pj|7ji|$o6Zz6TG5kr?BrDS*XGx+i(QGb-}Y*4RnR1dy9LwbYka0|dvqpHXJUk~ z=l;;Gdh$PZMiiWUsqSc?cT5{HETgcVs%=I>z9y{!1T-F_G4ewgW z1fHdv#kfk*%EhQn?x%ESB*`$dWu5&Dh28I^BkvE$Q5m3n90f?+GsMFPjlwZ{$!PnS}#kiIPBWJtNW{G z^P5dB4z8MQmlr0pZ{6-YvHN$*J@QdpE#y(Ddo;l~!TAr{-br6Ix|kYQKQXJ{!M49d z;rLt4y6VuYpcC{KS)TT}{7O^GDK$j8?r|fZ!y=6&(ZfmXO;4?*`%EXU`S3ufXFf!IJ5pOStS(7XGOh6ArGEe&l8{#7lEUZfd?uPzn61 z9;zPow2Nsg>sAYGPIo)i{c~hy3v;W6I{NKk%g{Zs;;9rj%jzOcnU!~+txS_yBW0+T zbYXRKO60R3iz11Gb5g}zCqA}t4LlS1%yB)R(&Qa3?I#R)BKs{*&)H!i7$y=T!a9jn z;R6Hv`CWWFUYTE4Zn^O9zRB&^Uyq&bQZ5#7NLOTJoD)Ci#Dj7rzP=r&@3yVxyW~IFa95Ub_6ti z_tg9N)TSK{k~#wGnDzSaPTr!TX{Iiga%kuMm)CzMvu{#}<~cmW$hY~w;f7pJ>89}v^|xLkv4`XSCHhF=^^gn7qJmM}fkV<= zTKTwJlI5|W)!ScHYV(`l34YgD_2PquD`>F0XZs~@wW^|(GLz37a9*v!^(CEkw*#O4 zHSw#5XF2a^zIlyZ{ZzuN@22j){Y{4ila>B#TUZ&t`QNH-XBRB-TKQ*J(S0MqVC6^i z`;RY-T6)+!l(j^2*NHnGcRsdPc^qsq`aADk`p#oai^bj*ZU0-f`~3>nH^v(`$TsMl z4q96B=$-JBADWSDb#k|Mi`A>xqIk#EDVt@`VXrayeO?ZWkMOT<1YD3m!(OTD#z zISXibyun8GyPxh2%|Dw@1GvEfi_vmgsq&yN*0AFfTw^op3$V4QukF*lI6?Iha{0ZAjrg(cFn zj*941td{qjbSKaJiRQxv<#QZaeitA3+&_8l2cdHo6FXCHw(0V&W7ey9wo}{UpVvH| zibJJNxf=vKjz1P;VN~xqRHm@OQM2M;z_G_49qgr&Tx(BrG%cI zX_W3O-*G6lAV$|O?vUW_0?Wl0B_8cvu2C!Ws+WzsFa1zfhq!=J`t8umvMJvL%ho@b zGDFhv*~+v4?TUY)j^1zIs`%$SgCt|MA8G$vbTK zc>>??P1Zd=bwXs2MW3ktD*vuc_l>kJKhQn@Ii>o9+2K869x8DR(tk=q^_b5w9-SFm z@v?f=k|_@s8m;2}akAY`Q_f#y@w<&Blg^v{OlZC`DRXgz?1reHXY183&-9q7z#jdu zYlrc>*>_nEEc*MyG?GnfnULDlboSH-{wcOvKM$vV5DMG(^}*RS58RpVd)|>Vie`*o zox5<&{adZ(QVO~4NhZtZfp!3zHk3>c>00*6@$shz-4ic<-I45_ceS(n?+th5_y@&> z&sJy^pUf{?`95rc*7cxJ{%bm$cy>y3t&+RspmA7e!r8-n>xzyihgNTBzV9d*YOyzd z_X&BkPya47sC#|5ps98?Ks9NS;pZi%7e_g;IE#IdJ@?t#%j22LPq8r7KR>1g@*4fh zopCDi^%bl8zSe*E7G}jQYyMVJu>GWAJlE3Opkr+JcbBuw(0%uPWBAg0XmM!)2ILYw7Ztf5}IT$^gUBo zvGT5=9M9YTLX)abFKyoc@FTm>h38kxyiH&D+ugZyzjjJMywfIUxt9mte|U0nvHix{ z*GpY(IC&>t42tS%dGhbhcd-a3XIEFB?|9y3++n@UeA+dh^@q}Ib0U3p*xPk48YiFMzER%nSzI$#N->;5(*P?JB`=0r>V;>(I{l4XO?~>7sqxYED z|Fx}ZG#*Y`S|)I*Miw^tMqnt2uZoUu9)>S>|R{%t|KW)mhx*2 z%j~MPg<7K0->^1rpAcePx8V5%$-ROV-kzq<4<4F$h4Jd*)jPK?nX7xvSnJ=~ja!u_ zU%OOnW_)Y1=l@sL^YZhjyPB)souYbWx@xV1=&HO^Yq!nI3Yej-`qAK&$(};h?YFWX zU2ogAop-CTJ&*JkM-$HW9VPQNEtwVk$fEZA#}$30wzqO_UCZiwTj9%ezxv2WVWFVk zwUO_>mzO7*Hf3DDq0TLnP`_o1+L5`g&TmSNZrkrJkZQrx~k0jrsw!Mp{iL8{#v~#-)=e2SB9&p7qy zN^x_>>s1*aOTVo0DzV)nc4XoGW$$f&viugB^#73l^Tsp(?(+IGU*}i6b(?F(_m@Hu z8^cath@LUYG}L67v*^}LU%8iJSGE=hs3?|N9X*zEDA>1bxAnC1t2s<;*Rq$Cai9Kq zBI~W)rgJq<9;KD3AFOt@&b2b>JGj)zZf11dg->_1Up=?|QPEZV#?PW-L+PE3rgBP8 z-tL!3>@2^tQr=BowP4m29ofFL$kw!TJ=;W?zwR;PIC=KKyn_k;tZ%MLS9|1feB)~I z+>re}BgZ?4{a(>-X3v^!YyaNLo0rO#owet2Z+`N1IiX*#9$uZra$mUq|APAMUtVNw z@Vg_GBP2fmacp^(cu%g{mM{)xkGM+ze=PfT=R5BCdTy&Cd%~+;+u}RVl8}x8bGa2B+%g_qmCtjI)z>vbzSj3H420F6tt@L2}lq zJr^#??yHb4QRa(G(GqW0Z~ zwg~lh{yH`x!B=C?jh@ivZ`rQFhvvGSkT~^Y=BBt^J*jP1N(BtXT62=tF-vc&%D)k^ zSkW^vM8Td#dfQ~Fxp~4povW6!F8EWje$|tHj%_WACit>QnQl_`KCblcYQ^uoXJ@wO zG~HFOFUo&){gpucuDyv|p{-{H7cj9uY$?^?v-6D6zFWuV?s$@?^FZ)}1KqxhH@!5y z@a|A%`7@559k=!#(6m0dwYsq&P-FR`*^H{u(*yQN280+ev$ph{T{v6agxM$2O{d`;^Q>iT*C9Ox`)gu%$-jS!m7tcxLkXltab)c?Iq6b56;$ zoD}Z5ZF0Bn0w3Y?ZX6&3I2QPTD14O z&%Bn<&#!U0DCJp=oP5Bt&ga~46J%0YPHk~+XF0V+i77V!)Ry2AevN;n0+!89JK??D z=ka0zjms^!H*|W;JQfdfTh(Ep3}y~|$B%YB#MI?OD4 zF~MPGm`hoM(b|c(Vm(fo{PO}iLgdz7haDUmm-%FcG%j~>NCqqmJrWY?`|$oz!_d3? z>&t(iZ!TSL5&Zdk%>4VS4%*CNI~}sseJWG1s6nXe?rIqU=VQ$EA9(+NE%^O@dAt9O z=WnM=+D4i$(>jvHY!^JW=Gro=0B| z*jG{dZTh*w;;0E%cFvh*eR3 zaB11I3#Z-0U0UN9Cp}~{xb^D5LHU;M4x@!{c%Gljy+%r`$t=5A7si!zwi zt-I}kyhQG+JSD5M27>82zT#U;K3Y^?*2~D3I=En(?W86x`+F5HMf+lML=!ePb-1%E z=vy&s?%^nw8ne>-p(!%{g$Iv6+t_ga*_H{Nib@RKtnx~Gl+q3_tdQ_NG2^2BlpU^4 zhhvp*tlGQAylum;Cf`FbHm`j(UpX1JTowPS*KK=FyT?3R{E=AM=eZ^Y+~*&O6;&*4 z_`2+!obz%`xxQByGc{gR_Aq_M4~3M;BCtwfJ6& zJ4>)r;0ZPE#?Q+bpS3;QBWUJ)ATc$o&$_Xwe_Gd~+vgvsrD*1hd=R#Hkz~B~KxqKi zbw^WIMe*aM7dYpzFZy~fcINDjpZjf(#pMh6H9xhw5xkr~hW$Y4gg5UFf9T%$Phy7s z_4up$vv2P|x&Q8Rr#)2%N((w-AL*GF$TD0%$hniR$Ys~Z81_FqjX$x*urFuzoZG!( zhjA{~bw|xjdUDqp%Ox9LFF0cmYZ=CNvbRC5K$e5umT@QFj@Jc}G3-0@vW?EnQJ;5m z(bT_UE?+WC3S^&n#)%%x(A(DV+QCLx5oCaD!|Me})rTKi-N>KrvfcbZX@Gb2Ws!Bw zT1s+CGI9^og&JNv?1^n{h+(h!zVS#F^0X@ z#N4S!_Cxq0kWDYkSYp`Qdn*>ku#3($++Vw6>%~R?Z&#b|k=}b}&;QcJ|GAc*n`d}m z*r&<(S-~-zn|J$fKV4yMeC^rRuU|7?eOYGo^N2pH!=br`?yC;1dhmH(<5PX}&9@5J z%-E;%S~H)Xo7os8QzaDdv}xDwhx^5zm@M^pzC}ae8;5SWf>IOFMdUTn|ZNaXjcSkBqRdON?@1By_FxAqpn?um| zi5^Sz?1GO^k1fp*R6NzY(>T5ObpW^Kjk53?zUL&1UthYtvhR*SoYB>Z>ft93t^E6L z*$YX*!yb&A{TA!`mQD&uc_6AB#j0)eC x`DgK`&e>o72uf#p`OS*#uQN~$*^+s>-eu~OsuuaIHw+9644$rjF6*2UngHpz!D0Xa diff --git a/doc/publican/html/images/content-updates/sync-subsurf-case1-3.png b/doc/publican/html/images/content-updates/sync-subsurf-case1-3.png deleted file mode 100644 index 9810a028186cba6b1578637834e7a5842fef9aaa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22771 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 BZ`c3; diff --git a/doc/publican/html/images/content-updates/sync-subsurf-case1-4.png b/doc/publican/html/images/content-updates/sync-subsurf-case1-4.png deleted file mode 100644 index bf3c04bcf0fc93b0661a475aaa02b7f7821bb734..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22017 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 diff --git a/doc/publican/html/images/content-updates/sync-subsurf-case1-5.png b/doc/publican/html/images/content-updates/sync-subsurf-case1-5.png deleted file mode 100644 index 1b2ebc3b1dd53819002152d9f8d77413bdefec79..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10932 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�`%*@I>{#6$H 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 M)78&qol`;+0Ak{N+5i9m diff --git a/doc/publican/html/images/content-updates/sync-subsurf-case1.drawio b/doc/publican/html/images/content-updates/sync-subsurf-case1.drawio deleted file mode 100644 index 385c6fd7..00000000 --- a/doc/publican/html/images/content-updates/sync-subsurf-case1.drawio +++ /dev/null @@ -1,500 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/doc/publican/html/images/content-updates/sync-subsurf-case2-1.png b/doc/publican/html/images/content-updates/sync-subsurf-case2-1.png deleted file mode 100644 index 25408cfcc4290ab9bb830824518b0a46cd1bd789..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26210 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 bpI!d8_sP5e^D`M37#KWV{an^LB{Ts5gHhMH diff --git a/doc/publican/html/images/content-updates/sync-subsurf-case2-2.png b/doc/publican/html/images/content-updates/sync-subsurf-case2-2.png deleted file mode 100644 index 63ea066cf2e69d339936f24f6900908606bbca55..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25821 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ℜ7d?Pq?wI(mT9(FY?nw;T~il_FJxnl)A^@` zle&##1Oh79y#0^9VLNspZp*JDn}nB}&nc^Ya_YB2|GYQH&qTOwUvm1y3;x^s-QNXn zxu`Clq#`&`ql@XK;SbH$A2oK<^UJksa8IO_eV-zrG2vFw%|+)gs{48!I(2!~p-YAe zX5TKE&pCHJDf4R&$4jZnzs~WT>60zDmNGXxWUMK_Tq4(P@x=_InLTdGDzahXp}Xyh z1f4F;_w=7Ng(XiR&zbd?OU1XM%F3Vj|9#uOjjPS+-QyjFkGs0NZ+A`4$-dFGD5Q5y z)33T~ve%9zb}B3=ob$YCZ}hgD&PjW}?S8}il(+M+(C?hr&F3suH=gg9p!c}9%&)1A zQ!}#b`fE`Z#TPSWe#O61^<4DYo^@{cA#WjJVfl&&jqGw23$|`8JwMMjG&Hodv~-ci zEb!SlfByVA*v!6o)`f6RU9QH%VRJu;>H8YaK5LwIW`<#M+v%rH)wXi{H=+Xq9B$uk zH0S04C4f0qY72Te5{;xZXT*1$zi|B9rKM&Mw{Ozv-tBt-|Idnf;`X9Xqb#2S+p9Xo*<2af#USxZ1B*TU%Q{%oKmS=wcdAVP4RS&a4M3 zJo1@d@7y3D_`P!7%^W$ioEsYw4{xdJ4+;IWpo}N)%f?G8Jst^0t9VaNp6qF+=-lyq zf%=O>ixNan9B&aQ`t|Das_VP>cO^RUt}bm6(D3Wp>L+zd+J@aWl6&)l-q*_ES5K@m zt`%a+%9hKUCcEiiT0rSMGgIDT7MI->IVTNI>UEY0K5~25Sh*-t#Pv?dFPH*DL3w*TU z2%|k;#=WaNE8nHty>0(%`~Sk_*I%9H&zogDb+%*r!~boc+7=xC{Ie!A_;P|uQg21o z;YdOEncsfaY|?Qy$u_?x;u@H6>A;f73w3k4HG>@98%&Y?!m-)O@yDOK{i|V?`q?qwg< zIQF-H_Yh#2CJJ8jJJG3qlk;9bpCG5J%yYk1*vR#}i@44|-@fraLzpq+S=R3YDI!eE z4W^4&hip}B`N8+w=KrT1_e;9x&$In|wqokW@As>n!-S3(Rtuk-vxbu?>(ASnT9s9M z<(#;E)Pi-A-zR^QORRO$Ve4>jS+%K1vZuJ!_tn&Z7f`Nfk!rI zO5oKdhEpu340SjTRlJZ|dDq_|^GVdsrJGo_#G2mz=T7A8$vB)6!Ytz2cthD{i5&mG zBc4{jmanMN=rAc+WNs6%wPp1JwMU0EPHDWI@Tm0S?bf&YA;r7OWPYV)ghVf#(r7$m z+a-1<6OPTjZ4MFd9#-?GpE-ZPI3RL|2IwfUEaqdzjXh1uoy+|$EzhaquXNq5am&>; z(BR36?}zSva9Do16TB}fL6j$~`Kgrm1%K-k@>{~!PWbh=Zi2_vCWgHn9Jf|QMJ)Jx z;exmALmigPtIKphSgRe$4;5dOZ((=XWD2-r&+tXNFe2&o@wEkPyY9dLF8i(XIOycT zUt3B<)=xV%ZPlVx2jtEiJ~QEj3&+a%_QD#3XQ0?~-Oj zi@@=_e9!aLeP&LaGrjmjl+1D2*qSRlZ*$I!x}lbxC|0|6+No*NPKkZ_$Y?dyAyC9e ziQ~WRp%vBZuXEp54YYEf_0gVna$v55>xXMqua93pJ^%ljmg=lRt+w1Em%p998a@y7 zpDSLJyUI90wkS69?#oY?pFK=#zWTuS$=R3*nWu~wR^58P$-3NHb@!49n%2x^hIqZq4`rMF>0up{j4V~3>sww}R_FY;GgY05z3kQ0;F;V;hNWG6cim@|o2rYb zH5hm2hGgB2xHuzf4%aMI%O%F~Lc6b;Z+IX7>(Ew}c9zU2tv_}4_dI=`E)rbBr2BeN z>=AtxD_fqVqYLDJ`~uC@vZyV-b)YcDDbeZm@wJ!IC%p=P#+l~f@W{e%seZ$g2{v;4 zN1Q&|_%l6Qc`qve@@n4?GtNJByrnRgb7`-b<4U(C?IwZC`yX*E7id+E>F>1N(0ee; zAcEK8p{qg!*EHXsF>+bIFZ2G0nU}Zt{6+R{iY)~f-ayjy1dE z*86Mt7(AV+!05UBvL~PC8o~2yufB&VI14)Wu{ci1PThb1z1@RpsgXq#C zJMVp5REFkORI9yQw;w2;+2QQ^{?p;L z40}KStSMTn^MvaHKijUu6(6GZIqx&p`{{rE((A7imOZt5acuGm%f8oz?)*8**H4|h z>$m^D{!LYruE#sBSgy?2{e8mrrJGzgdGGki#;?;Kp^)8eXWDJKq=)Ztib;@xg5V=V zTe*G}&sDw!e?AC18RUjcQt3H-+<5|v;{yx6+X;3W&w4KHJ-ACw*Rv!!>R(3Y;kl}z zuSDiPbl&c`aN%u-Gnz5nw;WhRC6@*3h?b=m4LtOdR2G80hEc2{5g)UsnGkW*xL5a}e_o0#gB`un6*DnVy z`l3F+?o+z@tUoq2Q{~oXt>%)Ad*d!z?6p16wQwcVwigEacTO%`y!A!!%4WCPt=*^G zWQ?zESzh1zo%g=TRmSVkW_pyf;hc`Td49Y?ER1!m@<(Hv}-J7#;vPMH}5Ps=NI3-?_tJtufC1ETzYH&-QCp2 zpnPn@*1+5ai|@ZoI#42{?q~V3vob-tN^6zYZNKxaFORMIbhxoN#VX5aL+`1U1%ET{ zsclHv^h)oddE-0xscH_{8@2YEeTdqU^0-{cJ0%I^$g=@cV-7uMzC3~HG#mRfO;+3E zng*d?=2#tJU$x}Y0kg(f*Ok5xeg-zGt_hjBvT>4Z38%#$GaqO0A^~rw`)4lv?9N>& z_qXR2vwU6q^C>2h&1MsOBxkRbYAK!<6#ad|LC}_)o;;`BmU9d3zfZXsn+QGdxJwt$ zF~}!1nhz$puuKkQYd+Y)p|+TZtyxge$4!!lO<4(ge)6CCeXX}QC4NqR%fP^(TH+c} zl9E`GYL#4+npl#`U}RuqrfXoRYiJr`WN2k#YGq=nZD3$!V4%OsWe19e-29Zxv`SjKNyYPa(Y9DUCXV-p(G z+B&N?T$i5}#xJ?&?eyt$W`v!8Gn3(1>28&jx!tm?f6|*PT?QqiSJ>IMbdoQex zsq(Hd^ItNJH~z_dL(XTJr!{tODA-&bd@$?XuP>G7cZgUUFPrjq@1IMLlV#d=7W&*~ z%=q*zy*ys>z0UIquMVx=zx>S`^w+hSp zPtO%J*fXtnqxIRm_D9+8F9!U~j!)WkK<8e8c|gc+-;F>17=3xBG4<@{!}Iob&0ZC~ zVfD^DbtV(f-ybdR=I*(7drx=g^S1cAntbbDc5OKF+D9|FgwaQR_d^{O#{CCg2+cS* zN7pG~Ua|eIS-ZXCZYIeVe17kHSM+0*w^SZe+~mXcy_&s$bGP5%+aSwvL4xV`9P5zV zje8qo1tgqKp19lN)fDcv!Q7zO|NGj#MkX4zGdSLS{-W$8^znVmfs!;8p5rD5GRX;xB}Zd*C*M5Ovu5YwLZ^2tWUp60P|SD|o+0S)ET`@FJoRGVe+ee7 z%S%~gm_OAW5Oa<=sW5x3bV{_ulV1kAH$T|BEVhNun`y_L6MJ_`ZOAu-ftPg#F{}=mR#(Pv^2slHR6Um)o4K@nY6Y*F85=Wqt}DinrBV z%lUia@7m+_-`{L0*>^71>i!e1>ycMtJDN7?>#V(ciIFAzi{ZBqufLt#bYZuUbDi_@ zxXzizkv-1SCoX>!e#&I!Iqf}rPME3+p02za7`T~Tb*gWbcI}FJ*Y;go6nZ!5(tGwT z6=KKVsf9nB6uz}8I(FsLw{CCuzAe$Xv2v~9qNfsuZ#dj~{5k{$yUpz{Rc&jP@%r$H z+b73+cFjs2ky8xkHmE)Lv#x0yS3%joI_2yCA2ai5G5S@WbY$i`|H5JKn~nFkPoHM% zwrW?Iv(KGKt92QbF@dwHSFNr|%6k3m*oEx($K$KzSMK_j*YQ%a*Qr|kKKrRECd1>O zVy&ChCKXJwS*tY9;mn0Sw{^CBdrOU;!JAVt z52kdk;NN*7qlDSpYjykX-b~)6&YxbBrF?f(bxN-0JDOb@eCV*>4GFEY#tZN6=$$%i zOKxt`BC)Q{oeTMH+>+fe^KYL@Yhdr634AyDxU3fIHFRc*^Dg*VvOY6p`-+V%*$ZcI zyxGp-J#C@)BLB;8cUwBX`NiVCrt0avjrwOe|GlVC&It)Mb8pC!X$dZK`gmKtGy3Um zf5SinFJC3w;0Y_H&u|mHoPBGz_Vc@~$_B5hzDq5CBl7*7>9lSk>rh#?o=^K)o+TbI zFy*;oU}V_-PDYTerB`z1-;)w-s{|cCyt=&bY-Yiczn0GY`QM*k`Tni-@xSUn)z93# z?#XREbNh6JuFLE5DZW*|-`ZBMXffJa|1d{ulMAEC$&N*Fi~E0_->92$E4}`{ZS3WX zwtv3wHutr2UefRM>E5+3fwSzi;_oK?e9Bil)9zm;U;W=I38SoteP@EX`hqUI|K&6A z+#P+{J@eO!#~bd3M0{3kOY>+59yFyF~upRNZgAGxjz8F}qYJ zFg@I4|JjdX-)A|>vg}@1ousq&XKvKGYOPPVJ**e8@fNWE$klqj;pfwrTEEY%_j`X_ z;Hmg>)BV1!Pxl_bv?XNwk+=V6-Cy=rVxhwR-Yv?0JAz}c&h2SuJhwpYK}l19@8{cF zgbK1IM7<29D9IK>ve(H?W_07M0;?i!eFJ?ueD>p8WTs*;R zw)E4(I?E#LZ1(yZTUv;|$bF)9>D}M;?PtGlGI-PM^TTAXZ|m7PIfv90CtUhsmOGzY z!y{igd|&Xhg?3M*7GLDmx%kCQ*LAY+r_jBV-(Kms&Ng?0p>O_WKVjj|MYHZLd&)Sw z>x)^@)64(AJlV^<&97i-X4UMlBu*jW###54F;^^B+1tBEJ!?*5aG6u17XQRmk8Ydp z^^M-UdxqQ9FJ`hI-g#ZReWH5NF-7a6d#ih&Ds5?>+l*|C3SzU=9!ZE>E-4x z?oX|^ei`p7K0W>W;?=f$*G5*GWc%;i!*KaM{{{+#V+wOqKD=finkGuDgFYD|+RqtV)nKotp9;L2U6W25Oxmz){oz^6wVfBkug~nbxq`p` z)@sT4q%T)X)smb%=DP*z{tC5tkompv@T;qPYn(RS+Vx5DVJ0m+ukSd{?E^3U|?YIboFyt=akR{0IDt!TmS$7 diff --git a/doc/publican/html/images/content-updates/sync-subsurf-case2-3.png b/doc/publican/html/images/content-updates/sync-subsurf-case2-3.png deleted file mode 100644 index 3948988d51cf3f2f671bdfe53e81f9b6d1ba1ec3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10069 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 I&MBb@0KaK6BLDyZ diff --git a/doc/publican/html/images/content-updates/sync-subsurf-case2.drawio b/doc/publican/html/images/content-updates/sync-subsurf-case2.drawio deleted file mode 100644 index c1eaff66..00000000 --- a/doc/publican/html/images/content-updates/sync-subsurf-case2.drawio +++ /dev/null @@ -1,287 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/doc/publican/html/images/content-updates/sync-to-desync-subsurf-1.png b/doc/publican/html/images/content-updates/sync-to-desync-subsurf-1.png deleted file mode 100644 index 3a56f260a12df2c07b0d95f2bedd518f2d4cb061..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18621 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ξ5oqLG$`A_9_05Zk(PP|Jd=jbcma%tD;e3l+TWJ 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 P0|SGntDnm{r-UW|Uh!wq diff --git a/doc/publican/html/images/content-updates/sync-to-desync-subsurf-2.png b/doc/publican/html/images/content-updates/sync-to-desync-subsurf-2.png deleted file mode 100644 index 9cb6210c6594e2979d7177df8865866b098eddfe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18069 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 b{rCNsD%r!pz`)??>gTe~DWM4fMP1|1 diff --git a/doc/publican/html/images/content-updates/sync-to-desync-subsurf-3.png b/doc/publican/html/images/content-updates/sync-to-desync-subsurf-3.png deleted file mode 100644 index 34bf7475ecf227af341f314e02e4a670861ce849..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19371 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 diff --git a/doc/publican/html/images/content-updates/sync-to-desync-subsurf.drawio b/doc/publican/html/images/content-updates/sync-to-desync-subsurf.drawio deleted file mode 100644 index 7a72e0f6..00000000 --- a/doc/publican/html/images/content-updates/sync-to-desync-subsurf.drawio +++ /dev/null @@ -1,223 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/doc/publican/html/images/content-updates/sync-to-desync-transition-1.png b/doc/publican/html/images/content-updates/sync-to-desync-transition-1.png deleted file mode 100644 index cd69f3c34da5cf101bd2d0703225b7e695e1c03b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9299 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 E0Lwg-GXMYp diff --git a/doc/publican/html/images/content-updates/sync-to-desync-transition-2.png b/doc/publican/html/images/content-updates/sync-to-desync-transition-2.png deleted file mode 100644 index 677a0cdb1b182a19442633be3597337c6c869de9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15177 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 A_5c6? diff --git a/doc/publican/html/images/content-updates/sync-to-desync-transition.drawio b/doc/publican/html/images/content-updates/sync-to-desync-transition.drawio deleted file mode 100644 index 9843acb6..00000000 --- a/doc/publican/html/images/content-updates/sync-to-desync-transition.drawio +++ /dev/null @@ -1,203 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/doc/publican/html/images/icon.svg b/doc/publican/html/images/icon.svg deleted file mode 100644 index b2f16d0f..00000000 --- a/doc/publican/html/images/icon.svg +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/doc/publican/html/images/meson.build b/doc/publican/html/images/meson.build deleted file mode 100644 index c06e9be8..00000000 --- a/doc/publican/html/images/meson.build +++ /dev/null @@ -1,37 +0,0 @@ -foreach src : files([ - 'icon.svg', - 'wayland.png', -]) - name = fs.name(src) - publican_inputs += fs.copyfile( - name, - install: true, - install_dir: publican_install_prefix + '/html/images', - ) -endforeach - -subdir('content-updates') - -foreach src : files([ - 'wayland-architecture.gv', - 'x-architecture.gv', -]) - input = fs.name(src) - output = fs.stem(src) + '.png' - - publican_inputs += custom_target( - input + '.png', - command: [ dot, '-Tpng', '-o@OUTPUT@', '@INPUT@' ], - input: input, - output: output, - install: true, - install_dir: publican_install_prefix + '/html/images', - ) - - publican_image_maps += custom_target( - input + '.map', - command: [ dot, '-Tcmapx_np', '-o@OUTPUT@', '@INPUT@' ], - input: input, - output: fs.stem(src) + '.map', - ) -endforeach diff --git a/doc/publican/html/images/wayland-architecture.gv b/doc/publican/html/images/wayland-architecture.gv deleted file mode 100644 index f2c35075..00000000 --- a/doc/publican/html/images/wayland-architecture.gv +++ /dev/null @@ -1,36 +0,0 @@ -digraph arch_wayland { - edge[ - fontname="DejaVu Sans", - dir="both", - arrowtail="dot", - arrowsize=.5, - fontname="DejaVu Sans", - fontsize="18", - ] - - node[ - color=none, - margin=0, - fontname="DejaVu Sans", - fontsize="18", - ] - - c1 [label=<
Wayland Client
>, URL="#c1"] - c2 [label=<
Wayland Client
>, URL="#c2"] - - comp [tooltip="Wayland Compositor", label=<

Wayland
Compositor

>, URL="#comp"] - - impl [tooltip="KMS evdev Kernel", label=<
KMSevdev
Kernel
>, URL="#impl"] - - c1 -> comp [taillabel="③", labeldistance=2.5, URL="#step_3"]; - c2 -> comp; - - comp -> c1 [label="②", URL="#step_2"]; - comp -> c2; - - comp -> impl [xlabel = "④", URL="#step_4"]; - comp -> impl [style = invis, label=" "]; - impl -> comp [xlabel = "①", URL="#step_1"]; - - c1 -> c2 [style=invis]; -} diff --git a/doc/publican/html/images/wayland.png b/doc/publican/html/images/wayland.png deleted file mode 100644 index c9937928ce9584a660ee10f7092eed2033f6eab8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5649 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 A`~Uy| diff --git a/doc/publican/html/images/x-architecture.gv b/doc/publican/html/images/x-architecture.gv deleted file mode 100644 index b223d1dc..00000000 --- a/doc/publican/html/images/x-architecture.gv +++ /dev/null @@ -1,53 +0,0 @@ -digraph arch_x { - edge[ - fontname="DejaVu Sans", - dir="both", - arrowtail="dot", - arrowsize=.5, - fontname="DejaVu Sans", - fontsize="18", - ] - - node[ - shape="none", - color=none, - margin=0, - fontname="DejaVu Sans", - fontsize="18", - ] - - { - rank=same; - c1 [label=<
X Client
>, URL="#c1"] - c3 [label=<
X Client
>, URL="#c3"] - } - c2 [label=<
X Client
>, URL="#c2"] - - { - rank=same; - xserver [tooltip="X Server", label=<

X Server

>, URL="#xserver"] - comp [tooltip="Compositor", label=<

Compositor

>, URL="#comp"] - } - - impl [tooltip="KMS evdev Kernel", label=<
KMSevdev
Kernel
>, URL="#impl"] - - c1 -> xserver [taillabel="③", labeldistance=2, URL="#step_3"]; - c2 -> xserver; - c3 -> xserver; - - xserver -> c1 [taillabel="②", labeldistance=2, URL="#step_2"]; - xserver -> c2; - xserver -> c3; - - xserver -> impl [taillabel="⑥", labeldistance=1.75, URL="#step_6"]; - xserver -> impl [style=invis, label=" "]; - impl -> xserver [taillabel="①", labeldistance=1.75, URL="#step_1"]; - - xserver -> comp [style=invis]; - xserver -> comp [taillabel="④", labeldistance=1.75, labelangle=-45, URL="#step_4"]; - comp -> xserver [taillabel="⑤", URL="#step_5"]; - comp -> xserver [style=invis] - - c1 -> c2 [style=invis]; - c3 -> c2 [style=invis]; - } diff --git a/doc/publican/html/images/xwayland-architecture.png b/doc/publican/html/images/xwayland-architecture.png deleted file mode 100644 index f24dc1837f2e190c9d38719420a844aeb5997efa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7611 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 diff --git a/doc/publican/meson.build b/doc/publican/meson.build deleted file mode 100644 index 1aa31d3c..00000000 --- a/doc/publican/meson.build +++ /dev/null @@ -1,116 +0,0 @@ -proto_to_docboox_xsl = files('xsl/protocol-to-docbook.xsl') -proto_iface_to_docboox_xsl = files('xsl/protocol-interfaces-to-docbook.xsl') -merge_mapcoords_xsl = files('xsl/merge-mapcoords.xsl') -to_publican_xsl = files('xsl/doxygen-to-publican.xsl') - -publican_inputs = [] -publican_image_maps = [] - -foreach src : files([ - 'Wayland.xml', # must be first in publican_inputs - 'Wayland.ent', - 'Book_Info.xml', - 'Author_Group.xml', - 'Foreword.xml', - 'Protocol.xml', - 'Xwayland.xml', - 'Compositors.xml', - 'Content_Updates.xml', - 'Color.xml', - 'Client.xml', - 'Server.xml', - 'Message_XML.xml', -]) - name = fs.name(src) - publican_inputs += fs.copyfile(name) -endforeach - -publican_inputs += custom_target( - 'ProtocolSpec.xml', - command: [ xsltproc, '-o', '@OUTPUT@', proto_to_docboox_xsl, '@INPUT@' ], - input: wayland_protocol_xml, - output: 'ProtocolSpec.xml' -) - -publican_inputs += custom_target( - 'ProtocolInterfaces.xml', - command: [ xsltproc, '-o', '@OUTPUT@', proto_iface_to_docboox_xsl, '@INPUT@' ], - input: wayland_protocol_xml, - output: 'ProtocolInterfaces.xml' -) - -# Doxygen generates a myriad of files, and offers an XSLT -# to combine them all into one. This does the combining. -# The result is still Doxygen XML. -ClientAPI_combined = custom_target( - 'ClientAPI-combine-doxygen-files', - command: [ xsltproc, '-o', '@OUTPUT@', '@INPUT@' ], - input: [ doxygen_Client_combine_xslt, doxygen_Client_index_xml ], - output: 'ClientAPI-combined.xml' -) - -# This converts Doxygen XML to DocBook XML. -publican_inputs += custom_target( - 'ClientAPI-doxygen-to-docbook', - command: [ xsltproc, '-o', '@OUTPUT@', '--stringparam', 'which', 'Client', to_publican_xsl, '@INPUT@' ], - input: ClientAPI_combined, - output: 'ClientAPI.xml' -) - -ServerAPI_combined = custom_target( - 'ServerAPI-combine-doxygen-files', - command: [ xsltproc, '-o', '@OUTPUT@', '@INPUT@' ], - input: [ doxygen_Server_combine_xslt, doxygen_Server_index_xml ], - output: 'ServerAPI-combined.xml' -) - -publican_inputs += custom_target( - 'ServerAPI-doxygen-to-docbook', - command: [ xsltproc, '-o', '@OUTPUT@', '--stringparam', 'which', 'Server', to_publican_xsl, '@INPUT@' ], - input: ServerAPI_combined, - output: 'ServerAPI.xml' -) - -subdir('html/css') -subdir('html/images') - -foreach src : files([ - 'Architecture.xml', - 'Introduction.xml' -]) - name = fs.name(src) - publican_inputs += custom_target( - name, - command: [ - xsltproc, - '-o', '@OUTPUT@', - '--stringparam', 'basedir', meson.current_build_dir() / 'html', - merge_mapcoords_xsl, - '@INPUT@', - ], - input: src, - output: [name], - depends: publican_image_maps, - ) -endforeach - -custom_target( - 'Wayland-docbook-html', - command: [ - xmlto, - '--skip-validation', - '--stringparam', 'chunker.output.encoding=UTF-8', - '--stringparam', 'chunk.section.depth=0', - '--stringparam', 'toc.section.depth=1', - '--stringparam', 'generate.consistent.ids=1', - '--stringparam', 'html.stylesheet=css/default.css', - '-o', '@OUTPUT@', - 'html', - '@INPUT0@' - ], - input: publican_inputs, - output: 'html', - build_by_default: true, - install: true, - install_dir: publican_install_prefix, -) diff --git a/doc/publican/xsl/doxygen-to-publican.xsl b/doc/publican/xsl/doxygen-to-publican.xsl deleted file mode 100644 index d7f29597..00000000 --- a/doc/publican/xsl/doxygen-to-publican.xsl +++ /dev/null @@ -1,160 +0,0 @@ - - - - - - - - -

- Functions - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Returns: - - - - - - - - - See also: - - - - Since: - - - - Note: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - <xsl:value-of select="compoundname" /> - <xsl:if test="normalize-space(briefdescription) != ''"> - - <xsl:apply-templates select="briefdescription" /> - </xsl:if> - - - - - - - - - - -
-
- diff --git a/doc/publican/xsl/merge-mapcoords.xsl b/doc/publican/xsl/merge-mapcoords.xsl deleted file mode 100644 index 7adaca36..00000000 --- a/doc/publican/xsl/merge-mapcoords.xsl +++ /dev/null @@ -1,64 +0,0 @@ - - - - - - - -%BOOK_ENTITIES; -]> -]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/doc/publican/xsl/protocol-interfaces-to-docbook.xsl b/doc/publican/xsl/protocol-interfaces-to-docbook.xsl deleted file mode 100644 index f68216d5..00000000 --- a/doc/publican/xsl/protocol-interfaces-to-docbook.xsl +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - - -%BOOK_ENTITIES; -]> -]]> - -
- Interfaces - - The protocol includes several interfaces which are used for - interacting with the server. Each interface provides requests, - events, and errors (which are really just special events) as described - above. Specific compositor implementations may have their own - interfaces provided as extensions, but there are several which are - always expected to be present. - - - - Core interfaces: - - - - -
-
- - - - - - - - - - - - - - - - - -
- diff --git a/doc/publican/xsl/protocol-to-docbook.xsl b/doc/publican/xsl/protocol-to-docbook.xsl deleted file mode 100644 index 92f8d677..00000000 --- a/doc/publican/xsl/protocol-to-docbook.xsl +++ /dev/null @@ -1,225 +0,0 @@ - - - - - - - -%BOOK_ENTITIES; -]> -]]> - - - Wayland Protocol Specification - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - <xsl:value-of select="@name" /> - <!-- only show summary if it exists --> - <xsl:if test="description/@summary"> - - <xsl:value-of select="description/@summary" /> - </xsl:if> - - - - - -
- Requests provided by <xsl:value-of select="@name" /> - -
-
- -
- Events provided by <xsl:value-of select="@name" /> - -
-
- -
- Enums provided by <xsl:value-of select="@name" /> - -
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - id for the new - - - - - - - - - - - - - - - - - - - - - - - :: - - - - - - - :: - - - - - () - - - - - - - - - - - -
- - <xsl:value-of select="../@name"/>::<xsl:value-of select="@name" /> - <xsl:if test="description/@summary"> - - <xsl:value-of select="description/@summary" /> - </xsl:if> - - - - - - - - - - - -
-
- - - -
- - <xsl:value-of select="../@name"/>::<xsl:value-of select="@name" /> - <xsl:if test="@bitfield"> - - bitfield - </xsl:if> - <xsl:if test="description/@summary"> - - <xsl:value-of select="description/@summary" /> - </xsl:if> - - - - - - - -
-
- -
- - From e473f48d0d77d61c57ddddb1443e3286ffecf05a Mon Sep 17 00:00:00 2001 From: Julian Orth Date: Mon, 2 Feb 2026 11:25:59 +0100 Subject: [PATCH 11/11] doc: turn captions into third-level headers in book Signed-off-by: Julian Orth --- doc/book/src/Content_Updates.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/doc/book/src/Content_Updates.md b/doc/book/src/Content_Updates.md index 91d290f0..74871653 100644 --- a/doc/book/src/Content_Updates.md +++ b/doc/book/src/Content_Updates.md @@ -73,11 +73,11 @@ In all the examples below, the surface T1 refers to a toplevel surface, SS1 refers to a sub-surface which is a child of T1, and SS2 refers to a sub-surface which is a child of SS1. -**Legend** +### Legend ![](images/content-updates/content-update-legend.png) -**Simple Desynchronized Case** +### Simple Desynchronized Case ![](images/content-updates/simple-desynchronized-state-1.png) @@ -111,7 +111,7 @@ applied. When the constraint gets cleared, both DAGs can be applied to the surface atomitcally (either only _2_, or _2_ and _3_). -**Simple Synchronized Case** +### Simple Synchronized Case ![](images/content-updates/simple-synchronized-state-1.png) @@ -138,7 +138,7 @@ and it can be applied. The DAG gets applied to the surfaces atomically. -**Complex Synchronized Subsurface Case 1** +### Complex Synchronized Subsurface Case 1 ![](images/content-updates/sync-subsurf-case1-1.png) @@ -164,7 +164,7 @@ DAG of _6_ does not contain CUs with constraints and can be applied. There is no DCU left and no constraint remaining. Nothing more can be applied without a new CU. -**Complex Synchronized Subsurface Case 2** +### Complex Synchronized Subsurface Case 2 ![](images/content-updates/sync-subsurf-case2-1.png) @@ -179,7 +179,7 @@ no CU with constraints and can be applied in any order That leaves the same state as in the previous case -**Synchronized to Desynchronized Subsurface** +### Synchronized to Desynchronized Subsurface ![](images/content-updates/sync-to-desync-subsurf-1.png) @@ -196,7 +196,7 @@ desynchronized. SCU _2_ is reachable by DCU _4_ so nothing changes. Surface _SS1_ provides a new DCU (_5_) but because the CU before (_2_) is a Synchronized CU, it is not a candidate -**Synchronized to Desynchronized Transition** +### Synchronized to Desynchronized Transition ![](images/content-updates/sync-to-desync-transition-1.png)