wire: attach versioning information to requests
This commit is contained in:
parent
d46462dfdd
commit
0d7b45d149
20 changed files with 57 additions and 28 deletions
|
|
@ -52,7 +52,6 @@ struct Token<'a> {
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
enum TokenKind<'a> {
|
enum TokenKind<'a> {
|
||||||
Ident(&'a str),
|
Ident(&'a str),
|
||||||
#[allow(dead_code)]
|
|
||||||
Num(u32),
|
Num(u32),
|
||||||
Tree {
|
Tree {
|
||||||
delim: TreeDelim,
|
delim: TreeDelim,
|
||||||
|
|
@ -233,6 +232,13 @@ struct Message {
|
||||||
camel_name: String,
|
camel_name: String,
|
||||||
id: u32,
|
id: u32,
|
||||||
fields: Vec<Lined<Field>>,
|
fields: Vec<Lined<Field>>,
|
||||||
|
#[allow(dead_code)]
|
||||||
|
attribs: MessageAttribs,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, Default)]
|
||||||
|
struct MessageAttribs {
|
||||||
|
since: Option<u32>,
|
||||||
}
|
}
|
||||||
|
|
||||||
struct Parser<'a> {
|
struct Parser<'a> {
|
||||||
|
|
@ -279,9 +285,32 @@ impl<'a> Parser<'a> {
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn parse_message_attribs(&mut self, attribs: &mut MessageAttribs) -> Result<()> {
|
||||||
|
let (_, tokens) = self.expect_tree(TreeDelim::Paren)?;
|
||||||
|
let mut parser = Parser { pos: 0, tokens };
|
||||||
|
while !parser.eof() {
|
||||||
|
let (line, name) = parser.expect_ident()?;
|
||||||
|
parser.expect_symbol(Symbol::Equals)?;
|
||||||
|
match name {
|
||||||
|
"since" => attribs.since = Some(parser.expect_number()?.1),
|
||||||
|
_ => bail!("In line {}: Unexpected attribute {}", line, name),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
fn parse_message(&mut self, id: u32) -> Result<Lined<Message>> {
|
fn parse_message(&mut self, id: u32) -> Result<Lined<Message>> {
|
||||||
let (line, name) = self.expect_ident()?;
|
let (line, name) = self.expect_ident()?;
|
||||||
let res: Result<_> = (|| {
|
let res: Result<_> = (|| {
|
||||||
|
self.not_eof()?;
|
||||||
|
let mut attribs = MessageAttribs::default();
|
||||||
|
if let TokenKind::Tree {
|
||||||
|
delim: TreeDelim::Paren,
|
||||||
|
..
|
||||||
|
} = self.tokens[self.pos].kind
|
||||||
|
{
|
||||||
|
self.parse_message_attribs(&mut attribs)?;
|
||||||
|
}
|
||||||
let (_, body) = self.expect_tree(TreeDelim::Brace)?;
|
let (_, body) = self.expect_tree(TreeDelim::Brace)?;
|
||||||
let mut parser = Parser {
|
let mut parser = Parser {
|
||||||
pos: 0,
|
pos: 0,
|
||||||
|
|
@ -298,6 +327,7 @@ impl<'a> Parser<'a> {
|
||||||
camel_name: to_camel(name),
|
camel_name: to_camel(name),
|
||||||
id,
|
id,
|
||||||
fields,
|
fields,
|
||||||
|
attribs,
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
})();
|
})();
|
||||||
|
|
@ -337,7 +367,6 @@ impl<'a> Parser<'a> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[allow(dead_code)]
|
|
||||||
fn expect_number(&mut self) -> Result<(u32, u32)> {
|
fn expect_number(&mut self) -> Result<(u32, u32)> {
|
||||||
self.not_eof()?;
|
self.not_eof()?;
|
||||||
let token = &self.tokens[self.pos];
|
let token = &self.tokens[self.pos];
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ request set_selection {
|
||||||
serial: u32,
|
serial: u32,
|
||||||
}
|
}
|
||||||
|
|
||||||
request release {
|
request release (since = 2) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -13,10 +13,10 @@ request receive {
|
||||||
request destroy {
|
request destroy {
|
||||||
}
|
}
|
||||||
|
|
||||||
request finish {
|
request finish (since = 3) {
|
||||||
}
|
}
|
||||||
|
|
||||||
request set_actions {
|
request set_actions (since = 3) {
|
||||||
dnd_actions: u32,
|
dnd_actions: u32,
|
||||||
preferred_action: u32,
|
preferred_action: u32,
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ request destroy {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
request set_actions {
|
request set_actions (since = 3) {
|
||||||
dnd_actions: u32,
|
dnd_actions: u32,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -27,7 +27,7 @@ request create_planar_buffer {
|
||||||
stride2: i32,
|
stride2: i32,
|
||||||
}
|
}
|
||||||
|
|
||||||
request create_prime_buffer {
|
request create_prime_buffer (since = 2) {
|
||||||
id: id(wl_buffer),
|
id: id(wl_buffer),
|
||||||
name: fd,
|
name: fd,
|
||||||
width : i32,
|
width : i32,
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
# requests
|
# requests
|
||||||
|
|
||||||
request release {
|
request release (since = 3) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
# requests
|
# requests
|
||||||
|
|
||||||
request release {
|
request release (since = 3) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ request set_cursor {
|
||||||
hotspot_y: i32,
|
hotspot_y: i32,
|
||||||
}
|
}
|
||||||
|
|
||||||
request release {
|
request release (since = 3) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ request get_touch {
|
||||||
id: id(wl_touch),
|
id: id(wl_touch),
|
||||||
}
|
}
|
||||||
|
|
||||||
request release {
|
request release (since = 5) {
|
||||||
}
|
}
|
||||||
|
|
||||||
# events
|
# events
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ request create_pool {
|
||||||
size: i32,
|
size: i32,
|
||||||
}
|
}
|
||||||
|
|
||||||
request release {
|
request release (since = 2) {
|
||||||
}
|
}
|
||||||
|
|
||||||
# events
|
# events
|
||||||
|
|
|
||||||
|
|
@ -31,22 +31,22 @@ request set_input_region {
|
||||||
request commit {
|
request commit {
|
||||||
}
|
}
|
||||||
|
|
||||||
request set_buffer_transform {
|
request set_buffer_transform (since = 2) {
|
||||||
transform: i32,
|
transform: i32,
|
||||||
}
|
}
|
||||||
|
|
||||||
request set_buffer_scale {
|
request set_buffer_scale (since = 3) {
|
||||||
scale: i32,
|
scale: i32,
|
||||||
}
|
}
|
||||||
|
|
||||||
request damage_buffer {
|
request damage_buffer (since = 4) {
|
||||||
x: i32,
|
x: i32,
|
||||||
y: i32,
|
y: i32,
|
||||||
width: i32,
|
width: i32,
|
||||||
height: i32,
|
height: i32,
|
||||||
}
|
}
|
||||||
|
|
||||||
request offset {
|
request offset (since = 5) {
|
||||||
x: i32,
|
x: i32,
|
||||||
y: i32,
|
y: i32,
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
# requests
|
# requests
|
||||||
|
|
||||||
request release {
|
request release (since = 3) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ request grab {
|
||||||
serial: u32,
|
serial: u32,
|
||||||
}
|
}
|
||||||
|
|
||||||
request reposition {
|
request reposition (since = 3) {
|
||||||
positioner: id(xdg_positioner),
|
positioner: id(xdg_positioner),
|
||||||
token: u32,
|
token: u32,
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -31,15 +31,15 @@ request set_offset {
|
||||||
y: i32,
|
y: i32,
|
||||||
}
|
}
|
||||||
|
|
||||||
request set_reactive {
|
request set_reactive (since = 3) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
request set_parent_size {
|
request set_parent_size (since = 3) {
|
||||||
parent_width: i32,
|
parent_width: i32,
|
||||||
parent_height: i32,
|
parent_height: i32,
|
||||||
}
|
}
|
||||||
|
|
||||||
request set_parent_configure {
|
request set_parent_configure (since = 3) {
|
||||||
serial: u32,
|
serial: u32,
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ request destroy {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
request set_primary_selection {
|
request set_primary_selection (since = 2) {
|
||||||
source: id(zwlr_data_control_source_v1),
|
source: id(zwlr_data_control_source_v1),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -8,5 +8,5 @@ request get_layer_surface {
|
||||||
namespace: str,
|
namespace: str,
|
||||||
}
|
}
|
||||||
|
|
||||||
request destroy {
|
request destroy (since = 3) {
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -34,7 +34,7 @@ request ack_configure {
|
||||||
|
|
||||||
request destroy { }
|
request destroy { }
|
||||||
|
|
||||||
request set_layer {
|
request set_layer (since = 2) {
|
||||||
layer: u32,
|
layer: u32,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ request copy {
|
||||||
request destroy {
|
request destroy {
|
||||||
}
|
}
|
||||||
|
|
||||||
request copy_with_damage {
|
request copy_with_damage (since = 2) {
|
||||||
buffer: id(wl_buffer),
|
buffer: id(wl_buffer),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,7 @@ request create {
|
||||||
flags: u32,
|
flags: u32,
|
||||||
}
|
}
|
||||||
|
|
||||||
request create_immed {
|
request create_immed (since = 2) {
|
||||||
buffer_id: id(wl_buffer),
|
buffer_id: id(wl_buffer),
|
||||||
width: i32,
|
width: i32,
|
||||||
height: i32,
|
height: i32,
|
||||||
|
|
|
||||||
|
|
@ -6,11 +6,11 @@ request create_params {
|
||||||
params_id: id(zwp_linux_buffer_params_v1),
|
params_id: id(zwp_linux_buffer_params_v1),
|
||||||
}
|
}
|
||||||
|
|
||||||
request get_default_feedback {
|
request get_default_feedback (since = 4) {
|
||||||
id: id(zwp_linux_dmabuf_feedback_v1),
|
id: id(zwp_linux_dmabuf_feedback_v1),
|
||||||
}
|
}
|
||||||
|
|
||||||
request get_surface_feedback {
|
request get_surface_feedback (since = 4) {
|
||||||
id: id(zwp_linux_dmabuf_feedback_v1),
|
id: id(zwp_linux_dmabuf_feedback_v1),
|
||||||
surface: id(wl_surface),
|
surface: id(wl_surface),
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue