1#![allow(clippy::too_many_arguments)]
7
8#[allow(unused_imports)]
9use std::borrow::Cow;
10#[allow(unused_imports)]
11use std::convert::TryInto;
12#[allow(unused_imports)]
13use crate::utils::RawFdContainer;
14#[allow(unused_imports)]
15use crate::x11_utils::{Request, RequestHeader, Serialize, TryParse, TryParseFd};
16use std::io::IoSlice;
17use crate::connection::RequestConnection;
18#[allow(unused_imports)]
19use crate::connection::Connection as X11Connection;
20#[allow(unused_imports)]
21use crate::cookie::{Cookie, CookieWithFds, VoidCookie};
22use crate::errors::ConnectionError;
23#[allow(unused_imports)]
24use crate::errors::ReplyOrIdError;
25use std::future::Future;
26use std::pin::Pin;
27#[allow(unused_imports)]
28use super::render;
29#[allow(unused_imports)]
30use super::shape;
31#[allow(unused_imports)]
32use super::xproto;
33
34pub use x11rb_protocol::protocol::xfixes::*;
35
36async fn major_opcode<Conn: RequestConnection + ?Sized>(conn: &Conn) -> Result<u8, ConnectionError> {
38 let info = conn.extension_information(X11_EXTENSION_NAME).await?;
39 let info = info.ok_or(ConnectionError::UnsupportedExtension)?;
40 Ok(info.major_opcode)
41}
42
43pub async fn query_version<Conn>(conn: &Conn, client_major_version: u32, client_minor_version: u32) -> Result<Cookie<'_, Conn, QueryVersionReply>, ConnectionError>
44where
45 Conn: RequestConnection + ?Sized,
46{
47 let request0 = QueryVersionRequest {
48 client_major_version,
49 client_minor_version,
50 };
51 let (bytes, fds) = request0.serialize(major_opcode(conn).await?);
52 let slices = [IoSlice::new(&bytes[0])];
53 assert_eq!(slices.len(), bytes.len());
54 conn.send_request_with_reply(&slices, fds).await
55}
56pub async fn change_save_set<Conn>(conn: &Conn, mode: SaveSetMode, target: SaveSetTarget, map: SaveSetMapping, window: xproto::Window) -> Result<VoidCookie<'_, Conn>, ConnectionError>
57where
58 Conn: RequestConnection + ?Sized,
59{
60 let request0 = ChangeSaveSetRequest {
61 mode,
62 target,
63 map,
64 window,
65 };
66 let (bytes, fds) = request0.serialize(major_opcode(conn).await?);
67 let slices = [IoSlice::new(&bytes[0])];
68 assert_eq!(slices.len(), bytes.len());
69 conn.send_request_without_reply(&slices, fds).await
70}
71pub async fn select_selection_input<Conn>(conn: &Conn, window: xproto::Window, selection: xproto::Atom, event_mask: SelectionEventMask) -> Result<VoidCookie<'_, Conn>, ConnectionError>
72where
73 Conn: RequestConnection + ?Sized,
74{
75 let request0 = SelectSelectionInputRequest {
76 window,
77 selection,
78 event_mask,
79 };
80 let (bytes, fds) = request0.serialize(major_opcode(conn).await?);
81 let slices = [IoSlice::new(&bytes[0])];
82 assert_eq!(slices.len(), bytes.len());
83 conn.send_request_without_reply(&slices, fds).await
84}
85pub async fn select_cursor_input<Conn>(conn: &Conn, window: xproto::Window, event_mask: CursorNotifyMask) -> Result<VoidCookie<'_, Conn>, ConnectionError>
86where
87 Conn: RequestConnection + ?Sized,
88{
89 let request0 = SelectCursorInputRequest {
90 window,
91 event_mask,
92 };
93 let (bytes, fds) = request0.serialize(major_opcode(conn).await?);
94 let slices = [IoSlice::new(&bytes[0])];
95 assert_eq!(slices.len(), bytes.len());
96 conn.send_request_without_reply(&slices, fds).await
97}
98pub async fn get_cursor_image<Conn>(conn: &Conn) -> Result<Cookie<'_, Conn, GetCursorImageReply>, ConnectionError>
99where
100 Conn: RequestConnection + ?Sized,
101{
102 let request0 = GetCursorImageRequest;
103 let (bytes, fds) = request0.serialize(major_opcode(conn).await?);
104 let slices = [IoSlice::new(&bytes[0])];
105 assert_eq!(slices.len(), bytes.len());
106 conn.send_request_with_reply(&slices, fds).await
107}
108pub async fn create_region<'c, 'input, Conn>(conn: &'c Conn, region: Region, rectangles: &'input [xproto::Rectangle]) -> Result<VoidCookie<'c, Conn>, ConnectionError>
109where
110 Conn: RequestConnection + ?Sized,
111{
112 let request0 = CreateRegionRequest {
113 region,
114 rectangles: Cow::Borrowed(rectangles),
115 };
116 let (bytes, fds) = request0.serialize(major_opcode(conn).await?);
117 let slices = [IoSlice::new(&bytes[0]), IoSlice::new(&bytes[1]), IoSlice::new(&bytes[2])];
118 assert_eq!(slices.len(), bytes.len());
119 conn.send_request_without_reply(&slices, fds).await
120}
121pub async fn create_region_from_bitmap<Conn>(conn: &Conn, region: Region, bitmap: xproto::Pixmap) -> Result<VoidCookie<'_, Conn>, ConnectionError>
122where
123 Conn: RequestConnection + ?Sized,
124{
125 let request0 = CreateRegionFromBitmapRequest {
126 region,
127 bitmap,
128 };
129 let (bytes, fds) = request0.serialize(major_opcode(conn).await?);
130 let slices = [IoSlice::new(&bytes[0])];
131 assert_eq!(slices.len(), bytes.len());
132 conn.send_request_without_reply(&slices, fds).await
133}
134pub async fn create_region_from_window<Conn>(conn: &Conn, region: Region, window: xproto::Window, kind: shape::SK) -> Result<VoidCookie<'_, Conn>, ConnectionError>
135where
136 Conn: RequestConnection + ?Sized,
137{
138 let request0 = CreateRegionFromWindowRequest {
139 region,
140 window,
141 kind,
142 };
143 let (bytes, fds) = request0.serialize(major_opcode(conn).await?);
144 let slices = [IoSlice::new(&bytes[0])];
145 assert_eq!(slices.len(), bytes.len());
146 conn.send_request_without_reply(&slices, fds).await
147}
148pub async fn create_region_from_gc<Conn>(conn: &Conn, region: Region, gc: xproto::Gcontext) -> Result<VoidCookie<'_, Conn>, ConnectionError>
149where
150 Conn: RequestConnection + ?Sized,
151{
152 let request0 = CreateRegionFromGCRequest {
153 region,
154 gc,
155 };
156 let (bytes, fds) = request0.serialize(major_opcode(conn).await?);
157 let slices = [IoSlice::new(&bytes[0])];
158 assert_eq!(slices.len(), bytes.len());
159 conn.send_request_without_reply(&slices, fds).await
160}
161pub async fn create_region_from_picture<Conn>(conn: &Conn, region: Region, picture: render::Picture) -> Result<VoidCookie<'_, Conn>, ConnectionError>
162where
163 Conn: RequestConnection + ?Sized,
164{
165 let request0 = CreateRegionFromPictureRequest {
166 region,
167 picture,
168 };
169 let (bytes, fds) = request0.serialize(major_opcode(conn).await?);
170 let slices = [IoSlice::new(&bytes[0])];
171 assert_eq!(slices.len(), bytes.len());
172 conn.send_request_without_reply(&slices, fds).await
173}
174pub async fn destroy_region<Conn>(conn: &Conn, region: Region) -> Result<VoidCookie<'_, Conn>, ConnectionError>
175where
176 Conn: RequestConnection + ?Sized,
177{
178 let request0 = DestroyRegionRequest {
179 region,
180 };
181 let (bytes, fds) = request0.serialize(major_opcode(conn).await?);
182 let slices = [IoSlice::new(&bytes[0])];
183 assert_eq!(slices.len(), bytes.len());
184 conn.send_request_without_reply(&slices, fds).await
185}
186pub async fn set_region<'c, 'input, Conn>(conn: &'c Conn, region: Region, rectangles: &'input [xproto::Rectangle]) -> Result<VoidCookie<'c, Conn>, ConnectionError>
187where
188 Conn: RequestConnection + ?Sized,
189{
190 let request0 = SetRegionRequest {
191 region,
192 rectangles: Cow::Borrowed(rectangles),
193 };
194 let (bytes, fds) = request0.serialize(major_opcode(conn).await?);
195 let slices = [IoSlice::new(&bytes[0]), IoSlice::new(&bytes[1]), IoSlice::new(&bytes[2])];
196 assert_eq!(slices.len(), bytes.len());
197 conn.send_request_without_reply(&slices, fds).await
198}
199pub async fn copy_region<Conn>(conn: &Conn, source: Region, destination: Region) -> Result<VoidCookie<'_, Conn>, ConnectionError>
200where
201 Conn: RequestConnection + ?Sized,
202{
203 let request0 = CopyRegionRequest {
204 source,
205 destination,
206 };
207 let (bytes, fds) = request0.serialize(major_opcode(conn).await?);
208 let slices = [IoSlice::new(&bytes[0])];
209 assert_eq!(slices.len(), bytes.len());
210 conn.send_request_without_reply(&slices, fds).await
211}
212pub async fn union_region<Conn>(conn: &Conn, source1: Region, source2: Region, destination: Region) -> Result<VoidCookie<'_, Conn>, ConnectionError>
213where
214 Conn: RequestConnection + ?Sized,
215{
216 let request0 = UnionRegionRequest {
217 source1,
218 source2,
219 destination,
220 };
221 let (bytes, fds) = request0.serialize(major_opcode(conn).await?);
222 let slices = [IoSlice::new(&bytes[0])];
223 assert_eq!(slices.len(), bytes.len());
224 conn.send_request_without_reply(&slices, fds).await
225}
226pub async fn intersect_region<Conn>(conn: &Conn, source1: Region, source2: Region, destination: Region) -> Result<VoidCookie<'_, Conn>, ConnectionError>
227where
228 Conn: RequestConnection + ?Sized,
229{
230 let request0 = IntersectRegionRequest {
231 source1,
232 source2,
233 destination,
234 };
235 let (bytes, fds) = request0.serialize(major_opcode(conn).await?);
236 let slices = [IoSlice::new(&bytes[0])];
237 assert_eq!(slices.len(), bytes.len());
238 conn.send_request_without_reply(&slices, fds).await
239}
240pub async fn subtract_region<Conn>(conn: &Conn, source1: Region, source2: Region, destination: Region) -> Result<VoidCookie<'_, Conn>, ConnectionError>
241where
242 Conn: RequestConnection + ?Sized,
243{
244 let request0 = SubtractRegionRequest {
245 source1,
246 source2,
247 destination,
248 };
249 let (bytes, fds) = request0.serialize(major_opcode(conn).await?);
250 let slices = [IoSlice::new(&bytes[0])];
251 assert_eq!(slices.len(), bytes.len());
252 conn.send_request_without_reply(&slices, fds).await
253}
254pub async fn invert_region<Conn>(conn: &Conn, source: Region, bounds: xproto::Rectangle, destination: Region) -> Result<VoidCookie<'_, Conn>, ConnectionError>
255where
256 Conn: RequestConnection + ?Sized,
257{
258 let request0 = InvertRegionRequest {
259 source,
260 bounds,
261 destination,
262 };
263 let (bytes, fds) = request0.serialize(major_opcode(conn).await?);
264 let slices = [IoSlice::new(&bytes[0])];
265 assert_eq!(slices.len(), bytes.len());
266 conn.send_request_without_reply(&slices, fds).await
267}
268pub async fn translate_region<Conn>(conn: &Conn, region: Region, dx: i16, dy: i16) -> Result<VoidCookie<'_, Conn>, ConnectionError>
269where
270 Conn: RequestConnection + ?Sized,
271{
272 let request0 = TranslateRegionRequest {
273 region,
274 dx,
275 dy,
276 };
277 let (bytes, fds) = request0.serialize(major_opcode(conn).await?);
278 let slices = [IoSlice::new(&bytes[0])];
279 assert_eq!(slices.len(), bytes.len());
280 conn.send_request_without_reply(&slices, fds).await
281}
282pub async fn region_extents<Conn>(conn: &Conn, source: Region, destination: Region) -> Result<VoidCookie<'_, Conn>, ConnectionError>
283where
284 Conn: RequestConnection + ?Sized,
285{
286 let request0 = RegionExtentsRequest {
287 source,
288 destination,
289 };
290 let (bytes, fds) = request0.serialize(major_opcode(conn).await?);
291 let slices = [IoSlice::new(&bytes[0])];
292 assert_eq!(slices.len(), bytes.len());
293 conn.send_request_without_reply(&slices, fds).await
294}
295pub async fn fetch_region<Conn>(conn: &Conn, region: Region) -> Result<Cookie<'_, Conn, FetchRegionReply>, ConnectionError>
296where
297 Conn: RequestConnection + ?Sized,
298{
299 let request0 = FetchRegionRequest {
300 region,
301 };
302 let (bytes, fds) = request0.serialize(major_opcode(conn).await?);
303 let slices = [IoSlice::new(&bytes[0])];
304 assert_eq!(slices.len(), bytes.len());
305 conn.send_request_with_reply(&slices, fds).await
306}
307pub async fn set_gc_clip_region<Conn, A>(conn: &Conn, gc: xproto::Gcontext, region: A, x_origin: i16, y_origin: i16) -> Result<VoidCookie<'_, Conn>, ConnectionError>
308where
309 Conn: RequestConnection + ?Sized,
310 A: Into<Region> + Send,
311{
312 let region: Region = region.into();
313 let request0 = SetGCClipRegionRequest {
314 gc,
315 region,
316 x_origin,
317 y_origin,
318 };
319 let (bytes, fds) = request0.serialize(major_opcode(conn).await?);
320 let slices = [IoSlice::new(&bytes[0])];
321 assert_eq!(slices.len(), bytes.len());
322 conn.send_request_without_reply(&slices, fds).await
323}
324pub async fn set_window_shape_region<Conn, A>(conn: &Conn, dest: xproto::Window, dest_kind: shape::SK, x_offset: i16, y_offset: i16, region: A) -> Result<VoidCookie<'_, Conn>, ConnectionError>
325where
326 Conn: RequestConnection + ?Sized,
327 A: Into<Region> + Send,
328{
329 let region: Region = region.into();
330 let request0 = SetWindowShapeRegionRequest {
331 dest,
332 dest_kind,
333 x_offset,
334 y_offset,
335 region,
336 };
337 let (bytes, fds) = request0.serialize(major_opcode(conn).await?);
338 let slices = [IoSlice::new(&bytes[0])];
339 assert_eq!(slices.len(), bytes.len());
340 conn.send_request_without_reply(&slices, fds).await
341}
342pub async fn set_picture_clip_region<Conn, A>(conn: &Conn, picture: render::Picture, region: A, x_origin: i16, y_origin: i16) -> Result<VoidCookie<'_, Conn>, ConnectionError>
343where
344 Conn: RequestConnection + ?Sized,
345 A: Into<Region> + Send,
346{
347 let region: Region = region.into();
348 let request0 = SetPictureClipRegionRequest {
349 picture,
350 region,
351 x_origin,
352 y_origin,
353 };
354 let (bytes, fds) = request0.serialize(major_opcode(conn).await?);
355 let slices = [IoSlice::new(&bytes[0])];
356 assert_eq!(slices.len(), bytes.len());
357 conn.send_request_without_reply(&slices, fds).await
358}
359pub async fn set_cursor_name<'c, 'input, Conn>(conn: &'c Conn, cursor: xproto::Cursor, name: &'input [u8]) -> Result<VoidCookie<'c, Conn>, ConnectionError>
360where
361 Conn: RequestConnection + ?Sized,
362{
363 let request0 = SetCursorNameRequest {
364 cursor,
365 name: Cow::Borrowed(name),
366 };
367 let (bytes, fds) = request0.serialize(major_opcode(conn).await?);
368 let slices = [IoSlice::new(&bytes[0]), IoSlice::new(&bytes[1]), IoSlice::new(&bytes[2])];
369 assert_eq!(slices.len(), bytes.len());
370 conn.send_request_without_reply(&slices, fds).await
371}
372pub async fn get_cursor_name<Conn>(conn: &Conn, cursor: xproto::Cursor) -> Result<Cookie<'_, Conn, GetCursorNameReply>, ConnectionError>
373where
374 Conn: RequestConnection + ?Sized,
375{
376 let request0 = GetCursorNameRequest {
377 cursor,
378 };
379 let (bytes, fds) = request0.serialize(major_opcode(conn).await?);
380 let slices = [IoSlice::new(&bytes[0])];
381 assert_eq!(slices.len(), bytes.len());
382 conn.send_request_with_reply(&slices, fds).await
383}
384pub async fn get_cursor_image_and_name<Conn>(conn: &Conn) -> Result<Cookie<'_, Conn, GetCursorImageAndNameReply>, ConnectionError>
385where
386 Conn: RequestConnection + ?Sized,
387{
388 let request0 = GetCursorImageAndNameRequest;
389 let (bytes, fds) = request0.serialize(major_opcode(conn).await?);
390 let slices = [IoSlice::new(&bytes[0])];
391 assert_eq!(slices.len(), bytes.len());
392 conn.send_request_with_reply(&slices, fds).await
393}
394pub async fn change_cursor<Conn>(conn: &Conn, source: xproto::Cursor, destination: xproto::Cursor) -> Result<VoidCookie<'_, Conn>, ConnectionError>
395where
396 Conn: RequestConnection + ?Sized,
397{
398 let request0 = ChangeCursorRequest {
399 source,
400 destination,
401 };
402 let (bytes, fds) = request0.serialize(major_opcode(conn).await?);
403 let slices = [IoSlice::new(&bytes[0])];
404 assert_eq!(slices.len(), bytes.len());
405 conn.send_request_without_reply(&slices, fds).await
406}
407pub async fn change_cursor_by_name<'c, 'input, Conn>(conn: &'c Conn, src: xproto::Cursor, name: &'input [u8]) -> Result<VoidCookie<'c, Conn>, ConnectionError>
408where
409 Conn: RequestConnection + ?Sized,
410{
411 let request0 = ChangeCursorByNameRequest {
412 src,
413 name: Cow::Borrowed(name),
414 };
415 let (bytes, fds) = request0.serialize(major_opcode(conn).await?);
416 let slices = [IoSlice::new(&bytes[0]), IoSlice::new(&bytes[1]), IoSlice::new(&bytes[2])];
417 assert_eq!(slices.len(), bytes.len());
418 conn.send_request_without_reply(&slices, fds).await
419}
420pub async fn expand_region<Conn>(conn: &Conn, source: Region, destination: Region, left: u16, right: u16, top: u16, bottom: u16) -> Result<VoidCookie<'_, Conn>, ConnectionError>
421where
422 Conn: RequestConnection + ?Sized,
423{
424 let request0 = ExpandRegionRequest {
425 source,
426 destination,
427 left,
428 right,
429 top,
430 bottom,
431 };
432 let (bytes, fds) = request0.serialize(major_opcode(conn).await?);
433 let slices = [IoSlice::new(&bytes[0])];
434 assert_eq!(slices.len(), bytes.len());
435 conn.send_request_without_reply(&slices, fds).await
436}
437pub async fn hide_cursor<Conn>(conn: &Conn, window: xproto::Window) -> Result<VoidCookie<'_, Conn>, ConnectionError>
438where
439 Conn: RequestConnection + ?Sized,
440{
441 let request0 = HideCursorRequest {
442 window,
443 };
444 let (bytes, fds) = request0.serialize(major_opcode(conn).await?);
445 let slices = [IoSlice::new(&bytes[0])];
446 assert_eq!(slices.len(), bytes.len());
447 conn.send_request_without_reply(&slices, fds).await
448}
449pub async fn show_cursor<Conn>(conn: &Conn, window: xproto::Window) -> Result<VoidCookie<'_, Conn>, ConnectionError>
450where
451 Conn: RequestConnection + ?Sized,
452{
453 let request0 = ShowCursorRequest {
454 window,
455 };
456 let (bytes, fds) = request0.serialize(major_opcode(conn).await?);
457 let slices = [IoSlice::new(&bytes[0])];
458 assert_eq!(slices.len(), bytes.len());
459 conn.send_request_without_reply(&slices, fds).await
460}
461pub async fn create_pointer_barrier<'c, 'input, Conn>(conn: &'c Conn, barrier: Barrier, window: xproto::Window, x1: u16, y1: u16, x2: u16, y2: u16, directions: BarrierDirections, devices: &'input [u16]) -> Result<VoidCookie<'c, Conn>, ConnectionError>
462where
463 Conn: RequestConnection + ?Sized,
464{
465 let request0 = CreatePointerBarrierRequest {
466 barrier,
467 window,
468 x1,
469 y1,
470 x2,
471 y2,
472 directions,
473 devices: Cow::Borrowed(devices),
474 };
475 let (bytes, fds) = request0.serialize(major_opcode(conn).await?);
476 let slices = [IoSlice::new(&bytes[0]), IoSlice::new(&bytes[1]), IoSlice::new(&bytes[2])];
477 assert_eq!(slices.len(), bytes.len());
478 conn.send_request_without_reply(&slices, fds).await
479}
480pub async fn delete_pointer_barrier<Conn>(conn: &Conn, barrier: Barrier) -> Result<VoidCookie<'_, Conn>, ConnectionError>
481where
482 Conn: RequestConnection + ?Sized,
483{
484 let request0 = DeletePointerBarrierRequest {
485 barrier,
486 };
487 let (bytes, fds) = request0.serialize(major_opcode(conn).await?);
488 let slices = [IoSlice::new(&bytes[0])];
489 assert_eq!(slices.len(), bytes.len());
490 conn.send_request_without_reply(&slices, fds).await
491}
492pub async fn set_client_disconnect_mode<Conn>(conn: &Conn, disconnect_mode: ClientDisconnectFlags) -> Result<VoidCookie<'_, Conn>, ConnectionError>
498where
499 Conn: RequestConnection + ?Sized,
500{
501 let request0 = SetClientDisconnectModeRequest {
502 disconnect_mode,
503 };
504 let (bytes, fds) = request0.serialize(major_opcode(conn).await?);
505 let slices = [IoSlice::new(&bytes[0])];
506 assert_eq!(slices.len(), bytes.len());
507 conn.send_request_without_reply(&slices, fds).await
508}
509pub async fn get_client_disconnect_mode<Conn>(conn: &Conn) -> Result<Cookie<'_, Conn, GetClientDisconnectModeReply>, ConnectionError>
510where
511 Conn: RequestConnection + ?Sized,
512{
513 let request0 = GetClientDisconnectModeRequest;
514 let (bytes, fds) = request0.serialize(major_opcode(conn).await?);
515 let slices = [IoSlice::new(&bytes[0])];
516 assert_eq!(slices.len(), bytes.len());
517 conn.send_request_with_reply(&slices, fds).await
518}
519pub trait ConnectionExt: RequestConnection {
521 fn xfixes_query_version(&self, client_major_version: u32, client_minor_version: u32) -> Pin<Box<dyn Future<Output = Result<Cookie<'_, Self, QueryVersionReply>, ConnectionError>> + Send + '_>>
522 {
523 Box::pin(query_version(self, client_major_version, client_minor_version))
524 }
525 fn xfixes_change_save_set(&self, mode: SaveSetMode, target: SaveSetTarget, map: SaveSetMapping, window: xproto::Window) -> Pin<Box<dyn Future<Output = Result<VoidCookie<'_, Self>, ConnectionError>> + Send + '_>>
526 {
527 Box::pin(change_save_set(self, mode, target, map, window))
528 }
529 fn xfixes_select_selection_input(&self, window: xproto::Window, selection: xproto::Atom, event_mask: SelectionEventMask) -> Pin<Box<dyn Future<Output = Result<VoidCookie<'_, Self>, ConnectionError>> + Send + '_>>
530 {
531 Box::pin(select_selection_input(self, window, selection, event_mask))
532 }
533 fn xfixes_select_cursor_input(&self, window: xproto::Window, event_mask: CursorNotifyMask) -> Pin<Box<dyn Future<Output = Result<VoidCookie<'_, Self>, ConnectionError>> + Send + '_>>
534 {
535 Box::pin(select_cursor_input(self, window, event_mask))
536 }
537 fn xfixes_get_cursor_image(&self) -> Pin<Box<dyn Future<Output = Result<Cookie<'_, Self, GetCursorImageReply>, ConnectionError>> + Send + '_>>
538 {
539 Box::pin(get_cursor_image(self))
540 }
541 fn xfixes_create_region<'c, 'input, 'future>(&'c self, region: Region, rectangles: &'input [xproto::Rectangle]) -> Pin<Box<dyn Future<Output = Result<VoidCookie<'c, Self>, ConnectionError>> + Send + 'future>>
542 where
543 'c: 'future,
544 'input: 'future,
545 {
546 Box::pin(create_region(self, region, rectangles))
547 }
548 fn xfixes_create_region_from_bitmap(&self, region: Region, bitmap: xproto::Pixmap) -> Pin<Box<dyn Future<Output = Result<VoidCookie<'_, Self>, ConnectionError>> + Send + '_>>
549 {
550 Box::pin(create_region_from_bitmap(self, region, bitmap))
551 }
552 fn xfixes_create_region_from_window(&self, region: Region, window: xproto::Window, kind: shape::SK) -> Pin<Box<dyn Future<Output = Result<VoidCookie<'_, Self>, ConnectionError>> + Send + '_>>
553 {
554 Box::pin(create_region_from_window(self, region, window, kind))
555 }
556 fn xfixes_create_region_from_gc(&self, region: Region, gc: xproto::Gcontext) -> Pin<Box<dyn Future<Output = Result<VoidCookie<'_, Self>, ConnectionError>> + Send + '_>>
557 {
558 Box::pin(create_region_from_gc(self, region, gc))
559 }
560 fn xfixes_create_region_from_picture(&self, region: Region, picture: render::Picture) -> Pin<Box<dyn Future<Output = Result<VoidCookie<'_, Self>, ConnectionError>> + Send + '_>>
561 {
562 Box::pin(create_region_from_picture(self, region, picture))
563 }
564 fn xfixes_destroy_region(&self, region: Region) -> Pin<Box<dyn Future<Output = Result<VoidCookie<'_, Self>, ConnectionError>> + Send + '_>>
565 {
566 Box::pin(destroy_region(self, region))
567 }
568 fn xfixes_set_region<'c, 'input, 'future>(&'c self, region: Region, rectangles: &'input [xproto::Rectangle]) -> Pin<Box<dyn Future<Output = Result<VoidCookie<'c, Self>, ConnectionError>> + Send + 'future>>
569 where
570 'c: 'future,
571 'input: 'future,
572 {
573 Box::pin(set_region(self, region, rectangles))
574 }
575 fn xfixes_copy_region(&self, source: Region, destination: Region) -> Pin<Box<dyn Future<Output = Result<VoidCookie<'_, Self>, ConnectionError>> + Send + '_>>
576 {
577 Box::pin(copy_region(self, source, destination))
578 }
579 fn xfixes_union_region(&self, source1: Region, source2: Region, destination: Region) -> Pin<Box<dyn Future<Output = Result<VoidCookie<'_, Self>, ConnectionError>> + Send + '_>>
580 {
581 Box::pin(union_region(self, source1, source2, destination))
582 }
583 fn xfixes_intersect_region(&self, source1: Region, source2: Region, destination: Region) -> Pin<Box<dyn Future<Output = Result<VoidCookie<'_, Self>, ConnectionError>> + Send + '_>>
584 {
585 Box::pin(intersect_region(self, source1, source2, destination))
586 }
587 fn xfixes_subtract_region(&self, source1: Region, source2: Region, destination: Region) -> Pin<Box<dyn Future<Output = Result<VoidCookie<'_, Self>, ConnectionError>> + Send + '_>>
588 {
589 Box::pin(subtract_region(self, source1, source2, destination))
590 }
591 fn xfixes_invert_region(&self, source: Region, bounds: xproto::Rectangle, destination: Region) -> Pin<Box<dyn Future<Output = Result<VoidCookie<'_, Self>, ConnectionError>> + Send + '_>>
592 {
593 Box::pin(invert_region(self, source, bounds, destination))
594 }
595 fn xfixes_translate_region(&self, region: Region, dx: i16, dy: i16) -> Pin<Box<dyn Future<Output = Result<VoidCookie<'_, Self>, ConnectionError>> + Send + '_>>
596 {
597 Box::pin(translate_region(self, region, dx, dy))
598 }
599 fn xfixes_region_extents(&self, source: Region, destination: Region) -> Pin<Box<dyn Future<Output = Result<VoidCookie<'_, Self>, ConnectionError>> + Send + '_>>
600 {
601 Box::pin(region_extents(self, source, destination))
602 }
603 fn xfixes_fetch_region(&self, region: Region) -> Pin<Box<dyn Future<Output = Result<Cookie<'_, Self, FetchRegionReply>, ConnectionError>> + Send + '_>>
604 {
605 Box::pin(fetch_region(self, region))
606 }
607 fn xfixes_set_gc_clip_region<A>(&self, gc: xproto::Gcontext, region: A, x_origin: i16, y_origin: i16) -> Pin<Box<dyn Future<Output = Result<VoidCookie<'_, Self>, ConnectionError>> + Send + '_>>
608 where
609 A: Into<Region> + Send + 'static,
610 {
611 Box::pin(set_gc_clip_region(self, gc, region, x_origin, y_origin))
612 }
613 fn xfixes_set_window_shape_region<A>(&self, dest: xproto::Window, dest_kind: shape::SK, x_offset: i16, y_offset: i16, region: A) -> Pin<Box<dyn Future<Output = Result<VoidCookie<'_, Self>, ConnectionError>> + Send + '_>>
614 where
615 A: Into<Region> + Send + 'static,
616 {
617 Box::pin(set_window_shape_region(self, dest, dest_kind, x_offset, y_offset, region))
618 }
619 fn xfixes_set_picture_clip_region<A>(&self, picture: render::Picture, region: A, x_origin: i16, y_origin: i16) -> Pin<Box<dyn Future<Output = Result<VoidCookie<'_, Self>, ConnectionError>> + Send + '_>>
620 where
621 A: Into<Region> + Send + 'static,
622 {
623 Box::pin(set_picture_clip_region(self, picture, region, x_origin, y_origin))
624 }
625 fn xfixes_set_cursor_name<'c, 'input, 'future>(&'c self, cursor: xproto::Cursor, name: &'input [u8]) -> Pin<Box<dyn Future<Output = Result<VoidCookie<'c, Self>, ConnectionError>> + Send + 'future>>
626 where
627 'c: 'future,
628 'input: 'future,
629 {
630 Box::pin(set_cursor_name(self, cursor, name))
631 }
632 fn xfixes_get_cursor_name(&self, cursor: xproto::Cursor) -> Pin<Box<dyn Future<Output = Result<Cookie<'_, Self, GetCursorNameReply>, ConnectionError>> + Send + '_>>
633 {
634 Box::pin(get_cursor_name(self, cursor))
635 }
636 fn xfixes_get_cursor_image_and_name(&self) -> Pin<Box<dyn Future<Output = Result<Cookie<'_, Self, GetCursorImageAndNameReply>, ConnectionError>> + Send + '_>>
637 {
638 Box::pin(get_cursor_image_and_name(self))
639 }
640 fn xfixes_change_cursor(&self, source: xproto::Cursor, destination: xproto::Cursor) -> Pin<Box<dyn Future<Output = Result<VoidCookie<'_, Self>, ConnectionError>> + Send + '_>>
641 {
642 Box::pin(change_cursor(self, source, destination))
643 }
644 fn xfixes_change_cursor_by_name<'c, 'input, 'future>(&'c self, src: xproto::Cursor, name: &'input [u8]) -> Pin<Box<dyn Future<Output = Result<VoidCookie<'c, Self>, ConnectionError>> + Send + 'future>>
645 where
646 'c: 'future,
647 'input: 'future,
648 {
649 Box::pin(change_cursor_by_name(self, src, name))
650 }
651 fn xfixes_expand_region(&self, source: Region, destination: Region, left: u16, right: u16, top: u16, bottom: u16) -> Pin<Box<dyn Future<Output = Result<VoidCookie<'_, Self>, ConnectionError>> + Send + '_>>
652 {
653 Box::pin(expand_region(self, source, destination, left, right, top, bottom))
654 }
655 fn xfixes_hide_cursor(&self, window: xproto::Window) -> Pin<Box<dyn Future<Output = Result<VoidCookie<'_, Self>, ConnectionError>> + Send + '_>>
656 {
657 Box::pin(hide_cursor(self, window))
658 }
659 fn xfixes_show_cursor(&self, window: xproto::Window) -> Pin<Box<dyn Future<Output = Result<VoidCookie<'_, Self>, ConnectionError>> + Send + '_>>
660 {
661 Box::pin(show_cursor(self, window))
662 }
663 fn xfixes_create_pointer_barrier<'c, 'input, 'future>(&'c self, barrier: Barrier, window: xproto::Window, x1: u16, y1: u16, x2: u16, y2: u16, directions: BarrierDirections, devices: &'input [u16]) -> Pin<Box<dyn Future<Output = Result<VoidCookie<'c, Self>, ConnectionError>> + Send + 'future>>
664 where
665 'c: 'future,
666 'input: 'future,
667 {
668 Box::pin(create_pointer_barrier(self, barrier, window, x1, y1, x2, y2, directions, devices))
669 }
670 fn xfixes_delete_pointer_barrier(&self, barrier: Barrier) -> Pin<Box<dyn Future<Output = Result<VoidCookie<'_, Self>, ConnectionError>> + Send + '_>>
671 {
672 Box::pin(delete_pointer_barrier(self, barrier))
673 }
674 fn xfixes_set_client_disconnect_mode(&self, disconnect_mode: ClientDisconnectFlags) -> Pin<Box<dyn Future<Output = Result<VoidCookie<'_, Self>, ConnectionError>> + Send + '_>>
680 {
681 Box::pin(set_client_disconnect_mode(self, disconnect_mode))
682 }
683 fn xfixes_get_client_disconnect_mode(&self) -> Pin<Box<dyn Future<Output = Result<Cookie<'_, Self, GetClientDisconnectModeReply>, ConnectionError>> + Send + '_>>
684 {
685 Box::pin(get_client_disconnect_mode(self))
686 }
687}
688
689impl<C: RequestConnection + ?Sized> ConnectionExt for C {}