| package xgb |
| |
| // Sync sends a round trip request and waits for the response. |
| // This forces all pending cookies to be dealt with. |
| // You actually shouldn't need to use this like you might with Xlib. Namely, |
| // buffers are automatically flushed using Go's channels and round trip requests |
| // are forced where appropriate automatically. |
| func (c *Conn) Sync() { |
| cookie := c.NewCookie(true, true) |
| c.NewRequest(c.getInputFocusRequest(), cookie) |
| cookie.Reply() // wait for the buffer to clear |
| } |
| |
| // getInputFocusRequest writes the raw bytes to a buffer. |
| // It is duplicated from xproto/xproto.go. |
| func (c *Conn) getInputFocusRequest() []byte { |
| size := 4 |
| b := 0 |
| buf := make([]byte, size) |
| |
| buf[b] = 43 // request opcode |
| b += 1 |
| |
| b += 1 // padding |
| Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units |
| b += 2 |
| |
| return buf |
| } |