2012-05-11 02:06:22 +02:00
// Package xf86dri is the X client API for the XFree86-DRI extension.
2012-05-10 23:01:42 +02:00
package xf86dri
/ *
2012-05-27 00:24:52 +02:00
This file was generated by xf86dri . xml on May 26 2012 6 : 23 : 13 pm EDT .
2012-05-10 23:01:42 +02:00
This file is automatically generated . Edit at your peril !
* /
import (
"github.com/BurntSushi/xgb"
"github.com/BurntSushi/xgb/xproto"
)
// Init must be called before using the XFree86-DRI extension.
func Init ( c * xgb . Conn ) error {
reply , err := xproto . QueryExtension ( c , 11 , "XFree86-DRI" ) . Reply ( )
switch {
case err != nil :
return err
case ! reply . Present :
return xgb . Errorf ( "No extension named XFree86-DRI could be found on on the server." )
}
xgb . ExtLock . Lock ( )
c . Extensions [ "XFree86-DRI" ] = reply . MajorOpcode
for evNum , fun := range xgb . NewExtEventFuncs [ "XFree86-DRI" ] {
xgb . NewEventFuncs [ int ( reply . FirstEvent ) + evNum ] = fun
}
for errNum , fun := range xgb . NewExtErrorFuncs [ "XFree86-DRI" ] {
xgb . NewErrorFuncs [ int ( reply . FirstError ) + errNum ] = fun
}
xgb . ExtLock . Unlock ( )
return nil
}
func init ( ) {
xgb . NewExtEventFuncs [ "XFree86-DRI" ] = make ( map [ int ] xgb . NewEventFun )
xgb . NewExtErrorFuncs [ "XFree86-DRI" ] = make ( map [ int ] xgb . NewErrorFun )
}
2012-05-11 02:06:22 +02:00
// Skipping definition for base type 'Byte'
2012-05-11 05:57:34 +02:00
// Skipping definition for base type 'Int8'
// Skipping definition for base type 'Card16'
// Skipping definition for base type 'Char'
// Skipping definition for base type 'Card32'
// Skipping definition for base type 'Double'
2012-05-12 05:58:52 +02:00
// Skipping definition for base type 'Bool'
2012-05-27 00:24:52 +02:00
// Skipping definition for base type 'Float'
// Skipping definition for base type 'Card8'
// Skipping definition for base type 'Int16'
// Skipping definition for base type 'Int32'
// Skipping definition for base type 'Void'
2012-05-10 23:01:42 +02:00
type DrmClipRect struct {
X1 int16
Y1 int16
X2 int16
X3 int16
}
2012-05-11 05:57:34 +02:00
// DrmClipRectRead reads a byte slice into a DrmClipRect value.
2012-05-10 23:01:42 +02:00
func DrmClipRectRead ( buf [ ] byte , v * DrmClipRect ) int {
b := 0
v . X1 = int16 ( xgb . Get16 ( buf [ b : ] ) )
b += 2
v . Y1 = int16 ( xgb . Get16 ( buf [ b : ] ) )
b += 2
v . X2 = int16 ( xgb . Get16 ( buf [ b : ] ) )
b += 2
v . X3 = int16 ( xgb . Get16 ( buf [ b : ] ) )
b += 2
return b
}
2012-05-11 05:57:34 +02:00
// DrmClipRectReadList reads a byte slice into a list of DrmClipRect values.
2012-05-10 23:01:42 +02:00
func DrmClipRectReadList ( buf [ ] byte , dest [ ] DrmClipRect ) int {
b := 0
for i := 0 ; i < len ( dest ) ; i ++ {
dest [ i ] = DrmClipRect { }
b += DrmClipRectRead ( buf [ b : ] , & dest [ i ] )
}
return xgb . Pad ( b )
}
2012-05-11 05:57:34 +02:00
// Bytes writes a DrmClipRect value to a byte slice.
2012-05-10 23:01:42 +02:00
func ( v DrmClipRect ) Bytes ( ) [ ] byte {
buf := make ( [ ] byte , 8 )
b := 0
xgb . Put16 ( buf [ b : ] , uint16 ( v . X1 ) )
b += 2
xgb . Put16 ( buf [ b : ] , uint16 ( v . Y1 ) )
b += 2
xgb . Put16 ( buf [ b : ] , uint16 ( v . X2 ) )
b += 2
xgb . Put16 ( buf [ b : ] , uint16 ( v . X3 ) )
b += 2
return buf
}
2012-05-27 00:24:52 +02:00
// DrmClipRectListBytes writes a list of DrmClipRect values to a byte slice.
2012-05-10 23:01:42 +02:00
func DrmClipRectListBytes ( buf [ ] byte , list [ ] DrmClipRect ) int {
b := 0
var structBytes [ ] byte
for _ , item := range list {
structBytes = item . Bytes ( )
copy ( buf [ b : ] , structBytes )
b += xgb . Pad ( len ( structBytes ) )
}
return b
}
2012-05-11 05:57:34 +02:00
// QueryVersionCookie is a cookie used only for QueryVersion requests.
2012-05-10 23:01:42 +02:00
type QueryVersionCookie struct {
* xgb . Cookie
}
2012-05-11 05:57:34 +02:00
// QueryVersion sends a checked request.
// If an error occurs, it will be returned with the reply by calling QueryVersionCookie.Reply()
2012-05-10 23:01:42 +02:00
func QueryVersion ( c * xgb . Conn ) QueryVersionCookie {
2012-05-12 05:58:52 +02:00
if _ , ok := c . Extensions [ "XFREE86-DRI" ] ; ! ok {
panic ( "Cannot issue request 'QueryVersion' using the uninitialized extension 'XFree86-DRI'. xf86dri.Init(connObj) must be called first." )
}
2012-05-10 23:01:42 +02:00
cookie := c . NewCookie ( true , true )
c . NewRequest ( queryVersionRequest ( c ) , cookie )
return QueryVersionCookie { cookie }
}
2012-05-11 05:57:34 +02:00
// QueryVersionUnchecked sends an unchecked request.
// If an error occurs, it can only be retrieved using xgb.WaitForEvent or xgb.PollForEvent.
2012-05-10 23:01:42 +02:00
func QueryVersionUnchecked ( c * xgb . Conn ) QueryVersionCookie {
2012-05-12 05:58:52 +02:00
if _ , ok := c . Extensions [ "XFREE86-DRI" ] ; ! ok {
panic ( "Cannot issue request 'QueryVersion' using the uninitialized extension 'XFree86-DRI'. xf86dri.Init(connObj) must be called first." )
}
2012-05-10 23:01:42 +02:00
cookie := c . NewCookie ( false , true )
c . NewRequest ( queryVersionRequest ( c ) , cookie )
return QueryVersionCookie { cookie }
}
2012-05-11 05:57:34 +02:00
// QueryVersionReply represents the data returned from a QueryVersion request.
2012-05-10 23:01:42 +02:00
type QueryVersionReply struct {
2012-05-11 05:57:34 +02:00
Sequence uint16 // sequence number of the request for this reply
Length uint32 // number of bytes in this reply
2012-05-10 23:01:42 +02:00
// padding: 1 bytes
DriMajorVersion uint16
DriMinorVersion uint16
DriMinorPatch uint32
}
2012-05-11 05:57:34 +02:00
// Reply blocks and returns the reply data for a QueryVersion request.
2012-05-10 23:01:42 +02:00
func ( cook QueryVersionCookie ) Reply ( ) ( * QueryVersionReply , error ) {
buf , err := cook . Cookie . Reply ( )
if err != nil {
return nil , err
}
if buf == nil {
return nil , nil
}
return queryVersionReply ( buf ) , nil
}
2012-05-11 05:57:34 +02:00
// queryVersionReply reads a byte slice into a QueryVersionReply value.
2012-05-10 23:01:42 +02:00
func queryVersionReply ( buf [ ] byte ) * QueryVersionReply {
v := new ( QueryVersionReply )
b := 1 // skip reply determinant
b += 1 // padding
v . Sequence = xgb . Get16 ( buf [ b : ] )
b += 2
v . Length = xgb . Get32 ( buf [ b : ] ) // 4-byte units
b += 4
v . DriMajorVersion = xgb . Get16 ( buf [ b : ] )
b += 2
v . DriMinorVersion = xgb . Get16 ( buf [ b : ] )
b += 2
v . DriMinorPatch = xgb . Get32 ( buf [ b : ] )
b += 4
return v
}
// Write request to wire for QueryVersion
2012-05-11 05:57:34 +02:00
// queryVersionRequest writes a QueryVersion request to a byte slice.
2012-05-10 23:01:42 +02:00
func queryVersionRequest ( c * xgb . Conn ) [ ] byte {
size := 4
b := 0
buf := make ( [ ] byte , size )
buf [ b ] = c . Extensions [ "XFREE86-DRI" ]
b += 1
buf [ b ] = 0 // request opcode
b += 1
xgb . Put16 ( buf [ b : ] , uint16 ( size / 4 ) ) // write request size in 4-byte units
b += 2
return buf
}
2012-05-11 05:57:34 +02:00
// QueryDirectRenderingCapableCookie is a cookie used only for QueryDirectRenderingCapable requests.
2012-05-10 23:01:42 +02:00
type QueryDirectRenderingCapableCookie struct {
* xgb . Cookie
}
2012-05-11 05:57:34 +02:00
// QueryDirectRenderingCapable sends a checked request.
// If an error occurs, it will be returned with the reply by calling QueryDirectRenderingCapableCookie.Reply()
2012-05-10 23:01:42 +02:00
func QueryDirectRenderingCapable ( c * xgb . Conn , Screen uint32 ) QueryDirectRenderingCapableCookie {
2012-05-12 05:58:52 +02:00
if _ , ok := c . Extensions [ "XFREE86-DRI" ] ; ! ok {
panic ( "Cannot issue request 'QueryDirectRenderingCapable' using the uninitialized extension 'XFree86-DRI'. xf86dri.Init(connObj) must be called first." )
}
2012-05-10 23:01:42 +02:00
cookie := c . NewCookie ( true , true )
c . NewRequest ( queryDirectRenderingCapableRequest ( c , Screen ) , cookie )
return QueryDirectRenderingCapableCookie { cookie }
}
2012-05-11 05:57:34 +02:00
// QueryDirectRenderingCapableUnchecked sends an unchecked request.
// If an error occurs, it can only be retrieved using xgb.WaitForEvent or xgb.PollForEvent.
2012-05-10 23:01:42 +02:00
func QueryDirectRenderingCapableUnchecked ( c * xgb . Conn , Screen uint32 ) QueryDirectRenderingCapableCookie {
2012-05-12 05:58:52 +02:00
if _ , ok := c . Extensions [ "XFREE86-DRI" ] ; ! ok {
panic ( "Cannot issue request 'QueryDirectRenderingCapable' using the uninitialized extension 'XFree86-DRI'. xf86dri.Init(connObj) must be called first." )
}
2012-05-10 23:01:42 +02:00
cookie := c . NewCookie ( false , true )
c . NewRequest ( queryDirectRenderingCapableRequest ( c , Screen ) , cookie )
return QueryDirectRenderingCapableCookie { cookie }
}
2012-05-11 05:57:34 +02:00
// QueryDirectRenderingCapableReply represents the data returned from a QueryDirectRenderingCapable request.
2012-05-10 23:01:42 +02:00
type QueryDirectRenderingCapableReply struct {
2012-05-11 05:57:34 +02:00
Sequence uint16 // sequence number of the request for this reply
Length uint32 // number of bytes in this reply
2012-05-10 23:01:42 +02:00
// padding: 1 bytes
IsCapable bool
}
2012-05-11 05:57:34 +02:00
// Reply blocks and returns the reply data for a QueryDirectRenderingCapable request.
2012-05-10 23:01:42 +02:00
func ( cook QueryDirectRenderingCapableCookie ) Reply ( ) ( * QueryDirectRenderingCapableReply , error ) {
buf , err := cook . Cookie . Reply ( )
if err != nil {
return nil , err
}
if buf == nil {
return nil , nil
}
return queryDirectRenderingCapableReply ( buf ) , nil
}
2012-05-11 05:57:34 +02:00
// queryDirectRenderingCapableReply reads a byte slice into a QueryDirectRenderingCapableReply value.
2012-05-10 23:01:42 +02:00
func queryDirectRenderingCapableReply ( buf [ ] byte ) * QueryDirectRenderingCapableReply {
v := new ( QueryDirectRenderingCapableReply )
b := 1 // skip reply determinant
b += 1 // padding
v . Sequence = xgb . Get16 ( buf [ b : ] )
b += 2
v . Length = xgb . Get32 ( buf [ b : ] ) // 4-byte units
b += 4
if buf [ b ] == 1 {
v . IsCapable = true
} else {
v . IsCapable = false
}
b += 1
return v
}
// Write request to wire for QueryDirectRenderingCapable
2012-05-11 05:57:34 +02:00
// queryDirectRenderingCapableRequest writes a QueryDirectRenderingCapable request to a byte slice.
2012-05-10 23:01:42 +02:00
func queryDirectRenderingCapableRequest ( c * xgb . Conn , Screen uint32 ) [ ] byte {
size := 8
b := 0
buf := make ( [ ] byte , size )
buf [ b ] = c . Extensions [ "XFREE86-DRI" ]
b += 1
buf [ b ] = 1 // request opcode
b += 1
xgb . Put16 ( buf [ b : ] , uint16 ( size / 4 ) ) // write request size in 4-byte units
b += 2
xgb . Put32 ( buf [ b : ] , Screen )
b += 4
return buf
}
2012-05-11 05:57:34 +02:00
// OpenConnectionCookie is a cookie used only for OpenConnection requests.
2012-05-10 23:01:42 +02:00
type OpenConnectionCookie struct {
* xgb . Cookie
}
2012-05-11 05:57:34 +02:00
// OpenConnection sends a checked request.
// If an error occurs, it will be returned with the reply by calling OpenConnectionCookie.Reply()
2012-05-10 23:01:42 +02:00
func OpenConnection ( c * xgb . Conn , Screen uint32 ) OpenConnectionCookie {
2012-05-12 05:58:52 +02:00
if _ , ok := c . Extensions [ "XFREE86-DRI" ] ; ! ok {
panic ( "Cannot issue request 'OpenConnection' using the uninitialized extension 'XFree86-DRI'. xf86dri.Init(connObj) must be called first." )
}
2012-05-10 23:01:42 +02:00
cookie := c . NewCookie ( true , true )
c . NewRequest ( openConnectionRequest ( c , Screen ) , cookie )
return OpenConnectionCookie { cookie }
}
2012-05-11 05:57:34 +02:00
// OpenConnectionUnchecked sends an unchecked request.
// If an error occurs, it can only be retrieved using xgb.WaitForEvent or xgb.PollForEvent.
2012-05-10 23:01:42 +02:00
func OpenConnectionUnchecked ( c * xgb . Conn , Screen uint32 ) OpenConnectionCookie {
2012-05-12 05:58:52 +02:00
if _ , ok := c . Extensions [ "XFREE86-DRI" ] ; ! ok {
panic ( "Cannot issue request 'OpenConnection' using the uninitialized extension 'XFree86-DRI'. xf86dri.Init(connObj) must be called first." )
}
2012-05-10 23:01:42 +02:00
cookie := c . NewCookie ( false , true )
c . NewRequest ( openConnectionRequest ( c , Screen ) , cookie )
return OpenConnectionCookie { cookie }
}
2012-05-11 05:57:34 +02:00
// OpenConnectionReply represents the data returned from a OpenConnection request.
2012-05-10 23:01:42 +02:00
type OpenConnectionReply struct {
2012-05-11 05:57:34 +02:00
Sequence uint16 // sequence number of the request for this reply
Length uint32 // number of bytes in this reply
2012-05-10 23:01:42 +02:00
// padding: 1 bytes
SareaHandleLow uint32
SareaHandleHigh uint32
BusIdLen uint32
// padding: 12 bytes
BusId string // size: xgb.Pad((int(BusIdLen) * 1))
}
2012-05-11 05:57:34 +02:00
// Reply blocks and returns the reply data for a OpenConnection request.
2012-05-10 23:01:42 +02:00
func ( cook OpenConnectionCookie ) Reply ( ) ( * OpenConnectionReply , error ) {
buf , err := cook . Cookie . Reply ( )
if err != nil {
return nil , err
}
if buf == nil {
return nil , nil
}
return openConnectionReply ( buf ) , nil
}
2012-05-11 05:57:34 +02:00
// openConnectionReply reads a byte slice into a OpenConnectionReply value.
2012-05-10 23:01:42 +02:00
func openConnectionReply ( buf [ ] byte ) * OpenConnectionReply {
v := new ( OpenConnectionReply )
b := 1 // skip reply determinant
b += 1 // padding
v . Sequence = xgb . Get16 ( buf [ b : ] )
b += 2
v . Length = xgb . Get32 ( buf [ b : ] ) // 4-byte units
b += 4
v . SareaHandleLow = xgb . Get32 ( buf [ b : ] )
b += 4
v . SareaHandleHigh = xgb . Get32 ( buf [ b : ] )
b += 4
v . BusIdLen = xgb . Get32 ( buf [ b : ] )
b += 4
b += 12 // padding
{
byteString := make ( [ ] byte , v . BusIdLen )
copy ( byteString [ : v . BusIdLen ] , buf [ b : ] )
v . BusId = string ( byteString )
b += xgb . Pad ( int ( v . BusIdLen ) )
}
return v
}
// Write request to wire for OpenConnection
2012-05-11 05:57:34 +02:00
// openConnectionRequest writes a OpenConnection request to a byte slice.
2012-05-10 23:01:42 +02:00
func openConnectionRequest ( c * xgb . Conn , Screen uint32 ) [ ] byte {
size := 8
b := 0
buf := make ( [ ] byte , size )
buf [ b ] = c . Extensions [ "XFREE86-DRI" ]
b += 1
buf [ b ] = 2 // request opcode
b += 1
xgb . Put16 ( buf [ b : ] , uint16 ( size / 4 ) ) // write request size in 4-byte units
b += 2
xgb . Put32 ( buf [ b : ] , Screen )
b += 4
return buf
}
2012-05-11 05:57:34 +02:00
// CloseConnectionCookie is a cookie used only for CloseConnection requests.
2012-05-10 23:01:42 +02:00
type CloseConnectionCookie struct {
* xgb . Cookie
}
2012-05-11 05:57:34 +02:00
// CloseConnection sends an unchecked request.
// If an error occurs, it can only be retrieved using xgb.WaitForEvent or xgb.PollForEvent.
2012-05-10 23:01:42 +02:00
func CloseConnection ( c * xgb . Conn , Screen uint32 ) CloseConnectionCookie {
2012-05-12 05:58:52 +02:00
if _ , ok := c . Extensions [ "XFREE86-DRI" ] ; ! ok {
panic ( "Cannot issue request 'CloseConnection' using the uninitialized extension 'XFree86-DRI'. xf86dri.Init(connObj) must be called first." )
}
2012-05-10 23:01:42 +02:00
cookie := c . NewCookie ( false , false )
c . NewRequest ( closeConnectionRequest ( c , Screen ) , cookie )
return CloseConnectionCookie { cookie }
}
2012-05-11 05:57:34 +02:00
// CloseConnectionChecked sends a checked request.
// If an error occurs, it can be retrieved using CloseConnectionCookie.Check()
2012-05-10 23:01:42 +02:00
func CloseConnectionChecked ( c * xgb . Conn , Screen uint32 ) CloseConnectionCookie {
2012-05-12 05:58:52 +02:00
if _ , ok := c . Extensions [ "XFREE86-DRI" ] ; ! ok {
panic ( "Cannot issue request 'CloseConnection' using the uninitialized extension 'XFree86-DRI'. xf86dri.Init(connObj) must be called first." )
}
2012-05-10 23:01:42 +02:00
cookie := c . NewCookie ( true , false )
c . NewRequest ( closeConnectionRequest ( c , Screen ) , cookie )
return CloseConnectionCookie { cookie }
}
2012-05-11 05:57:34 +02:00
// Check returns an error if one occurred for checked requests that are not expecting a reply.
// This cannot be called for requests expecting a reply, nor for unchecked requests.
2012-05-10 23:01:42 +02:00
func ( cook CloseConnectionCookie ) Check ( ) error {
return cook . Cookie . Check ( )
}
// Write request to wire for CloseConnection
2012-05-11 05:57:34 +02:00
// closeConnectionRequest writes a CloseConnection request to a byte slice.
2012-05-10 23:01:42 +02:00
func closeConnectionRequest ( c * xgb . Conn , Screen uint32 ) [ ] byte {
size := 8
b := 0
buf := make ( [ ] byte , size )
buf [ b ] = c . Extensions [ "XFREE86-DRI" ]
b += 1
buf [ b ] = 3 // request opcode
b += 1
xgb . Put16 ( buf [ b : ] , uint16 ( size / 4 ) ) // write request size in 4-byte units
b += 2
xgb . Put32 ( buf [ b : ] , Screen )
b += 4
return buf
}
2012-05-11 05:57:34 +02:00
// GetClientDriverNameCookie is a cookie used only for GetClientDriverName requests.
2012-05-10 23:01:42 +02:00
type GetClientDriverNameCookie struct {
* xgb . Cookie
}
2012-05-11 05:57:34 +02:00
// GetClientDriverName sends a checked request.
// If an error occurs, it will be returned with the reply by calling GetClientDriverNameCookie.Reply()
2012-05-10 23:01:42 +02:00
func GetClientDriverName ( c * xgb . Conn , Screen uint32 ) GetClientDriverNameCookie {
2012-05-12 05:58:52 +02:00
if _ , ok := c . Extensions [ "XFREE86-DRI" ] ; ! ok {
panic ( "Cannot issue request 'GetClientDriverName' using the uninitialized extension 'XFree86-DRI'. xf86dri.Init(connObj) must be called first." )
}
2012-05-10 23:01:42 +02:00
cookie := c . NewCookie ( true , true )
c . NewRequest ( getClientDriverNameRequest ( c , Screen ) , cookie )
return GetClientDriverNameCookie { cookie }
}
2012-05-11 05:57:34 +02:00
// GetClientDriverNameUnchecked sends an unchecked request.
// If an error occurs, it can only be retrieved using xgb.WaitForEvent or xgb.PollForEvent.
2012-05-10 23:01:42 +02:00
func GetClientDriverNameUnchecked ( c * xgb . Conn , Screen uint32 ) GetClientDriverNameCookie {
2012-05-12 05:58:52 +02:00
if _ , ok := c . Extensions [ "XFREE86-DRI" ] ; ! ok {
panic ( "Cannot issue request 'GetClientDriverName' using the uninitialized extension 'XFree86-DRI'. xf86dri.Init(connObj) must be called first." )
}
2012-05-10 23:01:42 +02:00
cookie := c . NewCookie ( false , true )
c . NewRequest ( getClientDriverNameRequest ( c , Screen ) , cookie )
return GetClientDriverNameCookie { cookie }
}
2012-05-11 05:57:34 +02:00
// GetClientDriverNameReply represents the data returned from a GetClientDriverName request.
2012-05-10 23:01:42 +02:00
type GetClientDriverNameReply struct {
2012-05-11 05:57:34 +02:00
Sequence uint16 // sequence number of the request for this reply
Length uint32 // number of bytes in this reply
2012-05-10 23:01:42 +02:00
// padding: 1 bytes
ClientDriverMajorVersion uint32
ClientDriverMinorVersion uint32
ClientDriverPatchVersion uint32
ClientDriverNameLen uint32
// padding: 8 bytes
ClientDriverName string // size: xgb.Pad((int(ClientDriverNameLen) * 1))
}
2012-05-11 05:57:34 +02:00
// Reply blocks and returns the reply data for a GetClientDriverName request.
2012-05-10 23:01:42 +02:00
func ( cook GetClientDriverNameCookie ) Reply ( ) ( * GetClientDriverNameReply , error ) {
buf , err := cook . Cookie . Reply ( )
if err != nil {
return nil , err
}
if buf == nil {
return nil , nil
}
return getClientDriverNameReply ( buf ) , nil
}
2012-05-11 05:57:34 +02:00
// getClientDriverNameReply reads a byte slice into a GetClientDriverNameReply value.
2012-05-10 23:01:42 +02:00
func getClientDriverNameReply ( buf [ ] byte ) * GetClientDriverNameReply {
v := new ( GetClientDriverNameReply )
b := 1 // skip reply determinant
b += 1 // padding
v . Sequence = xgb . Get16 ( buf [ b : ] )
b += 2
v . Length = xgb . Get32 ( buf [ b : ] ) // 4-byte units
b += 4
v . ClientDriverMajorVersion = xgb . Get32 ( buf [ b : ] )
b += 4
v . ClientDriverMinorVersion = xgb . Get32 ( buf [ b : ] )
b += 4
v . ClientDriverPatchVersion = xgb . Get32 ( buf [ b : ] )
b += 4
v . ClientDriverNameLen = xgb . Get32 ( buf [ b : ] )
b += 4
b += 8 // padding
{
byteString := make ( [ ] byte , v . ClientDriverNameLen )
copy ( byteString [ : v . ClientDriverNameLen ] , buf [ b : ] )
v . ClientDriverName = string ( byteString )
b += xgb . Pad ( int ( v . ClientDriverNameLen ) )
}
return v
}
// Write request to wire for GetClientDriverName
2012-05-11 05:57:34 +02:00
// getClientDriverNameRequest writes a GetClientDriverName request to a byte slice.
2012-05-10 23:01:42 +02:00
func getClientDriverNameRequest ( c * xgb . Conn , Screen uint32 ) [ ] byte {
size := 8
b := 0
buf := make ( [ ] byte , size )
buf [ b ] = c . Extensions [ "XFREE86-DRI" ]
b += 1
buf [ b ] = 4 // request opcode
b += 1
xgb . Put16 ( buf [ b : ] , uint16 ( size / 4 ) ) // write request size in 4-byte units
b += 2
xgb . Put32 ( buf [ b : ] , Screen )
b += 4
return buf
}
2012-05-11 05:57:34 +02:00
// CreateContextCookie is a cookie used only for CreateContext requests.
2012-05-10 23:01:42 +02:00
type CreateContextCookie struct {
* xgb . Cookie
}
2012-05-11 05:57:34 +02:00
// CreateContext sends a checked request.
// If an error occurs, it will be returned with the reply by calling CreateContextCookie.Reply()
2012-05-10 23:01:42 +02:00
func CreateContext ( c * xgb . Conn , Screen uint32 , Visual uint32 , Context uint32 ) CreateContextCookie {
2012-05-12 05:58:52 +02:00
if _ , ok := c . Extensions [ "XFREE86-DRI" ] ; ! ok {
panic ( "Cannot issue request 'CreateContext' using the uninitialized extension 'XFree86-DRI'. xf86dri.Init(connObj) must be called first." )
}
2012-05-10 23:01:42 +02:00
cookie := c . NewCookie ( true , true )
c . NewRequest ( createContextRequest ( c , Screen , Visual , Context ) , cookie )
return CreateContextCookie { cookie }
}
2012-05-11 05:57:34 +02:00
// CreateContextUnchecked sends an unchecked request.
// If an error occurs, it can only be retrieved using xgb.WaitForEvent or xgb.PollForEvent.
2012-05-10 23:01:42 +02:00
func CreateContextUnchecked ( c * xgb . Conn , Screen uint32 , Visual uint32 , Context uint32 ) CreateContextCookie {
2012-05-12 05:58:52 +02:00
if _ , ok := c . Extensions [ "XFREE86-DRI" ] ; ! ok {
panic ( "Cannot issue request 'CreateContext' using the uninitialized extension 'XFree86-DRI'. xf86dri.Init(connObj) must be called first." )
}
2012-05-10 23:01:42 +02:00
cookie := c . NewCookie ( false , true )
c . NewRequest ( createContextRequest ( c , Screen , Visual , Context ) , cookie )
return CreateContextCookie { cookie }
}
2012-05-11 05:57:34 +02:00
// CreateContextReply represents the data returned from a CreateContext request.
2012-05-10 23:01:42 +02:00
type CreateContextReply struct {
2012-05-11 05:57:34 +02:00
Sequence uint16 // sequence number of the request for this reply
Length uint32 // number of bytes in this reply
2012-05-10 23:01:42 +02:00
// padding: 1 bytes
HwContext uint32
}
2012-05-11 05:57:34 +02:00
// Reply blocks and returns the reply data for a CreateContext request.
2012-05-10 23:01:42 +02:00
func ( cook CreateContextCookie ) Reply ( ) ( * CreateContextReply , error ) {
buf , err := cook . Cookie . Reply ( )
if err != nil {
return nil , err
}
if buf == nil {
return nil , nil
}
return createContextReply ( buf ) , nil
}
2012-05-11 05:57:34 +02:00
// createContextReply reads a byte slice into a CreateContextReply value.
2012-05-10 23:01:42 +02:00
func createContextReply ( buf [ ] byte ) * CreateContextReply {
v := new ( CreateContextReply )
b := 1 // skip reply determinant
b += 1 // padding
v . Sequence = xgb . Get16 ( buf [ b : ] )
b += 2
v . Length = xgb . Get32 ( buf [ b : ] ) // 4-byte units
b += 4
v . HwContext = xgb . Get32 ( buf [ b : ] )
b += 4
return v
}
// Write request to wire for CreateContext
2012-05-11 05:57:34 +02:00
// createContextRequest writes a CreateContext request to a byte slice.
2012-05-10 23:01:42 +02:00
func createContextRequest ( c * xgb . Conn , Screen uint32 , Visual uint32 , Context uint32 ) [ ] byte {
size := 16
b := 0
buf := make ( [ ] byte , size )
buf [ b ] = c . Extensions [ "XFREE86-DRI" ]
b += 1
buf [ b ] = 5 // request opcode
b += 1
xgb . Put16 ( buf [ b : ] , uint16 ( size / 4 ) ) // write request size in 4-byte units
b += 2
xgb . Put32 ( buf [ b : ] , Screen )
b += 4
xgb . Put32 ( buf [ b : ] , Visual )
b += 4
xgb . Put32 ( buf [ b : ] , Context )
b += 4
return buf
}
2012-05-11 05:57:34 +02:00
// DestroyContextCookie is a cookie used only for DestroyContext requests.
2012-05-10 23:01:42 +02:00
type DestroyContextCookie struct {
* xgb . Cookie
}
2012-05-11 05:57:34 +02:00
// DestroyContext sends an unchecked request.
// If an error occurs, it can only be retrieved using xgb.WaitForEvent or xgb.PollForEvent.
2012-05-10 23:01:42 +02:00
func DestroyContext ( c * xgb . Conn , Screen uint32 , Context uint32 ) DestroyContextCookie {
2012-05-12 05:58:52 +02:00
if _ , ok := c . Extensions [ "XFREE86-DRI" ] ; ! ok {
panic ( "Cannot issue request 'DestroyContext' using the uninitialized extension 'XFree86-DRI'. xf86dri.Init(connObj) must be called first." )
}
2012-05-10 23:01:42 +02:00
cookie := c . NewCookie ( false , false )
c . NewRequest ( destroyContextRequest ( c , Screen , Context ) , cookie )
return DestroyContextCookie { cookie }
}
2012-05-11 05:57:34 +02:00
// DestroyContextChecked sends a checked request.
// If an error occurs, it can be retrieved using DestroyContextCookie.Check()
2012-05-10 23:01:42 +02:00
func DestroyContextChecked ( c * xgb . Conn , Screen uint32 , Context uint32 ) DestroyContextCookie {
2012-05-12 05:58:52 +02:00
if _ , ok := c . Extensions [ "XFREE86-DRI" ] ; ! ok {
panic ( "Cannot issue request 'DestroyContext' using the uninitialized extension 'XFree86-DRI'. xf86dri.Init(connObj) must be called first." )
}
2012-05-10 23:01:42 +02:00
cookie := c . NewCookie ( true , false )
c . NewRequest ( destroyContextRequest ( c , Screen , Context ) , cookie )
return DestroyContextCookie { cookie }
}
2012-05-11 05:57:34 +02:00
// Check returns an error if one occurred for checked requests that are not expecting a reply.
// This cannot be called for requests expecting a reply, nor for unchecked requests.
2012-05-10 23:01:42 +02:00
func ( cook DestroyContextCookie ) Check ( ) error {
return cook . Cookie . Check ( )
}
// Write request to wire for DestroyContext
2012-05-11 05:57:34 +02:00
// destroyContextRequest writes a DestroyContext request to a byte slice.
2012-05-10 23:01:42 +02:00
func destroyContextRequest ( c * xgb . Conn , Screen uint32 , Context uint32 ) [ ] byte {
size := 12
b := 0
buf := make ( [ ] byte , size )
buf [ b ] = c . Extensions [ "XFREE86-DRI" ]
b += 1
buf [ b ] = 6 // request opcode
b += 1
xgb . Put16 ( buf [ b : ] , uint16 ( size / 4 ) ) // write request size in 4-byte units
b += 2
xgb . Put32 ( buf [ b : ] , Screen )
b += 4
xgb . Put32 ( buf [ b : ] , Context )
b += 4
return buf
}
2012-05-11 05:57:34 +02:00
// CreateDrawableCookie is a cookie used only for CreateDrawable requests.
2012-05-10 23:01:42 +02:00
type CreateDrawableCookie struct {
* xgb . Cookie
}
2012-05-11 05:57:34 +02:00
// CreateDrawable sends a checked request.
// If an error occurs, it will be returned with the reply by calling CreateDrawableCookie.Reply()
2012-05-10 23:01:42 +02:00
func CreateDrawable ( c * xgb . Conn , Screen uint32 , Drawable uint32 ) CreateDrawableCookie {
2012-05-12 05:58:52 +02:00
if _ , ok := c . Extensions [ "XFREE86-DRI" ] ; ! ok {
panic ( "Cannot issue request 'CreateDrawable' using the uninitialized extension 'XFree86-DRI'. xf86dri.Init(connObj) must be called first." )
}
2012-05-10 23:01:42 +02:00
cookie := c . NewCookie ( true , true )
c . NewRequest ( createDrawableRequest ( c , Screen , Drawable ) , cookie )
return CreateDrawableCookie { cookie }
}
2012-05-11 05:57:34 +02:00
// CreateDrawableUnchecked sends an unchecked request.
// If an error occurs, it can only be retrieved using xgb.WaitForEvent or xgb.PollForEvent.
2012-05-10 23:01:42 +02:00
func CreateDrawableUnchecked ( c * xgb . Conn , Screen uint32 , Drawable uint32 ) CreateDrawableCookie {
2012-05-12 05:58:52 +02:00
if _ , ok := c . Extensions [ "XFREE86-DRI" ] ; ! ok {
panic ( "Cannot issue request 'CreateDrawable' using the uninitialized extension 'XFree86-DRI'. xf86dri.Init(connObj) must be called first." )
}
2012-05-10 23:01:42 +02:00
cookie := c . NewCookie ( false , true )
c . NewRequest ( createDrawableRequest ( c , Screen , Drawable ) , cookie )
return CreateDrawableCookie { cookie }
}
2012-05-11 05:57:34 +02:00
// CreateDrawableReply represents the data returned from a CreateDrawable request.
2012-05-10 23:01:42 +02:00
type CreateDrawableReply struct {
2012-05-11 05:57:34 +02:00
Sequence uint16 // sequence number of the request for this reply
Length uint32 // number of bytes in this reply
2012-05-10 23:01:42 +02:00
// padding: 1 bytes
HwDrawableHandle uint32
}
2012-05-11 05:57:34 +02:00
// Reply blocks and returns the reply data for a CreateDrawable request.
2012-05-10 23:01:42 +02:00
func ( cook CreateDrawableCookie ) Reply ( ) ( * CreateDrawableReply , error ) {
buf , err := cook . Cookie . Reply ( )
if err != nil {
return nil , err
}
if buf == nil {
return nil , nil
}
return createDrawableReply ( buf ) , nil
}
2012-05-11 05:57:34 +02:00
// createDrawableReply reads a byte slice into a CreateDrawableReply value.
2012-05-10 23:01:42 +02:00
func createDrawableReply ( buf [ ] byte ) * CreateDrawableReply {
v := new ( CreateDrawableReply )
b := 1 // skip reply determinant
b += 1 // padding
v . Sequence = xgb . Get16 ( buf [ b : ] )
b += 2
v . Length = xgb . Get32 ( buf [ b : ] ) // 4-byte units
b += 4
v . HwDrawableHandle = xgb . Get32 ( buf [ b : ] )
b += 4
return v
}
// Write request to wire for CreateDrawable
2012-05-11 05:57:34 +02:00
// createDrawableRequest writes a CreateDrawable request to a byte slice.
2012-05-10 23:01:42 +02:00
func createDrawableRequest ( c * xgb . Conn , Screen uint32 , Drawable uint32 ) [ ] byte {
size := 12
b := 0
buf := make ( [ ] byte , size )
buf [ b ] = c . Extensions [ "XFREE86-DRI" ]
b += 1
buf [ b ] = 7 // request opcode
b += 1
xgb . Put16 ( buf [ b : ] , uint16 ( size / 4 ) ) // write request size in 4-byte units
b += 2
xgb . Put32 ( buf [ b : ] , Screen )
b += 4
xgb . Put32 ( buf [ b : ] , Drawable )
b += 4
return buf
}
2012-05-11 05:57:34 +02:00
// DestroyDrawableCookie is a cookie used only for DestroyDrawable requests.
2012-05-10 23:01:42 +02:00
type DestroyDrawableCookie struct {
* xgb . Cookie
}
2012-05-11 05:57:34 +02:00
// DestroyDrawable sends an unchecked request.
// If an error occurs, it can only be retrieved using xgb.WaitForEvent or xgb.PollForEvent.
2012-05-10 23:01:42 +02:00
func DestroyDrawable ( c * xgb . Conn , Screen uint32 , Drawable uint32 ) DestroyDrawableCookie {
2012-05-12 05:58:52 +02:00
if _ , ok := c . Extensions [ "XFREE86-DRI" ] ; ! ok {
panic ( "Cannot issue request 'DestroyDrawable' using the uninitialized extension 'XFree86-DRI'. xf86dri.Init(connObj) must be called first." )
}
2012-05-10 23:01:42 +02:00
cookie := c . NewCookie ( false , false )
c . NewRequest ( destroyDrawableRequest ( c , Screen , Drawable ) , cookie )
return DestroyDrawableCookie { cookie }
}
2012-05-11 05:57:34 +02:00
// DestroyDrawableChecked sends a checked request.
// If an error occurs, it can be retrieved using DestroyDrawableCookie.Check()
2012-05-10 23:01:42 +02:00
func DestroyDrawableChecked ( c * xgb . Conn , Screen uint32 , Drawable uint32 ) DestroyDrawableCookie {
2012-05-12 05:58:52 +02:00
if _ , ok := c . Extensions [ "XFREE86-DRI" ] ; ! ok {
panic ( "Cannot issue request 'DestroyDrawable' using the uninitialized extension 'XFree86-DRI'. xf86dri.Init(connObj) must be called first." )
}
2012-05-10 23:01:42 +02:00
cookie := c . NewCookie ( true , false )
c . NewRequest ( destroyDrawableRequest ( c , Screen , Drawable ) , cookie )
return DestroyDrawableCookie { cookie }
}
2012-05-11 05:57:34 +02:00
// Check returns an error if one occurred for checked requests that are not expecting a reply.
// This cannot be called for requests expecting a reply, nor for unchecked requests.
2012-05-10 23:01:42 +02:00
func ( cook DestroyDrawableCookie ) Check ( ) error {
return cook . Cookie . Check ( )
}
// Write request to wire for DestroyDrawable
2012-05-11 05:57:34 +02:00
// destroyDrawableRequest writes a DestroyDrawable request to a byte slice.
2012-05-10 23:01:42 +02:00
func destroyDrawableRequest ( c * xgb . Conn , Screen uint32 , Drawable uint32 ) [ ] byte {
size := 12
b := 0
buf := make ( [ ] byte , size )
buf [ b ] = c . Extensions [ "XFREE86-DRI" ]
b += 1
buf [ b ] = 8 // request opcode
b += 1
xgb . Put16 ( buf [ b : ] , uint16 ( size / 4 ) ) // write request size in 4-byte units
b += 2
xgb . Put32 ( buf [ b : ] , Screen )
b += 4
xgb . Put32 ( buf [ b : ] , Drawable )
b += 4
return buf
}
2012-05-11 05:57:34 +02:00
// GetDrawableInfoCookie is a cookie used only for GetDrawableInfo requests.
2012-05-10 23:01:42 +02:00
type GetDrawableInfoCookie struct {
* xgb . Cookie
}
2012-05-11 05:57:34 +02:00
// GetDrawableInfo sends a checked request.
// If an error occurs, it will be returned with the reply by calling GetDrawableInfoCookie.Reply()
2012-05-10 23:01:42 +02:00
func GetDrawableInfo ( c * xgb . Conn , Screen uint32 , Drawable uint32 ) GetDrawableInfoCookie {
2012-05-12 05:58:52 +02:00
if _ , ok := c . Extensions [ "XFREE86-DRI" ] ; ! ok {
panic ( "Cannot issue request 'GetDrawableInfo' using the uninitialized extension 'XFree86-DRI'. xf86dri.Init(connObj) must be called first." )
}
2012-05-10 23:01:42 +02:00
cookie := c . NewCookie ( true , true )
c . NewRequest ( getDrawableInfoRequest ( c , Screen , Drawable ) , cookie )
return GetDrawableInfoCookie { cookie }
}
2012-05-11 05:57:34 +02:00
// GetDrawableInfoUnchecked sends an unchecked request.
// If an error occurs, it can only be retrieved using xgb.WaitForEvent or xgb.PollForEvent.
2012-05-10 23:01:42 +02:00
func GetDrawableInfoUnchecked ( c * xgb . Conn , Screen uint32 , Drawable uint32 ) GetDrawableInfoCookie {
2012-05-12 05:58:52 +02:00
if _ , ok := c . Extensions [ "XFREE86-DRI" ] ; ! ok {
panic ( "Cannot issue request 'GetDrawableInfo' using the uninitialized extension 'XFree86-DRI'. xf86dri.Init(connObj) must be called first." )
}
2012-05-10 23:01:42 +02:00
cookie := c . NewCookie ( false , true )
c . NewRequest ( getDrawableInfoRequest ( c , Screen , Drawable ) , cookie )
return GetDrawableInfoCookie { cookie }
}
2012-05-11 05:57:34 +02:00
// GetDrawableInfoReply represents the data returned from a GetDrawableInfo request.
2012-05-10 23:01:42 +02:00
type GetDrawableInfoReply struct {
2012-05-11 05:57:34 +02:00
Sequence uint16 // sequence number of the request for this reply
Length uint32 // number of bytes in this reply
2012-05-10 23:01:42 +02:00
// padding: 1 bytes
DrawableTableIndex uint32
DrawableTableStamp uint32
DrawableOriginX int16
DrawableOriginY int16
DrawableSizeW int16
DrawableSizeH int16
NumClipRects uint32
BackX int16
BackY int16
NumBackClipRects uint32
ClipRects [ ] DrmClipRect // size: xgb.Pad((int(NumClipRects) * 8))
BackClipRects [ ] DrmClipRect // size: xgb.Pad((int(NumBackClipRects) * 8))
}
2012-05-11 05:57:34 +02:00
// Reply blocks and returns the reply data for a GetDrawableInfo request.
2012-05-10 23:01:42 +02:00
func ( cook GetDrawableInfoCookie ) Reply ( ) ( * GetDrawableInfoReply , error ) {
buf , err := cook . Cookie . Reply ( )
if err != nil {
return nil , err
}
if buf == nil {
return nil , nil
}
return getDrawableInfoReply ( buf ) , nil
}
2012-05-11 05:57:34 +02:00
// getDrawableInfoReply reads a byte slice into a GetDrawableInfoReply value.
2012-05-10 23:01:42 +02:00
func getDrawableInfoReply ( buf [ ] byte ) * GetDrawableInfoReply {
v := new ( GetDrawableInfoReply )
b := 1 // skip reply determinant
b += 1 // padding
v . Sequence = xgb . Get16 ( buf [ b : ] )
b += 2
v . Length = xgb . Get32 ( buf [ b : ] ) // 4-byte units
b += 4
v . DrawableTableIndex = xgb . Get32 ( buf [ b : ] )
b += 4
v . DrawableTableStamp = xgb . Get32 ( buf [ b : ] )
b += 4
v . DrawableOriginX = int16 ( xgb . Get16 ( buf [ b : ] ) )
b += 2
v . DrawableOriginY = int16 ( xgb . Get16 ( buf [ b : ] ) )
b += 2
v . DrawableSizeW = int16 ( xgb . Get16 ( buf [ b : ] ) )
b += 2
v . DrawableSizeH = int16 ( xgb . Get16 ( buf [ b : ] ) )
b += 2
v . NumClipRects = xgb . Get32 ( buf [ b : ] )
b += 4
v . BackX = int16 ( xgb . Get16 ( buf [ b : ] ) )
b += 2
v . BackY = int16 ( xgb . Get16 ( buf [ b : ] ) )
b += 2
v . NumBackClipRects = xgb . Get32 ( buf [ b : ] )
b += 4
v . ClipRects = make ( [ ] DrmClipRect , v . NumClipRects )
b += DrmClipRectReadList ( buf [ b : ] , v . ClipRects )
v . BackClipRects = make ( [ ] DrmClipRect , v . NumBackClipRects )
b += DrmClipRectReadList ( buf [ b : ] , v . BackClipRects )
return v
}
// Write request to wire for GetDrawableInfo
2012-05-11 05:57:34 +02:00
// getDrawableInfoRequest writes a GetDrawableInfo request to a byte slice.
2012-05-10 23:01:42 +02:00
func getDrawableInfoRequest ( c * xgb . Conn , Screen uint32 , Drawable uint32 ) [ ] byte {
size := 12
b := 0
buf := make ( [ ] byte , size )
buf [ b ] = c . Extensions [ "XFREE86-DRI" ]
b += 1
buf [ b ] = 9 // request opcode
b += 1
xgb . Put16 ( buf [ b : ] , uint16 ( size / 4 ) ) // write request size in 4-byte units
b += 2
xgb . Put32 ( buf [ b : ] , Screen )
b += 4
xgb . Put32 ( buf [ b : ] , Drawable )
b += 4
return buf
}
2012-05-11 05:57:34 +02:00
// GetDeviceInfoCookie is a cookie used only for GetDeviceInfo requests.
2012-05-10 23:01:42 +02:00
type GetDeviceInfoCookie struct {
* xgb . Cookie
}
2012-05-11 05:57:34 +02:00
// GetDeviceInfo sends a checked request.
// If an error occurs, it will be returned with the reply by calling GetDeviceInfoCookie.Reply()
2012-05-10 23:01:42 +02:00
func GetDeviceInfo ( c * xgb . Conn , Screen uint32 ) GetDeviceInfoCookie {
2012-05-12 05:58:52 +02:00
if _ , ok := c . Extensions [ "XFREE86-DRI" ] ; ! ok {
panic ( "Cannot issue request 'GetDeviceInfo' using the uninitialized extension 'XFree86-DRI'. xf86dri.Init(connObj) must be called first." )
}
2012-05-10 23:01:42 +02:00
cookie := c . NewCookie ( true , true )
c . NewRequest ( getDeviceInfoRequest ( c , Screen ) , cookie )
return GetDeviceInfoCookie { cookie }
}
2012-05-11 05:57:34 +02:00
// GetDeviceInfoUnchecked sends an unchecked request.
// If an error occurs, it can only be retrieved using xgb.WaitForEvent or xgb.PollForEvent.
2012-05-10 23:01:42 +02:00
func GetDeviceInfoUnchecked ( c * xgb . Conn , Screen uint32 ) GetDeviceInfoCookie {
2012-05-12 05:58:52 +02:00
if _ , ok := c . Extensions [ "XFREE86-DRI" ] ; ! ok {
panic ( "Cannot issue request 'GetDeviceInfo' using the uninitialized extension 'XFree86-DRI'. xf86dri.Init(connObj) must be called first." )
}
2012-05-10 23:01:42 +02:00
cookie := c . NewCookie ( false , true )
c . NewRequest ( getDeviceInfoRequest ( c , Screen ) , cookie )
return GetDeviceInfoCookie { cookie }
}
2012-05-11 05:57:34 +02:00
// GetDeviceInfoReply represents the data returned from a GetDeviceInfo request.
2012-05-10 23:01:42 +02:00
type GetDeviceInfoReply struct {
2012-05-11 05:57:34 +02:00
Sequence uint16 // sequence number of the request for this reply
Length uint32 // number of bytes in this reply
2012-05-10 23:01:42 +02:00
// padding: 1 bytes
FramebufferHandleLow uint32
FramebufferHandleHigh uint32
FramebufferOriginOffset uint32
FramebufferSize uint32
FramebufferStride uint32
DevicePrivateSize uint32
DevicePrivate [ ] uint32 // size: xgb.Pad((int(DevicePrivateSize) * 4))
}
2012-05-11 05:57:34 +02:00
// Reply blocks and returns the reply data for a GetDeviceInfo request.
2012-05-10 23:01:42 +02:00
func ( cook GetDeviceInfoCookie ) Reply ( ) ( * GetDeviceInfoReply , error ) {
buf , err := cook . Cookie . Reply ( )
if err != nil {
return nil , err
}
if buf == nil {
return nil , nil
}
return getDeviceInfoReply ( buf ) , nil
}
2012-05-11 05:57:34 +02:00
// getDeviceInfoReply reads a byte slice into a GetDeviceInfoReply value.
2012-05-10 23:01:42 +02:00
func getDeviceInfoReply ( buf [ ] byte ) * GetDeviceInfoReply {
v := new ( GetDeviceInfoReply )
b := 1 // skip reply determinant
b += 1 // padding
v . Sequence = xgb . Get16 ( buf [ b : ] )
b += 2
v . Length = xgb . Get32 ( buf [ b : ] ) // 4-byte units
b += 4
v . FramebufferHandleLow = xgb . Get32 ( buf [ b : ] )
b += 4
v . FramebufferHandleHigh = xgb . Get32 ( buf [ b : ] )
b += 4
v . FramebufferOriginOffset = xgb . Get32 ( buf [ b : ] )
b += 4
v . FramebufferSize = xgb . Get32 ( buf [ b : ] )
b += 4
v . FramebufferStride = xgb . Get32 ( buf [ b : ] )
b += 4
v . DevicePrivateSize = xgb . Get32 ( buf [ b : ] )
b += 4
v . DevicePrivate = make ( [ ] uint32 , v . DevicePrivateSize )
for i := 0 ; i < int ( v . DevicePrivateSize ) ; i ++ {
v . DevicePrivate [ i ] = xgb . Get32 ( buf [ b : ] )
b += 4
}
b = xgb . Pad ( b )
return v
}
// Write request to wire for GetDeviceInfo
2012-05-11 05:57:34 +02:00
// getDeviceInfoRequest writes a GetDeviceInfo request to a byte slice.
2012-05-10 23:01:42 +02:00
func getDeviceInfoRequest ( c * xgb . Conn , Screen uint32 ) [ ] byte {
size := 8
b := 0
buf := make ( [ ] byte , size )
buf [ b ] = c . Extensions [ "XFREE86-DRI" ]
b += 1
buf [ b ] = 10 // request opcode
b += 1
xgb . Put16 ( buf [ b : ] , uint16 ( size / 4 ) ) // write request size in 4-byte units
b += 2
xgb . Put32 ( buf [ b : ] , Screen )
b += 4
return buf
}
2012-05-11 05:57:34 +02:00
// AuthConnectionCookie is a cookie used only for AuthConnection requests.
2012-05-10 23:01:42 +02:00
type AuthConnectionCookie struct {
* xgb . Cookie
}
2012-05-11 05:57:34 +02:00
// AuthConnection sends a checked request.
// If an error occurs, it will be returned with the reply by calling AuthConnectionCookie.Reply()
2012-05-10 23:01:42 +02:00
func AuthConnection ( c * xgb . Conn , Screen uint32 , Magic uint32 ) AuthConnectionCookie {
2012-05-12 05:58:52 +02:00
if _ , ok := c . Extensions [ "XFREE86-DRI" ] ; ! ok {
panic ( "Cannot issue request 'AuthConnection' using the uninitialized extension 'XFree86-DRI'. xf86dri.Init(connObj) must be called first." )
}
2012-05-10 23:01:42 +02:00
cookie := c . NewCookie ( true , true )
c . NewRequest ( authConnectionRequest ( c , Screen , Magic ) , cookie )
return AuthConnectionCookie { cookie }
}
2012-05-11 05:57:34 +02:00
// AuthConnectionUnchecked sends an unchecked request.
// If an error occurs, it can only be retrieved using xgb.WaitForEvent or xgb.PollForEvent.
2012-05-10 23:01:42 +02:00
func AuthConnectionUnchecked ( c * xgb . Conn , Screen uint32 , Magic uint32 ) AuthConnectionCookie {
2012-05-12 05:58:52 +02:00
if _ , ok := c . Extensions [ "XFREE86-DRI" ] ; ! ok {
panic ( "Cannot issue request 'AuthConnection' using the uninitialized extension 'XFree86-DRI'. xf86dri.Init(connObj) must be called first." )
}
2012-05-10 23:01:42 +02:00
cookie := c . NewCookie ( false , true )
c . NewRequest ( authConnectionRequest ( c , Screen , Magic ) , cookie )
return AuthConnectionCookie { cookie }
}
2012-05-11 05:57:34 +02:00
// AuthConnectionReply represents the data returned from a AuthConnection request.
2012-05-10 23:01:42 +02:00
type AuthConnectionReply struct {
2012-05-11 05:57:34 +02:00
Sequence uint16 // sequence number of the request for this reply
Length uint32 // number of bytes in this reply
2012-05-10 23:01:42 +02:00
// padding: 1 bytes
Authenticated uint32
}
2012-05-11 05:57:34 +02:00
// Reply blocks and returns the reply data for a AuthConnection request.
2012-05-10 23:01:42 +02:00
func ( cook AuthConnectionCookie ) Reply ( ) ( * AuthConnectionReply , error ) {
buf , err := cook . Cookie . Reply ( )
if err != nil {
return nil , err
}
if buf == nil {
return nil , nil
}
return authConnectionReply ( buf ) , nil
}
2012-05-11 05:57:34 +02:00
// authConnectionReply reads a byte slice into a AuthConnectionReply value.
2012-05-10 23:01:42 +02:00
func authConnectionReply ( buf [ ] byte ) * AuthConnectionReply {
v := new ( AuthConnectionReply )
b := 1 // skip reply determinant
b += 1 // padding
v . Sequence = xgb . Get16 ( buf [ b : ] )
b += 2
v . Length = xgb . Get32 ( buf [ b : ] ) // 4-byte units
b += 4
v . Authenticated = xgb . Get32 ( buf [ b : ] )
b += 4
return v
}
// Write request to wire for AuthConnection
2012-05-11 05:57:34 +02:00
// authConnectionRequest writes a AuthConnection request to a byte slice.
2012-05-10 23:01:42 +02:00
func authConnectionRequest ( c * xgb . Conn , Screen uint32 , Magic uint32 ) [ ] byte {
size := 12
b := 0
buf := make ( [ ] byte , size )
buf [ b ] = c . Extensions [ "XFREE86-DRI" ]
b += 1
buf [ b ] = 11 // request opcode
b += 1
xgb . Put16 ( buf [ b : ] , uint16 ( size / 4 ) ) // write request size in 4-byte units
b += 2
xgb . Put32 ( buf [ b : ] , Screen )
b += 4
xgb . Put32 ( buf [ b : ] , Magic )
b += 4
return buf
}