Fix Issue #21: automatic calculation of alignment padding after lists
This commit is contained in:
		@@ -331,7 +331,7 @@ func (v CrtcChange) Bytes() []byte {
 | 
			
		||||
	xgb.Put16(buf[b:], v.Height)
 | 
			
		||||
	b += 2
 | 
			
		||||
 | 
			
		||||
	return buf
 | 
			
		||||
	return buf[:b]
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// CrtcChangeListBytes writes a list of CrtcChange values to a byte slice.
 | 
			
		||||
@@ -489,7 +489,7 @@ func (v ModeInfo) Bytes() []byte {
 | 
			
		||||
	xgb.Put32(buf[b:], v.ModeFlags)
 | 
			
		||||
	b += 4
 | 
			
		||||
 | 
			
		||||
	return buf
 | 
			
		||||
	return buf[:b]
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ModeInfoListBytes writes a list of ModeInfo values to a byte slice.
 | 
			
		||||
@@ -504,6 +504,15 @@ func ModeInfoListBytes(buf []byte, list []ModeInfo) int {
 | 
			
		||||
	return xgb.Pad(b)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
const (
 | 
			
		||||
	NotifyCrtcChange       = 0
 | 
			
		||||
	NotifyOutputChange     = 1
 | 
			
		||||
	NotifyOutputProperty   = 2
 | 
			
		||||
	NotifyProviderChange   = 3
 | 
			
		||||
	NotifyProviderProperty = 4
 | 
			
		||||
	NotifyResourceChange   = 5
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// Notify is the event number for a NotifyEvent.
 | 
			
		||||
const Notify = 1
 | 
			
		||||
 | 
			
		||||
@@ -572,15 +581,6 @@ func init() {
 | 
			
		||||
	xgb.NewExtEventFuncs["RANDR"][1] = NotifyEventNew
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
const (
 | 
			
		||||
	NotifyCrtcChange       = 0
 | 
			
		||||
	NotifyOutputChange     = 1
 | 
			
		||||
	NotifyOutputProperty   = 2
 | 
			
		||||
	NotifyProviderChange   = 3
 | 
			
		||||
	NotifyProviderProperty = 4
 | 
			
		||||
	NotifyResourceChange   = 5
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// NotifyDataUnion is a represention of the NotifyDataUnion union type.
 | 
			
		||||
// Note that to *create* a Union, you should *never* create
 | 
			
		||||
// this struct directly (unless you know what you're doing).
 | 
			
		||||
@@ -1034,7 +1034,7 @@ func (v OutputChange) Bytes() []byte {
 | 
			
		||||
	buf[b] = v.SubpixelOrder
 | 
			
		||||
	b += 1
 | 
			
		||||
 | 
			
		||||
	return buf
 | 
			
		||||
	return buf[:b]
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// OutputChangeListBytes writes a list of OutputChange values to a byte slice.
 | 
			
		||||
@@ -1114,7 +1114,7 @@ func (v OutputProperty) Bytes() []byte {
 | 
			
		||||
 | 
			
		||||
	b += 11 // padding
 | 
			
		||||
 | 
			
		||||
	return buf
 | 
			
		||||
	return buf[:b]
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// OutputPropertyListBytes writes a list of OutputProperty values to a byte slice.
 | 
			
		||||
@@ -1197,7 +1197,7 @@ func (v ProviderChange) Bytes() []byte {
 | 
			
		||||
 | 
			
		||||
	b += 16 // padding
 | 
			
		||||
 | 
			
		||||
	return buf
 | 
			
		||||
	return buf[:b]
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ProviderChangeListBytes writes a list of ProviderChange values to a byte slice.
 | 
			
		||||
@@ -1277,7 +1277,7 @@ func (v ProviderProperty) Bytes() []byte {
 | 
			
		||||
 | 
			
		||||
	b += 11 // padding
 | 
			
		||||
 | 
			
		||||
	return buf
 | 
			
		||||
	return buf[:b]
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ProviderPropertyListBytes writes a list of ProviderProperty values to a byte slice.
 | 
			
		||||
@@ -1309,7 +1309,6 @@ func RefreshRatesRead(buf []byte, v *RefreshRates) int {
 | 
			
		||||
		v.Rates[i] = xgb.Get16(buf[b:])
 | 
			
		||||
		b += 2
 | 
			
		||||
	}
 | 
			
		||||
	b = xgb.Pad(b)
 | 
			
		||||
 | 
			
		||||
	return b
 | 
			
		||||
}
 | 
			
		||||
@@ -1336,9 +1335,8 @@ func (v RefreshRates) Bytes() []byte {
 | 
			
		||||
		xgb.Put16(buf[b:], v.Rates[i])
 | 
			
		||||
		b += 2
 | 
			
		||||
	}
 | 
			
		||||
	b = xgb.Pad(b)
 | 
			
		||||
 | 
			
		||||
	return buf
 | 
			
		||||
	return buf[:b]
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// RefreshRatesListBytes writes a list of RefreshRates values to a byte slice.
 | 
			
		||||
@@ -1406,7 +1404,7 @@ func (v ResourceChange) Bytes() []byte {
 | 
			
		||||
 | 
			
		||||
	b += 20 // padding
 | 
			
		||||
 | 
			
		||||
	return buf
 | 
			
		||||
	return buf[:b]
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ResourceChangeListBytes writes a list of ResourceChange values to a byte slice.
 | 
			
		||||
@@ -1621,7 +1619,7 @@ func (v ScreenSize) Bytes() []byte {
 | 
			
		||||
	xgb.Put16(buf[b:], v.Mheight)
 | 
			
		||||
	b += 2
 | 
			
		||||
 | 
			
		||||
	return buf
 | 
			
		||||
	return buf[:b]
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ScreenSizeListBytes writes a list of ScreenSize values to a byte slice.
 | 
			
		||||
@@ -1802,7 +1800,7 @@ func changeOutputPropertyRequest(c *xgb.Conn, Output Output, Property xproto.Ato
 | 
			
		||||
	b += 4
 | 
			
		||||
 | 
			
		||||
	copy(buf[b:], Data[:((int(NumUnits)*int(Format))/8)])
 | 
			
		||||
	b += xgb.Pad(int(((int(NumUnits) * int(Format)) / 8)))
 | 
			
		||||
	b += int(((int(NumUnits) * int(Format)) / 8))
 | 
			
		||||
 | 
			
		||||
	return buf
 | 
			
		||||
}
 | 
			
		||||
@@ -1877,7 +1875,7 @@ func changeProviderPropertyRequest(c *xgb.Conn, Provider Provider, Property xpro
 | 
			
		||||
	b += 4
 | 
			
		||||
 | 
			
		||||
	copy(buf[b:], Data[:(int(NumItems)*(int(Format)/8))])
 | 
			
		||||
	b += xgb.Pad(int((int(NumItems) * (int(Format) / 8))))
 | 
			
		||||
	b += int((int(NumItems) * (int(Format) / 8)))
 | 
			
		||||
 | 
			
		||||
	return buf
 | 
			
		||||
}
 | 
			
		||||
@@ -1957,7 +1955,6 @@ func configureOutputPropertyRequest(c *xgb.Conn, Output Output, Property xproto.
 | 
			
		||||
		xgb.Put32(buf[b:], uint32(Values[i]))
 | 
			
		||||
		b += 4
 | 
			
		||||
	}
 | 
			
		||||
	b = xgb.Pad(b)
 | 
			
		||||
 | 
			
		||||
	return buf
 | 
			
		||||
}
 | 
			
		||||
@@ -2037,7 +2034,6 @@ func configureProviderPropertyRequest(c *xgb.Conn, Provider Provider, Property x
 | 
			
		||||
		xgb.Put32(buf[b:], uint32(Values[i]))
 | 
			
		||||
		b += 4
 | 
			
		||||
	}
 | 
			
		||||
	b = xgb.Pad(b)
 | 
			
		||||
 | 
			
		||||
	return buf
 | 
			
		||||
}
 | 
			
		||||
@@ -2137,7 +2133,7 @@ func createModeRequest(c *xgb.Conn, Window xproto.Window, ModeInfo ModeInfo, Nam
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	copy(buf[b:], Name[:len(Name)])
 | 
			
		||||
	b += xgb.Pad(int(len(Name)))
 | 
			
		||||
	b += int(len(Name))
 | 
			
		||||
 | 
			
		||||
	return buf
 | 
			
		||||
}
 | 
			
		||||
@@ -2405,9 +2401,11 @@ type GetCrtcGammaReply struct {
 | 
			
		||||
	// padding: 1 bytes
 | 
			
		||||
	Size uint16
 | 
			
		||||
	// padding: 22 bytes
 | 
			
		||||
	Red   []uint16 // size: xgb.Pad((int(Size) * 2))
 | 
			
		||||
	Red []uint16 // size: xgb.Pad((int(Size) * 2))
 | 
			
		||||
	// alignment gap to multiple of 2
 | 
			
		||||
	Green []uint16 // size: xgb.Pad((int(Size) * 2))
 | 
			
		||||
	Blue  []uint16 // size: xgb.Pad((int(Size) * 2))
 | 
			
		||||
	// alignment gap to multiple of 2
 | 
			
		||||
	Blue []uint16 // size: xgb.Pad((int(Size) * 2))
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Reply blocks and returns the reply data for a GetCrtcGamma request.
 | 
			
		||||
@@ -2445,21 +2443,22 @@ func getCrtcGammaReply(buf []byte) *GetCrtcGammaReply {
 | 
			
		||||
		v.Red[i] = xgb.Get16(buf[b:])
 | 
			
		||||
		b += 2
 | 
			
		||||
	}
 | 
			
		||||
	b = xgb.Pad(b)
 | 
			
		||||
 | 
			
		||||
	b = (b + 1) & ^1 // alignment gap
 | 
			
		||||
 | 
			
		||||
	v.Green = make([]uint16, v.Size)
 | 
			
		||||
	for i := 0; i < int(v.Size); i++ {
 | 
			
		||||
		v.Green[i] = xgb.Get16(buf[b:])
 | 
			
		||||
		b += 2
 | 
			
		||||
	}
 | 
			
		||||
	b = xgb.Pad(b)
 | 
			
		||||
 | 
			
		||||
	b = (b + 1) & ^1 // alignment gap
 | 
			
		||||
 | 
			
		||||
	v.Blue = make([]uint16, v.Size)
 | 
			
		||||
	for i := 0; i < int(v.Size); i++ {
 | 
			
		||||
		v.Blue[i] = xgb.Get16(buf[b:])
 | 
			
		||||
		b += 2
 | 
			
		||||
	}
 | 
			
		||||
	b = xgb.Pad(b)
 | 
			
		||||
 | 
			
		||||
	return v
 | 
			
		||||
}
 | 
			
		||||
@@ -2620,7 +2619,8 @@ type GetCrtcInfoReply struct {
 | 
			
		||||
	NumOutputs         uint16
 | 
			
		||||
	NumPossibleOutputs uint16
 | 
			
		||||
	Outputs            []Output // size: xgb.Pad((int(NumOutputs) * 4))
 | 
			
		||||
	Possible           []Output // size: xgb.Pad((int(NumPossibleOutputs) * 4))
 | 
			
		||||
	// alignment gap to multiple of 4
 | 
			
		||||
	Possible []Output // size: xgb.Pad((int(NumPossibleOutputs) * 4))
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Reply blocks and returns the reply data for a GetCrtcInfo request.
 | 
			
		||||
@@ -2684,14 +2684,14 @@ func getCrtcInfoReply(buf []byte) *GetCrtcInfoReply {
 | 
			
		||||
		v.Outputs[i] = Output(xgb.Get32(buf[b:]))
 | 
			
		||||
		b += 4
 | 
			
		||||
	}
 | 
			
		||||
	b = xgb.Pad(b)
 | 
			
		||||
 | 
			
		||||
	b = (b + 3) & ^3 // alignment gap
 | 
			
		||||
 | 
			
		||||
	v.Possible = make([]Output, v.NumPossibleOutputs)
 | 
			
		||||
	for i := 0; i < int(v.NumPossibleOutputs); i++ {
 | 
			
		||||
		v.Possible[i] = Output(xgb.Get32(buf[b:]))
 | 
			
		||||
		b += 4
 | 
			
		||||
	}
 | 
			
		||||
	b = xgb.Pad(b)
 | 
			
		||||
 | 
			
		||||
	return v
 | 
			
		||||
}
 | 
			
		||||
@@ -2762,10 +2762,12 @@ type GetCrtcTransformReply struct {
 | 
			
		||||
	PendingNparams    uint16
 | 
			
		||||
	CurrentLen        uint16
 | 
			
		||||
	CurrentNparams    uint16
 | 
			
		||||
	PendingFilterName string         // size: xgb.Pad((int(PendingLen) * 1))
 | 
			
		||||
	PendingFilterName string // size: xgb.Pad((int(PendingLen) * 1))
 | 
			
		||||
	// alignment gap to multiple of 4
 | 
			
		||||
	PendingParams     []render.Fixed // size: xgb.Pad((int(PendingNparams) * 4))
 | 
			
		||||
	CurrentFilterName string         // size: xgb.Pad((int(CurrentLen) * 1))
 | 
			
		||||
	CurrentParams     []render.Fixed // size: xgb.Pad((int(CurrentNparams) * 4))
 | 
			
		||||
	// alignment gap to multiple of 4
 | 
			
		||||
	CurrentParams []render.Fixed // size: xgb.Pad((int(CurrentNparams) * 4))
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Reply blocks and returns the reply data for a GetCrtcTransform request.
 | 
			
		||||
@@ -2829,12 +2831,13 @@ func getCrtcTransformReply(buf []byte) *GetCrtcTransformReply {
 | 
			
		||||
		b += int(v.PendingLen)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	b = (b + 3) & ^3 // alignment gap
 | 
			
		||||
 | 
			
		||||
	v.PendingParams = make([]render.Fixed, v.PendingNparams)
 | 
			
		||||
	for i := 0; i < int(v.PendingNparams); i++ {
 | 
			
		||||
		v.PendingParams[i] = render.Fixed(xgb.Get32(buf[b:]))
 | 
			
		||||
		b += 4
 | 
			
		||||
	}
 | 
			
		||||
	b = xgb.Pad(b)
 | 
			
		||||
 | 
			
		||||
	{
 | 
			
		||||
		byteString := make([]byte, v.CurrentLen)
 | 
			
		||||
@@ -2843,12 +2846,13 @@ func getCrtcTransformReply(buf []byte) *GetCrtcTransformReply {
 | 
			
		||||
		b += int(v.CurrentLen)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	b = (b + 3) & ^3 // alignment gap
 | 
			
		||||
 | 
			
		||||
	v.CurrentParams = make([]render.Fixed, v.CurrentNparams)
 | 
			
		||||
	for i := 0; i < int(v.CurrentNparams); i++ {
 | 
			
		||||
		v.CurrentParams[i] = render.Fixed(xgb.Get32(buf[b:]))
 | 
			
		||||
		b += 4
 | 
			
		||||
	}
 | 
			
		||||
	b = xgb.Pad(b)
 | 
			
		||||
 | 
			
		||||
	return v
 | 
			
		||||
}
 | 
			
		||||
@@ -2918,10 +2922,12 @@ type GetOutputInfoReply struct {
 | 
			
		||||
	NumPreferred  uint16
 | 
			
		||||
	NumClones     uint16
 | 
			
		||||
	NameLen       uint16
 | 
			
		||||
	Crtcs         []Crtc   // size: xgb.Pad((int(NumCrtcs) * 4))
 | 
			
		||||
	Modes         []Mode   // size: xgb.Pad((int(NumModes) * 4))
 | 
			
		||||
	Clones        []Output // size: xgb.Pad((int(NumClones) * 4))
 | 
			
		||||
	Name          []byte   // size: xgb.Pad((int(NameLen) * 1))
 | 
			
		||||
	Crtcs         []Crtc // size: xgb.Pad((int(NumCrtcs) * 4))
 | 
			
		||||
	// alignment gap to multiple of 4
 | 
			
		||||
	Modes []Mode // size: xgb.Pad((int(NumModes) * 4))
 | 
			
		||||
	// alignment gap to multiple of 4
 | 
			
		||||
	Clones []Output // size: xgb.Pad((int(NumClones) * 4))
 | 
			
		||||
	Name   []byte   // size: xgb.Pad((int(NameLen) * 1))
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Reply blocks and returns the reply data for a GetOutputInfo request.
 | 
			
		||||
@@ -2988,25 +2994,26 @@ func getOutputInfoReply(buf []byte) *GetOutputInfoReply {
 | 
			
		||||
		v.Crtcs[i] = Crtc(xgb.Get32(buf[b:]))
 | 
			
		||||
		b += 4
 | 
			
		||||
	}
 | 
			
		||||
	b = xgb.Pad(b)
 | 
			
		||||
 | 
			
		||||
	b = (b + 3) & ^3 // alignment gap
 | 
			
		||||
 | 
			
		||||
	v.Modes = make([]Mode, v.NumModes)
 | 
			
		||||
	for i := 0; i < int(v.NumModes); i++ {
 | 
			
		||||
		v.Modes[i] = Mode(xgb.Get32(buf[b:]))
 | 
			
		||||
		b += 4
 | 
			
		||||
	}
 | 
			
		||||
	b = xgb.Pad(b)
 | 
			
		||||
 | 
			
		||||
	b = (b + 3) & ^3 // alignment gap
 | 
			
		||||
 | 
			
		||||
	v.Clones = make([]Output, v.NumClones)
 | 
			
		||||
	for i := 0; i < int(v.NumClones); i++ {
 | 
			
		||||
		v.Clones[i] = Output(xgb.Get32(buf[b:]))
 | 
			
		||||
		b += 4
 | 
			
		||||
	}
 | 
			
		||||
	b = xgb.Pad(b)
 | 
			
		||||
 | 
			
		||||
	v.Name = make([]byte, v.NameLen)
 | 
			
		||||
	copy(v.Name[:v.NameLen], buf[b:])
 | 
			
		||||
	b += xgb.Pad(int(v.NameLen))
 | 
			
		||||
	b += int(v.NameLen)
 | 
			
		||||
 | 
			
		||||
	return v
 | 
			
		||||
}
 | 
			
		||||
@@ -3202,7 +3209,7 @@ func getOutputPropertyReply(buf []byte) *GetOutputPropertyReply {
 | 
			
		||||
 | 
			
		||||
	v.Data = make([]byte, (int(v.NumItems) * (int(v.Format) / 8)))
 | 
			
		||||
	copy(v.Data[:(int(v.NumItems)*(int(v.Format)/8))], buf[b:])
 | 
			
		||||
	b += xgb.Pad(int((int(v.NumItems) * (int(v.Format) / 8))))
 | 
			
		||||
	b += int((int(v.NumItems) * (int(v.Format) / 8)))
 | 
			
		||||
 | 
			
		||||
	return v
 | 
			
		||||
}
 | 
			
		||||
@@ -3433,11 +3440,14 @@ type GetProviderInfoReply struct {
 | 
			
		||||
	NumAssociatedProviders uint16
 | 
			
		||||
	NameLen                uint16
 | 
			
		||||
	// padding: 8 bytes
 | 
			
		||||
	Crtcs                []Crtc     // size: xgb.Pad((int(NumCrtcs) * 4))
 | 
			
		||||
	Outputs              []Output   // size: xgb.Pad((int(NumOutputs) * 4))
 | 
			
		||||
	AssociatedProviders  []Provider // size: xgb.Pad((int(NumAssociatedProviders) * 4))
 | 
			
		||||
	AssociatedCapability []uint32   // size: xgb.Pad((int(NumAssociatedProviders) * 4))
 | 
			
		||||
	Name                 string     // size: xgb.Pad((int(NameLen) * 1))
 | 
			
		||||
	Crtcs []Crtc // size: xgb.Pad((int(NumCrtcs) * 4))
 | 
			
		||||
	// alignment gap to multiple of 4
 | 
			
		||||
	Outputs []Output // size: xgb.Pad((int(NumOutputs) * 4))
 | 
			
		||||
	// alignment gap to multiple of 4
 | 
			
		||||
	AssociatedProviders []Provider // size: xgb.Pad((int(NumAssociatedProviders) * 4))
 | 
			
		||||
	// alignment gap to multiple of 4
 | 
			
		||||
	AssociatedCapability []uint32 // size: xgb.Pad((int(NumAssociatedProviders) * 4))
 | 
			
		||||
	Name                 string   // size: xgb.Pad((int(NameLen) * 1))
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Reply blocks and returns the reply data for a GetProviderInfo request.
 | 
			
		||||
@@ -3491,28 +3501,30 @@ func getProviderInfoReply(buf []byte) *GetProviderInfoReply {
 | 
			
		||||
		v.Crtcs[i] = Crtc(xgb.Get32(buf[b:]))
 | 
			
		||||
		b += 4
 | 
			
		||||
	}
 | 
			
		||||
	b = xgb.Pad(b)
 | 
			
		||||
 | 
			
		||||
	b = (b + 3) & ^3 // alignment gap
 | 
			
		||||
 | 
			
		||||
	v.Outputs = make([]Output, v.NumOutputs)
 | 
			
		||||
	for i := 0; i < int(v.NumOutputs); i++ {
 | 
			
		||||
		v.Outputs[i] = Output(xgb.Get32(buf[b:]))
 | 
			
		||||
		b += 4
 | 
			
		||||
	}
 | 
			
		||||
	b = xgb.Pad(b)
 | 
			
		||||
 | 
			
		||||
	b = (b + 3) & ^3 // alignment gap
 | 
			
		||||
 | 
			
		||||
	v.AssociatedProviders = make([]Provider, v.NumAssociatedProviders)
 | 
			
		||||
	for i := 0; i < int(v.NumAssociatedProviders); i++ {
 | 
			
		||||
		v.AssociatedProviders[i] = Provider(xgb.Get32(buf[b:]))
 | 
			
		||||
		b += 4
 | 
			
		||||
	}
 | 
			
		||||
	b = xgb.Pad(b)
 | 
			
		||||
 | 
			
		||||
	b = (b + 3) & ^3 // alignment gap
 | 
			
		||||
 | 
			
		||||
	v.AssociatedCapability = make([]uint32, v.NumAssociatedProviders)
 | 
			
		||||
	for i := 0; i < int(v.NumAssociatedProviders); i++ {
 | 
			
		||||
		v.AssociatedCapability[i] = xgb.Get32(buf[b:])
 | 
			
		||||
		b += 4
 | 
			
		||||
	}
 | 
			
		||||
	b = xgb.Pad(b)
 | 
			
		||||
 | 
			
		||||
	{
 | 
			
		||||
		byteString := make([]byte, v.NameLen)
 | 
			
		||||
@@ -3627,7 +3639,7 @@ func getProviderPropertyReply(buf []byte) *GetProviderPropertyReply {
 | 
			
		||||
 | 
			
		||||
	v.Data = make([]byte, (int(v.NumItems) * (int(v.Format) / 8)))
 | 
			
		||||
	copy(v.Data[:(int(v.NumItems)*(int(v.Format)/8))], buf[b:])
 | 
			
		||||
	b += xgb.Pad(int((int(v.NumItems) * (int(v.Format) / 8))))
 | 
			
		||||
	b += int((int(v.NumItems) * (int(v.Format) / 8)))
 | 
			
		||||
 | 
			
		||||
	return v
 | 
			
		||||
}
 | 
			
		||||
@@ -3758,7 +3770,6 @@ func getProvidersReply(buf []byte) *GetProvidersReply {
 | 
			
		||||
		v.Providers[i] = Provider(xgb.Get32(buf[b:]))
 | 
			
		||||
		b += 4
 | 
			
		||||
	}
 | 
			
		||||
	b = xgb.Pad(b)
 | 
			
		||||
 | 
			
		||||
	return v
 | 
			
		||||
}
 | 
			
		||||
@@ -3826,7 +3837,8 @@ type GetScreenInfoReply struct {
 | 
			
		||||
	Rate            uint16
 | 
			
		||||
	NInfo           uint16
 | 
			
		||||
	// padding: 2 bytes
 | 
			
		||||
	Sizes []ScreenSize   // size: xgb.Pad((int(NSizes) * 8))
 | 
			
		||||
	Sizes []ScreenSize // size: xgb.Pad((int(NSizes) * 8))
 | 
			
		||||
	// alignment gap to multiple of 2
 | 
			
		||||
	Rates []RefreshRates // size: RefreshRatesListSize(Rates)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -3885,6 +3897,8 @@ func getScreenInfoReply(buf []byte) *GetScreenInfoReply {
 | 
			
		||||
	v.Sizes = make([]ScreenSize, v.NSizes)
 | 
			
		||||
	b += ScreenSizeReadList(buf[b:], v.Sizes)
 | 
			
		||||
 | 
			
		||||
	b = (b + 1) & ^1 // alignment gap
 | 
			
		||||
 | 
			
		||||
	v.Rates = make([]RefreshRates, (int(v.NInfo) - int(v.NSizes)))
 | 
			
		||||
	b += RefreshRatesReadList(buf[b:], v.Rates)
 | 
			
		||||
 | 
			
		||||
@@ -3952,10 +3966,12 @@ type GetScreenResourcesReply struct {
 | 
			
		||||
	NumModes        uint16
 | 
			
		||||
	NamesLen        uint16
 | 
			
		||||
	// padding: 8 bytes
 | 
			
		||||
	Crtcs   []Crtc     // size: xgb.Pad((int(NumCrtcs) * 4))
 | 
			
		||||
	Outputs []Output   // size: xgb.Pad((int(NumOutputs) * 4))
 | 
			
		||||
	Modes   []ModeInfo // size: xgb.Pad((int(NumModes) * 32))
 | 
			
		||||
	Names   []byte     // size: xgb.Pad((int(NamesLen) * 1))
 | 
			
		||||
	Crtcs []Crtc // size: xgb.Pad((int(NumCrtcs) * 4))
 | 
			
		||||
	// alignment gap to multiple of 4
 | 
			
		||||
	Outputs []Output // size: xgb.Pad((int(NumOutputs) * 4))
 | 
			
		||||
	// alignment gap to multiple of 4
 | 
			
		||||
	Modes []ModeInfo // size: xgb.Pad((int(NumModes) * 32))
 | 
			
		||||
	Names []byte     // size: xgb.Pad((int(NamesLen) * 1))
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Reply blocks and returns the reply data for a GetScreenResources request.
 | 
			
		||||
@@ -4008,21 +4024,23 @@ func getScreenResourcesReply(buf []byte) *GetScreenResourcesReply {
 | 
			
		||||
		v.Crtcs[i] = Crtc(xgb.Get32(buf[b:]))
 | 
			
		||||
		b += 4
 | 
			
		||||
	}
 | 
			
		||||
	b = xgb.Pad(b)
 | 
			
		||||
 | 
			
		||||
	b = (b + 3) & ^3 // alignment gap
 | 
			
		||||
 | 
			
		||||
	v.Outputs = make([]Output, v.NumOutputs)
 | 
			
		||||
	for i := 0; i < int(v.NumOutputs); i++ {
 | 
			
		||||
		v.Outputs[i] = Output(xgb.Get32(buf[b:]))
 | 
			
		||||
		b += 4
 | 
			
		||||
	}
 | 
			
		||||
	b = xgb.Pad(b)
 | 
			
		||||
 | 
			
		||||
	b = (b + 3) & ^3 // alignment gap
 | 
			
		||||
 | 
			
		||||
	v.Modes = make([]ModeInfo, v.NumModes)
 | 
			
		||||
	b += ModeInfoReadList(buf[b:], v.Modes)
 | 
			
		||||
 | 
			
		||||
	v.Names = make([]byte, v.NamesLen)
 | 
			
		||||
	copy(v.Names[:v.NamesLen], buf[b:])
 | 
			
		||||
	b += xgb.Pad(int(v.NamesLen))
 | 
			
		||||
	b += int(v.NamesLen)
 | 
			
		||||
 | 
			
		||||
	return v
 | 
			
		||||
}
 | 
			
		||||
@@ -4088,10 +4106,12 @@ type GetScreenResourcesCurrentReply struct {
 | 
			
		||||
	NumModes        uint16
 | 
			
		||||
	NamesLen        uint16
 | 
			
		||||
	// padding: 8 bytes
 | 
			
		||||
	Crtcs   []Crtc     // size: xgb.Pad((int(NumCrtcs) * 4))
 | 
			
		||||
	Outputs []Output   // size: xgb.Pad((int(NumOutputs) * 4))
 | 
			
		||||
	Modes   []ModeInfo // size: xgb.Pad((int(NumModes) * 32))
 | 
			
		||||
	Names   []byte     // size: xgb.Pad((int(NamesLen) * 1))
 | 
			
		||||
	Crtcs []Crtc // size: xgb.Pad((int(NumCrtcs) * 4))
 | 
			
		||||
	// alignment gap to multiple of 4
 | 
			
		||||
	Outputs []Output // size: xgb.Pad((int(NumOutputs) * 4))
 | 
			
		||||
	// alignment gap to multiple of 4
 | 
			
		||||
	Modes []ModeInfo // size: xgb.Pad((int(NumModes) * 32))
 | 
			
		||||
	Names []byte     // size: xgb.Pad((int(NamesLen) * 1))
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Reply blocks and returns the reply data for a GetScreenResourcesCurrent request.
 | 
			
		||||
@@ -4144,21 +4164,23 @@ func getScreenResourcesCurrentReply(buf []byte) *GetScreenResourcesCurrentReply
 | 
			
		||||
		v.Crtcs[i] = Crtc(xgb.Get32(buf[b:]))
 | 
			
		||||
		b += 4
 | 
			
		||||
	}
 | 
			
		||||
	b = xgb.Pad(b)
 | 
			
		||||
 | 
			
		||||
	b = (b + 3) & ^3 // alignment gap
 | 
			
		||||
 | 
			
		||||
	v.Outputs = make([]Output, v.NumOutputs)
 | 
			
		||||
	for i := 0; i < int(v.NumOutputs); i++ {
 | 
			
		||||
		v.Outputs[i] = Output(xgb.Get32(buf[b:]))
 | 
			
		||||
		b += 4
 | 
			
		||||
	}
 | 
			
		||||
	b = xgb.Pad(b)
 | 
			
		||||
 | 
			
		||||
	b = (b + 3) & ^3 // alignment gap
 | 
			
		||||
 | 
			
		||||
	v.Modes = make([]ModeInfo, v.NumModes)
 | 
			
		||||
	b += ModeInfoReadList(buf[b:], v.Modes)
 | 
			
		||||
 | 
			
		||||
	v.Names = make([]byte, v.NamesLen)
 | 
			
		||||
	copy(v.Names[:v.NamesLen], buf[b:])
 | 
			
		||||
	b += xgb.Pad(int(v.NamesLen))
 | 
			
		||||
	b += int(v.NamesLen)
 | 
			
		||||
 | 
			
		||||
	return v
 | 
			
		||||
}
 | 
			
		||||
@@ -4360,7 +4382,6 @@ func listOutputPropertiesReply(buf []byte) *ListOutputPropertiesReply {
 | 
			
		||||
		v.Atoms[i] = xproto.Atom(xgb.Get32(buf[b:]))
 | 
			
		||||
		b += 4
 | 
			
		||||
	}
 | 
			
		||||
	b = xgb.Pad(b)
 | 
			
		||||
 | 
			
		||||
	return v
 | 
			
		||||
}
 | 
			
		||||
@@ -4459,7 +4480,6 @@ func listProviderPropertiesReply(buf []byte) *ListProviderPropertiesReply {
 | 
			
		||||
		v.Atoms[i] = xproto.Atom(xgb.Get32(buf[b:]))
 | 
			
		||||
		b += 4
 | 
			
		||||
	}
 | 
			
		||||
	b = xgb.Pad(b)
 | 
			
		||||
 | 
			
		||||
	return v
 | 
			
		||||
}
 | 
			
		||||
@@ -4578,7 +4598,6 @@ func queryOutputPropertyReply(buf []byte) *QueryOutputPropertyReply {
 | 
			
		||||
		v.ValidValues[i] = int32(xgb.Get32(buf[b:]))
 | 
			
		||||
		b += 4
 | 
			
		||||
	}
 | 
			
		||||
	b = xgb.Pad(b)
 | 
			
		||||
 | 
			
		||||
	return v
 | 
			
		||||
}
 | 
			
		||||
@@ -4700,7 +4719,6 @@ func queryProviderPropertyReply(buf []byte) *QueryProviderPropertyReply {
 | 
			
		||||
		v.ValidValues[i] = int32(xgb.Get32(buf[b:]))
 | 
			
		||||
		b += 4
 | 
			
		||||
	}
 | 
			
		||||
	b = xgb.Pad(b)
 | 
			
		||||
 | 
			
		||||
	return v
 | 
			
		||||
}
 | 
			
		||||
@@ -5001,7 +5019,6 @@ func setCrtcConfigRequest(c *xgb.Conn, Crtc Crtc, Timestamp xproto.Timestamp, Co
 | 
			
		||||
		xgb.Put32(buf[b:], uint32(Outputs[i]))
 | 
			
		||||
		b += 4
 | 
			
		||||
	}
 | 
			
		||||
	b = xgb.Pad(b)
 | 
			
		||||
 | 
			
		||||
	return buf
 | 
			
		||||
}
 | 
			
		||||
@@ -5042,7 +5059,7 @@ func (cook SetCrtcGammaCookie) Check() error {
 | 
			
		||||
// Write request to wire for SetCrtcGamma
 | 
			
		||||
// setCrtcGammaRequest writes a SetCrtcGamma request to a byte slice.
 | 
			
		||||
func setCrtcGammaRequest(c *xgb.Conn, Crtc Crtc, Size uint16, Red []uint16, Green []uint16, Blue []uint16) []byte {
 | 
			
		||||
	size := xgb.Pad((((12 + xgb.Pad((int(Size) * 2))) + xgb.Pad((int(Size) * 2))) + xgb.Pad((int(Size) * 2))))
 | 
			
		||||
	size := xgb.Pad((((((12 + xgb.Pad((int(Size) * 2))) + 2) + xgb.Pad((int(Size) * 2))) + 2) + xgb.Pad((int(Size) * 2))))
 | 
			
		||||
	b := 0
 | 
			
		||||
	buf := make([]byte, size)
 | 
			
		||||
 | 
			
		||||
@@ -5052,7 +5069,7 @@ func setCrtcGammaRequest(c *xgb.Conn, Crtc Crtc, Size uint16, Red []uint16, Gree
 | 
			
		||||
	buf[b] = 24 // request opcode
 | 
			
		||||
	b += 1
 | 
			
		||||
 | 
			
		||||
	xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
 | 
			
		||||
	blen := b
 | 
			
		||||
	b += 2
 | 
			
		||||
 | 
			
		||||
	xgb.Put32(buf[b:], uint32(Crtc))
 | 
			
		||||
@@ -5067,21 +5084,24 @@ func setCrtcGammaRequest(c *xgb.Conn, Crtc Crtc, Size uint16, Red []uint16, Gree
 | 
			
		||||
		xgb.Put16(buf[b:], Red[i])
 | 
			
		||||
		b += 2
 | 
			
		||||
	}
 | 
			
		||||
	b = xgb.Pad(b)
 | 
			
		||||
 | 
			
		||||
	b = (b + 1) & ^1 // alignment gap
 | 
			
		||||
 | 
			
		||||
	for i := 0; i < int(Size); i++ {
 | 
			
		||||
		xgb.Put16(buf[b:], Green[i])
 | 
			
		||||
		b += 2
 | 
			
		||||
	}
 | 
			
		||||
	b = xgb.Pad(b)
 | 
			
		||||
 | 
			
		||||
	b = (b + 1) & ^1 // alignment gap
 | 
			
		||||
 | 
			
		||||
	for i := 0; i < int(Size); i++ {
 | 
			
		||||
		xgb.Put16(buf[b:], Blue[i])
 | 
			
		||||
		b += 2
 | 
			
		||||
	}
 | 
			
		||||
	b = xgb.Pad(b)
 | 
			
		||||
 | 
			
		||||
	return buf
 | 
			
		||||
	b = xgb.Pad(b)
 | 
			
		||||
	xgb.Put16(buf[blen:], uint16(b/4)) // write request size in 4-byte units
 | 
			
		||||
	return buf[:b]
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// SetCrtcTransformCookie is a cookie used only for SetCrtcTransform requests.
 | 
			
		||||
@@ -5120,7 +5140,7 @@ func (cook SetCrtcTransformCookie) Check() error {
 | 
			
		||||
// Write request to wire for SetCrtcTransform
 | 
			
		||||
// setCrtcTransformRequest writes a SetCrtcTransform request to a byte slice.
 | 
			
		||||
func setCrtcTransformRequest(c *xgb.Conn, Crtc Crtc, Transform render.Transform, FilterLen uint16, FilterName string, FilterParams []render.Fixed) []byte {
 | 
			
		||||
	size := xgb.Pad(((48 + xgb.Pad((int(FilterLen) * 1))) + xgb.Pad((len(FilterParams) * 4))))
 | 
			
		||||
	size := xgb.Pad((((48 + xgb.Pad((int(FilterLen) * 1))) + 4) + xgb.Pad((len(FilterParams) * 4))))
 | 
			
		||||
	b := 0
 | 
			
		||||
	buf := make([]byte, size)
 | 
			
		||||
 | 
			
		||||
@@ -5130,7 +5150,7 @@ func setCrtcTransformRequest(c *xgb.Conn, Crtc Crtc, Transform render.Transform,
 | 
			
		||||
	buf[b] = 26 // request opcode
 | 
			
		||||
	b += 1
 | 
			
		||||
 | 
			
		||||
	xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
 | 
			
		||||
	blen := b
 | 
			
		||||
	b += 2
 | 
			
		||||
 | 
			
		||||
	xgb.Put32(buf[b:], uint32(Crtc))
 | 
			
		||||
@@ -5148,15 +5168,18 @@ func setCrtcTransformRequest(c *xgb.Conn, Crtc Crtc, Transform render.Transform,
 | 
			
		||||
	b += 2 // padding
 | 
			
		||||
 | 
			
		||||
	copy(buf[b:], FilterName[:FilterLen])
 | 
			
		||||
	b += xgb.Pad(int(FilterLen))
 | 
			
		||||
	b += int(FilterLen)
 | 
			
		||||
 | 
			
		||||
	b = (b + 3) & ^3 // alignment gap
 | 
			
		||||
 | 
			
		||||
	for i := 0; i < int(len(FilterParams)); i++ {
 | 
			
		||||
		xgb.Put32(buf[b:], uint32(FilterParams[i]))
 | 
			
		||||
		b += 4
 | 
			
		||||
	}
 | 
			
		||||
	b = xgb.Pad(b)
 | 
			
		||||
 | 
			
		||||
	return buf
 | 
			
		||||
	b = xgb.Pad(b)
 | 
			
		||||
	xgb.Put16(buf[blen:], uint16(b/4)) // write request size in 4-byte units
 | 
			
		||||
	return buf[:b]
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// SetOutputPrimaryCookie is a cookie used only for SetOutputPrimary requests.
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user