go-tg-screenshot-bot
29 строк · 863.0 Байт
1package xgb
2
3// Sync sends a round trip request and waits for the response.
4// This forces all pending cookies to be dealt with.
5// You actually shouldn't need to use this like you might with Xlib. Namely,
6// buffers are automatically flushed using Go's channels and round trip requests
7// are forced where appropriate automatically.
8func (c *Conn) Sync() {
9cookie := c.NewCookie(true, true)
10c.NewRequest(c.getInputFocusRequest(), cookie)
11cookie.Reply() // wait for the buffer to clear
12}
13
14// getInputFocusRequest writes the raw bytes to a buffer.
15// It is duplicated from xproto/xproto.go.
16func (c *Conn) getInputFocusRequest() []byte {
17size := 4
18b := 0
19buf := make([]byte, size)
20
21buf[b] = 43 // request opcode
22b += 1
23
24b += 1 // padding
25Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
26b += 2
27
28return buf
29}
30