1// Code generated by xtgen; DO NOT EDIT.
2package xfixes
3
4import "bnema.dev/xturbo/render"
5import "bnema.dev/xturbo/shape"
6import "bnema.dev/xturbo/xproto"
7import "encoding/binary"
8import "bnema.dev/xturbo"
9
10func QueryVersion(b *xturbo.Buf, clientMajorVersion uint32, clientMinorVersion uint32) xturbo.Seq {
11 if b.Ext == nil {
12 b.Fail(xturbo.ErrExtMissing)
13 return 0
14 }
15 major := b.Ext.Major(xturbo.ExtXFixes)
16 if major == 0 {
17 b.Fail(xturbo.ErrExtMissing)
18 return 0
19 }
20 p, seq := b.Request(major, 0, 8)
21 if p == nil {
22 return 0
23 }
24 binary.LittleEndian.PutUint32(p[0:], uint32(clientMajorVersion))
25 binary.LittleEndian.PutUint32(p[4:], uint32(clientMinorVersion))
26 return seq
27}
28
29func ChangeSaveSet(b *xturbo.Buf, mode SaveSetMode, target SaveSetTarget, map_ SaveSetMapping, window xproto.Window) xturbo.Seq {
30 if b.Ext == nil {
31 b.Fail(xturbo.ErrExtMissing)
32 return 0
33 }
34 major := b.Ext.Major(xturbo.ExtXFixes)
35 if major == 0 {
36 b.Fail(xturbo.ErrExtMissing)
37 return 0
38 }
39 p, seq := b.Request(major, 1, 8)
40 if p == nil {
41 return 0
42 }
43 p[0:][0] = byte(mode)
44 p[1:][0] = byte(target)
45 p[2:][0] = byte(map_)
46 binary.LittleEndian.PutUint32(p[4:], uint32(window))
47 return seq
48}
49
50func SelectSelectionInput(b *xturbo.Buf, window xproto.Window, selection xproto.Atom, eventMask SelectionEventMask) xturbo.Seq {
51 if b.Ext == nil {
52 b.Fail(xturbo.ErrExtMissing)
53 return 0
54 }
55 major := b.Ext.Major(xturbo.ExtXFixes)
56 if major == 0 {
57 b.Fail(xturbo.ErrExtMissing)
58 return 0
59 }
60 p, seq := b.Request(major, 2, 12)
61 if p == nil {
62 return 0
63 }
64 binary.LittleEndian.PutUint32(p[0:], uint32(window))
65 binary.LittleEndian.PutUint32(p[4:], uint32(selection))
66 binary.LittleEndian.PutUint32(p[8:], uint32(eventMask))
67 return seq
68}
69
70func SelectCursorInput(b *xturbo.Buf, window xproto.Window, eventMask CursorNotifyMask) xturbo.Seq {
71 if b.Ext == nil {
72 b.Fail(xturbo.ErrExtMissing)
73 return 0
74 }
75 major := b.Ext.Major(xturbo.ExtXFixes)
76 if major == 0 {
77 b.Fail(xturbo.ErrExtMissing)
78 return 0
79 }
80 p, seq := b.Request(major, 3, 8)
81 if p == nil {
82 return 0
83 }
84 binary.LittleEndian.PutUint32(p[0:], uint32(window))
85 binary.LittleEndian.PutUint32(p[4:], uint32(eventMask))
86 return seq
87}
88
89func GetCursorImage(b *xturbo.Buf) xturbo.Seq {
90 if b.Ext == nil {
91 b.Fail(xturbo.ErrExtMissing)
92 return 0
93 }
94 major := b.Ext.Major(xturbo.ExtXFixes)
95 if major == 0 {
96 b.Fail(xturbo.ErrExtMissing)
97 return 0
98 }
99 p, seq := b.Request(major, 4, 0)
100 if p == nil {
101 return 0
102 }
103 return seq
104}
105
106func CreateRegion(b *xturbo.Buf, region Region, rectangles []xproto.Rectangle) xturbo.Seq {
107 size := 0
108 size += 4
109 size += len(rectangles) * 8
110 size = (size + 3) &^ 3
111 if b.Ext == nil {
112 b.Fail(xturbo.ErrExtMissing)
113 return 0
114 }
115 major := b.Ext.Major(xturbo.ExtXFixes)
116 if major == 0 {
117 b.Fail(xturbo.ErrExtMissing)
118 return 0
119 }
120 p, seq := b.Request(major, 5, size)
121 if p == nil {
122 return 0
123 }
124 off := 0
125 binary.LittleEndian.PutUint32(p[off:], uint32(region))
126 off += 4
127 for i := range rectangles {
128 rectangles[i].Put(p[off:])
129 off += 8
130 }
131 return seq
132}
133
134func CreateRegionFromBitmap(b *xturbo.Buf, region Region, bitmap xproto.Pixmap) xturbo.Seq {
135 if b.Ext == nil {
136 b.Fail(xturbo.ErrExtMissing)
137 return 0
138 }
139 major := b.Ext.Major(xturbo.ExtXFixes)
140 if major == 0 {
141 b.Fail(xturbo.ErrExtMissing)
142 return 0
143 }
144 p, seq := b.Request(major, 6, 8)
145 if p == nil {
146 return 0
147 }
148 binary.LittleEndian.PutUint32(p[0:], uint32(region))
149 binary.LittleEndian.PutUint32(p[4:], uint32(bitmap))
150 return seq
151}
152
153func CreateRegionFromWindow(b *xturbo.Buf, region Region, window xproto.Window, kind shape.Sk) xturbo.Seq {
154 if b.Ext == nil {
155 b.Fail(xturbo.ErrExtMissing)
156 return 0
157 }
158 major := b.Ext.Major(xturbo.ExtXFixes)
159 if major == 0 {
160 b.Fail(xturbo.ErrExtMissing)
161 return 0
162 }
163 p, seq := b.Request(major, 7, 12)
164 if p == nil {
165 return 0
166 }
167 binary.LittleEndian.PutUint32(p[0:], uint32(region))
168 binary.LittleEndian.PutUint32(p[4:], uint32(window))
169 p[8:][0] = byte(kind)
170 return seq
171}
172
173func CreateRegionFromGC(b *xturbo.Buf, region Region, gc xproto.Gcontext) xturbo.Seq {
174 if b.Ext == nil {
175 b.Fail(xturbo.ErrExtMissing)
176 return 0
177 }
178 major := b.Ext.Major(xturbo.ExtXFixes)
179 if major == 0 {
180 b.Fail(xturbo.ErrExtMissing)
181 return 0
182 }
183 p, seq := b.Request(major, 8, 8)
184 if p == nil {
185 return 0
186 }
187 binary.LittleEndian.PutUint32(p[0:], uint32(region))
188 binary.LittleEndian.PutUint32(p[4:], uint32(gc))
189 return seq
190}
191
192func CreateRegionFromPicture(b *xturbo.Buf, region Region, picture render.Picture) xturbo.Seq {
193 if b.Ext == nil {
194 b.Fail(xturbo.ErrExtMissing)
195 return 0
196 }
197 major := b.Ext.Major(xturbo.ExtXFixes)
198 if major == 0 {
199 b.Fail(xturbo.ErrExtMissing)
200 return 0
201 }
202 p, seq := b.Request(major, 9, 8)
203 if p == nil {
204 return 0
205 }
206 binary.LittleEndian.PutUint32(p[0:], uint32(region))
207 binary.LittleEndian.PutUint32(p[4:], uint32(picture))
208 return seq
209}
210
211func DestroyRegion(b *xturbo.Buf, region Region) xturbo.Seq {
212 if b.Ext == nil {
213 b.Fail(xturbo.ErrExtMissing)
214 return 0
215 }
216 major := b.Ext.Major(xturbo.ExtXFixes)
217 if major == 0 {
218 b.Fail(xturbo.ErrExtMissing)
219 return 0
220 }
221 p, seq := b.Request(major, 10, 4)
222 if p == nil {
223 return 0
224 }
225 binary.LittleEndian.PutUint32(p[0:], uint32(region))
226 return seq
227}
228
229func SetRegion(b *xturbo.Buf, region Region, rectangles []xproto.Rectangle) xturbo.Seq {
230 size := 0
231 size += 4
232 size += len(rectangles) * 8
233 size = (size + 3) &^ 3
234 if b.Ext == nil {
235 b.Fail(xturbo.ErrExtMissing)
236 return 0
237 }
238 major := b.Ext.Major(xturbo.ExtXFixes)
239 if major == 0 {
240 b.Fail(xturbo.ErrExtMissing)
241 return 0
242 }
243 p, seq := b.Request(major, 11, size)
244 if p == nil {
245 return 0
246 }
247 off := 0
248 binary.LittleEndian.PutUint32(p[off:], uint32(region))
249 off += 4
250 for i := range rectangles {
251 rectangles[i].Put(p[off:])
252 off += 8
253 }
254 return seq
255}
256
257func CopyRegion(b *xturbo.Buf, source Region, destination Region) xturbo.Seq {
258 if b.Ext == nil {
259 b.Fail(xturbo.ErrExtMissing)
260 return 0
261 }
262 major := b.Ext.Major(xturbo.ExtXFixes)
263 if major == 0 {
264 b.Fail(xturbo.ErrExtMissing)
265 return 0
266 }
267 p, seq := b.Request(major, 12, 8)
268 if p == nil {
269 return 0
270 }
271 binary.LittleEndian.PutUint32(p[0:], uint32(source))
272 binary.LittleEndian.PutUint32(p[4:], uint32(destination))
273 return seq
274}
275
276func UnionRegion(b *xturbo.Buf, source1 Region, source2 Region, destination Region) xturbo.Seq {
277 if b.Ext == nil {
278 b.Fail(xturbo.ErrExtMissing)
279 return 0
280 }
281 major := b.Ext.Major(xturbo.ExtXFixes)
282 if major == 0 {
283 b.Fail(xturbo.ErrExtMissing)
284 return 0
285 }
286 p, seq := b.Request(major, 13, 12)
287 if p == nil {
288 return 0
289 }
290 binary.LittleEndian.PutUint32(p[0:], uint32(source1))
291 binary.LittleEndian.PutUint32(p[4:], uint32(source2))
292 binary.LittleEndian.PutUint32(p[8:], uint32(destination))
293 return seq
294}
295
296func IntersectRegion(b *xturbo.Buf, source1 Region, source2 Region, destination Region) xturbo.Seq {
297 if b.Ext == nil {
298 b.Fail(xturbo.ErrExtMissing)
299 return 0
300 }
301 major := b.Ext.Major(xturbo.ExtXFixes)
302 if major == 0 {
303 b.Fail(xturbo.ErrExtMissing)
304 return 0
305 }
306 p, seq := b.Request(major, 14, 12)
307 if p == nil {
308 return 0
309 }
310 binary.LittleEndian.PutUint32(p[0:], uint32(source1))
311 binary.LittleEndian.PutUint32(p[4:], uint32(source2))
312 binary.LittleEndian.PutUint32(p[8:], uint32(destination))
313 return seq
314}
315
316func SubtractRegion(b *xturbo.Buf, source1 Region, source2 Region, destination Region) xturbo.Seq {
317 if b.Ext == nil {
318 b.Fail(xturbo.ErrExtMissing)
319 return 0
320 }
321 major := b.Ext.Major(xturbo.ExtXFixes)
322 if major == 0 {
323 b.Fail(xturbo.ErrExtMissing)
324 return 0
325 }
326 p, seq := b.Request(major, 15, 12)
327 if p == nil {
328 return 0
329 }
330 binary.LittleEndian.PutUint32(p[0:], uint32(source1))
331 binary.LittleEndian.PutUint32(p[4:], uint32(source2))
332 binary.LittleEndian.PutUint32(p[8:], uint32(destination))
333 return seq
334}
335
336func InvertRegion(b *xturbo.Buf, source Region, bounds xproto.Rectangle, destination Region) xturbo.Seq {
337 if b.Ext == nil {
338 b.Fail(xturbo.ErrExtMissing)
339 return 0
340 }
341 major := b.Ext.Major(xturbo.ExtXFixes)
342 if major == 0 {
343 b.Fail(xturbo.ErrExtMissing)
344 return 0
345 }
346 p, seq := b.Request(major, 16, 16)
347 if p == nil {
348 return 0
349 }
350 binary.LittleEndian.PutUint32(p[0:], uint32(source))
351 bounds.Put(p[4:])
352 binary.LittleEndian.PutUint32(p[12:], uint32(destination))
353 return seq
354}
355
356func TranslateRegion(b *xturbo.Buf, region Region, dx int16, dy int16) xturbo.Seq {
357 if b.Ext == nil {
358 b.Fail(xturbo.ErrExtMissing)
359 return 0
360 }
361 major := b.Ext.Major(xturbo.ExtXFixes)
362 if major == 0 {
363 b.Fail(xturbo.ErrExtMissing)
364 return 0
365 }
366 p, seq := b.Request(major, 17, 8)
367 if p == nil {
368 return 0
369 }
370 binary.LittleEndian.PutUint32(p[0:], uint32(region))
371 binary.LittleEndian.PutUint16(p[4:], uint16(dx))
372 binary.LittleEndian.PutUint16(p[6:], uint16(dy))
373 return seq
374}
375
376func RegionExtents(b *xturbo.Buf, source Region, destination Region) xturbo.Seq {
377 if b.Ext == nil {
378 b.Fail(xturbo.ErrExtMissing)
379 return 0
380 }
381 major := b.Ext.Major(xturbo.ExtXFixes)
382 if major == 0 {
383 b.Fail(xturbo.ErrExtMissing)
384 return 0
385 }
386 p, seq := b.Request(major, 18, 8)
387 if p == nil {
388 return 0
389 }
390 binary.LittleEndian.PutUint32(p[0:], uint32(source))
391 binary.LittleEndian.PutUint32(p[4:], uint32(destination))
392 return seq
393}
394
395func FetchRegion(b *xturbo.Buf, region Region) xturbo.Seq {
396 if b.Ext == nil {
397 b.Fail(xturbo.ErrExtMissing)
398 return 0
399 }
400 major := b.Ext.Major(xturbo.ExtXFixes)
401 if major == 0 {
402 b.Fail(xturbo.ErrExtMissing)
403 return 0
404 }
405 p, seq := b.Request(major, 19, 4)
406 if p == nil {
407 return 0
408 }
409 binary.LittleEndian.PutUint32(p[0:], uint32(region))
410 return seq
411}
412
413func SetGCClipRegion(b *xturbo.Buf, gc xproto.Gcontext, region Region, xOrigin int16, yOrigin int16) xturbo.Seq {
414 if b.Ext == nil {
415 b.Fail(xturbo.ErrExtMissing)
416 return 0
417 }
418 major := b.Ext.Major(xturbo.ExtXFixes)
419 if major == 0 {
420 b.Fail(xturbo.ErrExtMissing)
421 return 0
422 }
423 p, seq := b.Request(major, 20, 12)
424 if p == nil {
425 return 0
426 }
427 binary.LittleEndian.PutUint32(p[0:], uint32(gc))
428 binary.LittleEndian.PutUint32(p[4:], uint32(region))
429 binary.LittleEndian.PutUint16(p[8:], uint16(xOrigin))
430 binary.LittleEndian.PutUint16(p[10:], uint16(yOrigin))
431 return seq
432}
433
434func SetWindowShapeRegion(b *xturbo.Buf, dest xproto.Window, destKind shape.Sk, xOffset int16, yOffset int16, region Region) xturbo.Seq {
435 if b.Ext == nil {
436 b.Fail(xturbo.ErrExtMissing)
437 return 0
438 }
439 major := b.Ext.Major(xturbo.ExtXFixes)
440 if major == 0 {
441 b.Fail(xturbo.ErrExtMissing)
442 return 0
443 }
444 p, seq := b.Request(major, 21, 16)
445 if p == nil {
446 return 0
447 }
448 binary.LittleEndian.PutUint32(p[0:], uint32(dest))
449 p[4:][0] = byte(destKind)
450 binary.LittleEndian.PutUint16(p[8:], uint16(xOffset))
451 binary.LittleEndian.PutUint16(p[10:], uint16(yOffset))
452 binary.LittleEndian.PutUint32(p[12:], uint32(region))
453 return seq
454}
455
456func SetPictureClipRegion(b *xturbo.Buf, picture render.Picture, region Region, xOrigin int16, yOrigin int16) xturbo.Seq {
457 if b.Ext == nil {
458 b.Fail(xturbo.ErrExtMissing)
459 return 0
460 }
461 major := b.Ext.Major(xturbo.ExtXFixes)
462 if major == 0 {
463 b.Fail(xturbo.ErrExtMissing)
464 return 0
465 }
466 p, seq := b.Request(major, 22, 12)
467 if p == nil {
468 return 0
469 }
470 binary.LittleEndian.PutUint32(p[0:], uint32(picture))
471 binary.LittleEndian.PutUint32(p[4:], uint32(region))
472 binary.LittleEndian.PutUint16(p[8:], uint16(xOrigin))
473 binary.LittleEndian.PutUint16(p[10:], uint16(yOrigin))
474 return seq
475}
476
477func SetCursorName(b *xturbo.Buf, cursor xproto.Cursor, name string) xturbo.Seq {
478 if uint64(len(name)) > 65535 {
479 b.Fail(xturbo.ErrBadLength)
480 return 0
481 }
482 size := 0
483 size += 4
484 size += 2
485 size += 2
486 size += len(name) * 1
487 size = (size + 3) &^ 3
488 if b.Ext == nil {
489 b.Fail(xturbo.ErrExtMissing)
490 return 0
491 }
492 major := b.Ext.Major(xturbo.ExtXFixes)
493 if major == 0 {
494 b.Fail(xturbo.ErrExtMissing)
495 return 0
496 }
497 p, seq := b.Request(major, 23, size)
498 if p == nil {
499 return 0
500 }
501 off := 0
502 binary.LittleEndian.PutUint32(p[off:], uint32(cursor))
503 off += 4
504 binary.LittleEndian.PutUint16(p[off:], uint16(len(name)))
505 off += 2
506 off += 2
507 copy(p[off:], name)
508 off += len(name)
509 return seq
510}
511
512func GetCursorName(b *xturbo.Buf, cursor xproto.Cursor) xturbo.Seq {
513 if b.Ext == nil {
514 b.Fail(xturbo.ErrExtMissing)
515 return 0
516 }
517 major := b.Ext.Major(xturbo.ExtXFixes)
518 if major == 0 {
519 b.Fail(xturbo.ErrExtMissing)
520 return 0
521 }
522 p, seq := b.Request(major, 24, 4)
523 if p == nil {
524 return 0
525 }
526 binary.LittleEndian.PutUint32(p[0:], uint32(cursor))
527 return seq
528}
529
530func GetCursorImageAndName(b *xturbo.Buf) xturbo.Seq {
531 if b.Ext == nil {
532 b.Fail(xturbo.ErrExtMissing)
533 return 0
534 }
535 major := b.Ext.Major(xturbo.ExtXFixes)
536 if major == 0 {
537 b.Fail(xturbo.ErrExtMissing)
538 return 0
539 }
540 p, seq := b.Request(major, 25, 0)
541 if p == nil {
542 return 0
543 }
544 return seq
545}
546
547func ChangeCursor(b *xturbo.Buf, source xproto.Cursor, destination xproto.Cursor) xturbo.Seq {
548 if b.Ext == nil {
549 b.Fail(xturbo.ErrExtMissing)
550 return 0
551 }
552 major := b.Ext.Major(xturbo.ExtXFixes)
553 if major == 0 {
554 b.Fail(xturbo.ErrExtMissing)
555 return 0
556 }
557 p, seq := b.Request(major, 26, 8)
558 if p == nil {
559 return 0
560 }
561 binary.LittleEndian.PutUint32(p[0:], uint32(source))
562 binary.LittleEndian.PutUint32(p[4:], uint32(destination))
563 return seq
564}
565
566func ChangeCursorByName(b *xturbo.Buf, src xproto.Cursor, name string) xturbo.Seq {
567 if uint64(len(name)) > 65535 {
568 b.Fail(xturbo.ErrBadLength)
569 return 0
570 }
571 size := 0
572 size += 4
573 size += 2
574 size += 2
575 size += len(name) * 1
576 size = (size + 3) &^ 3
577 if b.Ext == nil {
578 b.Fail(xturbo.ErrExtMissing)
579 return 0
580 }
581 major := b.Ext.Major(xturbo.ExtXFixes)
582 if major == 0 {
583 b.Fail(xturbo.ErrExtMissing)
584 return 0
585 }
586 p, seq := b.Request(major, 27, size)
587 if p == nil {
588 return 0
589 }
590 off := 0
591 binary.LittleEndian.PutUint32(p[off:], uint32(src))
592 off += 4
593 binary.LittleEndian.PutUint16(p[off:], uint16(len(name)))
594 off += 2
595 off += 2
596 copy(p[off:], name)
597 off += len(name)
598 return seq
599}
600
601func ExpandRegion(b *xturbo.Buf, source Region, destination Region, left uint16, right uint16, top uint16, bottom uint16) xturbo.Seq {
602 if b.Ext == nil {
603 b.Fail(xturbo.ErrExtMissing)
604 return 0
605 }
606 major := b.Ext.Major(xturbo.ExtXFixes)
607 if major == 0 {
608 b.Fail(xturbo.ErrExtMissing)
609 return 0
610 }
611 p, seq := b.Request(major, 28, 16)
612 if p == nil {
613 return 0
614 }
615 binary.LittleEndian.PutUint32(p[0:], uint32(source))
616 binary.LittleEndian.PutUint32(p[4:], uint32(destination))
617 binary.LittleEndian.PutUint16(p[8:], uint16(left))
618 binary.LittleEndian.PutUint16(p[10:], uint16(right))
619 binary.LittleEndian.PutUint16(p[12:], uint16(top))
620 binary.LittleEndian.PutUint16(p[14:], uint16(bottom))
621 return seq
622}
623
624func HideCursor(b *xturbo.Buf, window xproto.Window) xturbo.Seq {
625 if b.Ext == nil {
626 b.Fail(xturbo.ErrExtMissing)
627 return 0
628 }
629 major := b.Ext.Major(xturbo.ExtXFixes)
630 if major == 0 {
631 b.Fail(xturbo.ErrExtMissing)
632 return 0
633 }
634 p, seq := b.Request(major, 29, 4)
635 if p == nil {
636 return 0
637 }
638 binary.LittleEndian.PutUint32(p[0:], uint32(window))
639 return seq
640}
641
642func ShowCursor(b *xturbo.Buf, window xproto.Window) xturbo.Seq {
643 if b.Ext == nil {
644 b.Fail(xturbo.ErrExtMissing)
645 return 0
646 }
647 major := b.Ext.Major(xturbo.ExtXFixes)
648 if major == 0 {
649 b.Fail(xturbo.ErrExtMissing)
650 return 0
651 }
652 p, seq := b.Request(major, 30, 4)
653 if p == nil {
654 return 0
655 }
656 binary.LittleEndian.PutUint32(p[0:], uint32(window))
657 return seq
658}
659
660func CreatePointerBarrier(b *xturbo.Buf, barrier Barrier, window xproto.Window, x1 uint16, y1 uint16, x2 uint16, y2 uint16, directions BarrierDirections, devices []uint16) xturbo.Seq {
661 if uint64(len(devices)) > 65535 {
662 b.Fail(xturbo.ErrBadLength)
663 return 0
664 }
665 size := 0
666 size += 4
667 size += 4
668 size += 2
669 size += 2
670 size += 2
671 size += 2
672 size += 4
673 size += 2
674 size += 2
675 size += len(devices) * 2
676 size = (size + 3) &^ 3
677 if b.Ext == nil {
678 b.Fail(xturbo.ErrExtMissing)
679 return 0
680 }
681 major := b.Ext.Major(xturbo.ExtXFixes)
682 if major == 0 {
683 b.Fail(xturbo.ErrExtMissing)
684 return 0
685 }
686 p, seq := b.Request(major, 31, size)
687 if p == nil {
688 return 0
689 }
690 off := 0
691 binary.LittleEndian.PutUint32(p[off:], uint32(barrier))
692 off += 4
693 binary.LittleEndian.PutUint32(p[off:], uint32(window))
694 off += 4
695 binary.LittleEndian.PutUint16(p[off:], uint16(x1))
696 off += 2
697 binary.LittleEndian.PutUint16(p[off:], uint16(y1))
698 off += 2
699 binary.LittleEndian.PutUint16(p[off:], uint16(x2))
700 off += 2
701 binary.LittleEndian.PutUint16(p[off:], uint16(y2))
702 off += 2
703 binary.LittleEndian.PutUint32(p[off:], uint32(directions))
704 off += 4
705 off += 2
706 binary.LittleEndian.PutUint16(p[off:], uint16(len(devices)))
707 off += 2
708 for i := range devices {
709 binary.LittleEndian.PutUint16(p[off:], uint16(devices[i]))
710 off += 2
711 }
712 return seq
713}
714
715func DeletePointerBarrier(b *xturbo.Buf, barrier Barrier) xturbo.Seq {
716 if b.Ext == nil {
717 b.Fail(xturbo.ErrExtMissing)
718 return 0
719 }
720 major := b.Ext.Major(xturbo.ExtXFixes)
721 if major == 0 {
722 b.Fail(xturbo.ErrExtMissing)
723 return 0
724 }
725 p, seq := b.Request(major, 32, 4)
726 if p == nil {
727 return 0
728 }
729 binary.LittleEndian.PutUint32(p[0:], uint32(barrier))
730 return seq
731}
732
733func SetClientDisconnectMode(b *xturbo.Buf, disconnectMode ClientDisconnectFlags) xturbo.Seq {
734 if b.Ext == nil {
735 b.Fail(xturbo.ErrExtMissing)
736 return 0
737 }
738 major := b.Ext.Major(xturbo.ExtXFixes)
739 if major == 0 {
740 b.Fail(xturbo.ErrExtMissing)
741 return 0
742 }
743 p, seq := b.Request(major, 33, 4)
744 if p == nil {
745 return 0
746 }
747 binary.LittleEndian.PutUint32(p[0:], uint32(disconnectMode))
748 return seq
749}
750
751func GetClientDisconnectMode(b *xturbo.Buf) xturbo.Seq {
752 if b.Ext == nil {
753 b.Fail(xturbo.ErrExtMissing)
754 return 0
755 }
756 major := b.Ext.Major(xturbo.ExtXFixes)
757 if major == 0 {
758 b.Fail(xturbo.ErrExtMissing)
759 return 0
760 }
761 p, seq := b.Request(major, 34, 0)
762 if p == nil {
763 return 0
764 }
765 return seq
766}