From 13d598e5e7f26bc6177ae3f7d52f4f19729ab2f3 Mon Sep 17 00:00:00 2001 From: "Andrew Gallant (Ocelot)" Date: Mon, 7 May 2012 21:58:33 -0400 Subject: more clean up. use log instead of fmt.Print to stderr. bug fix for event blocking (a hack fix for now). --- nexgb/Makefile | 6 ++- nexgb/README | 3 ++ nexgb/auto_bigreq.go | 28 ++++++----- nexgb/auto_composite.go | 12 +++-- nexgb/auto_damage.go | 26 ++++++----- nexgb/auto_dpms.go | 8 +++- nexgb/auto_dri2.go | 12 +++-- nexgb/auto_ge.go | 16 ++++--- nexgb/auto_glx.go | 58 ++++++++++++----------- nexgb/auto_randr.go | 18 ++++--- nexgb/auto_record.go | 30 ++++++------ nexgb/auto_render.go | 30 ++++++------ nexgb/auto_res.go | 24 ++++++---- nexgb/auto_screensaver.go | 28 ++++++----- nexgb/auto_shape.go | 20 ++++---- nexgb/auto_shm.go | 22 +++++---- nexgb/auto_sync.go | 32 +++++++------ nexgb/auto_xc_misc.go | 16 ++++--- nexgb/auto_xevie.go | 12 +++-- nexgb/auto_xf86dri.go | 8 +++- nexgb/auto_xf86vidmode.go | 42 +++++++++-------- nexgb/auto_xfixes.go | 34 ++++++++------ nexgb/auto_xinerama.go | 12 +++-- nexgb/auto_xinput.go | 38 ++++++++------- nexgb/auto_xprint.go | 12 +++-- nexgb/auto_xproto.go | 14 +++--- nexgb/auto_xselinux.go | 16 ++++--- nexgb/auto_xtest.go | 12 +++-- nexgb/auto_xv.go | 26 ++++++----- nexgb/auto_xvmc.go | 12 +++-- nexgb/xgb.go | 117 ++++++++++++++++++++++++++++------------------ nexgb/xgb_help.go | 7 ++- nexgb/xgb_test.go | 18 +++++++ nexgb/xgbgen/context.go | 7 ++- nexgb/xgbgen/go_error.go | 14 +++++- 35 files changed, 481 insertions(+), 309 deletions(-) diff --git a/nexgb/Makefile b/nexgb/Makefile index 7ba1cb4..56738f4 100644 --- a/nexgb/Makefile +++ b/nexgb/Makefile @@ -5,13 +5,17 @@ XPROTO=/usr/share/xcb # All of the XML files in my /usr/share/xcb directory EXCEPT XKB. -_- -all: bigreq.xml composite.xml damage.xml dpms.xml dri2.xml \ +all: build-xgbgen \ + bigreq.xml composite.xml damage.xml dpms.xml dri2.xml \ ge.xml glx.xml randr.xml record.xml render.xml res.xml \ screensaver.xml shape.xml shm.xml sync.xml xc_misc.xml \ xevie.xml xf86dri.xml xf86vidmode.xml xfixes.xml xinerama.xml \ xinput.xml xprint.xml xproto.xml xselinux.xml xtest.xml \ xvmc.xml xv.xml +build-xgbgen: + (cd xgbgen && go build) + %.xml: xgbgen/xgbgen --proto-path $(XPROTO) $(XPROTO)/$*.xml > auto_$*.go diff --git a/nexgb/README b/nexgb/README index f5862b1..22aded8 100644 --- a/nexgb/README +++ b/nexgb/README @@ -7,6 +7,9 @@ GOMAXPROCS > 1. (See the benchmarks in xgb_test.go for evidence.) Please see doc.go for more info. +Note that unless you know you need XGB, you can probably make your life +easier by using a slightly higher level library: xgbutil. + BurntSushi's Fork ================= I've forked the XGB repository from Google Code due to inactivty upstream. diff --git a/nexgb/auto_bigreq.go b/nexgb/auto_bigreq.go index 3389470..c1eb4d0 100644 --- a/nexgb/auto_bigreq.go +++ b/nexgb/auto_bigreq.go @@ -1,7 +1,7 @@ package xgb /* - This file was generated by bigreq.xml on May 6 2012 5:48:46pm EDT. + This file was generated by bigreq.xml on May 7 2012 9:17:56pm EDT. This file is automatically generated. Edit at your peril! */ @@ -12,7 +12,7 @@ func (c *Conn) BigreqInit() error { case err != nil: return err case !reply.Present: - return newError("No extension named BIG-REQUESTS could be found on on the server.") + return errorf("No extension named BIG-REQUESTS could be found on on the server.") } c.extLock.Lock() @@ -20,6 +20,9 @@ func (c *Conn) BigreqInit() error { for evNum, fun := range newExtEventFuncs["BIG-REQUESTS"] { newEventFuncs[int(reply.FirstEvent)+evNum] = fun } + for errNum, fun := range newExtErrorFuncs["BIG-REQUESTS"] { + newErrorFuncs[int(reply.FirstError)+errNum] = fun + } c.extLock.Unlock() return nil @@ -27,8 +30,19 @@ func (c *Conn) BigreqInit() error { func init() { newExtEventFuncs["BIG-REQUESTS"] = make(map[int]newEventFun) + newExtErrorFuncs["BIG-REQUESTS"] = make(map[int]newErrorFun) } +// Skipping definition for base type 'Card16' + +// Skipping definition for base type 'Char' + +// Skipping definition for base type 'Card32' + +// Skipping definition for base type 'Double' + +// Skipping definition for base type 'Bool' + // Skipping definition for base type 'Float' // Skipping definition for base type 'Id' @@ -45,16 +59,6 @@ func init() { // 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' - -// Skipping definition for base type 'Bool' - // Request BigreqEnable // size: 4 type BigreqEnableCookie struct { diff --git a/nexgb/auto_composite.go b/nexgb/auto_composite.go index aec15c9..4262468 100644 --- a/nexgb/auto_composite.go +++ b/nexgb/auto_composite.go @@ -1,7 +1,7 @@ package xgb /* - This file was generated by composite.xml on May 6 2012 5:48:46pm EDT. + This file was generated by composite.xml on May 7 2012 9:17:56pm EDT. This file is automatically generated. Edit at your peril! */ @@ -17,7 +17,7 @@ func (c *Conn) CompositeInit() error { case err != nil: return err case !reply.Present: - return newError("No extension named Composite could be found on on the server.") + return errorf("No extension named Composite could be found on on the server.") } c.extLock.Lock() @@ -25,6 +25,9 @@ func (c *Conn) CompositeInit() error { for evNum, fun := range newExtEventFuncs["Composite"] { newEventFuncs[int(reply.FirstEvent)+evNum] = fun } + for errNum, fun := range newExtErrorFuncs["Composite"] { + newErrorFuncs[int(reply.FirstError)+errNum] = fun + } c.extLock.Unlock() return nil @@ -32,8 +35,11 @@ func (c *Conn) CompositeInit() error { func init() { newExtEventFuncs["Composite"] = make(map[int]newEventFun) + newExtErrorFuncs["Composite"] = make(map[int]newErrorFun) } +// Skipping definition for base type 'Int32' + // Skipping definition for base type 'Void' // Skipping definition for base type 'Byte' @@ -58,8 +64,6 @@ func init() { // Skipping definition for base type 'Int16' -// Skipping definition for base type 'Int32' - const ( CompositeRedirectAutomatic = 0 CompositeRedirectManual = 1 diff --git a/nexgb/auto_damage.go b/nexgb/auto_damage.go index 8339e6a..c3d2734 100644 --- a/nexgb/auto_damage.go +++ b/nexgb/auto_damage.go @@ -1,7 +1,7 @@ package xgb /* - This file was generated by damage.xml on May 6 2012 5:48:47pm EDT. + This file was generated by damage.xml on May 7 2012 9:17:56pm EDT. This file is automatically generated. Edit at your peril! */ @@ -17,7 +17,7 @@ func (c *Conn) DamageInit() error { case err != nil: return err case !reply.Present: - return newError("No extension named DAMAGE could be found on on the server.") + return errorf("No extension named DAMAGE could be found on on the server.") } c.extLock.Lock() @@ -25,6 +25,9 @@ func (c *Conn) DamageInit() error { for evNum, fun := range newExtEventFuncs["DAMAGE"] { newEventFuncs[int(reply.FirstEvent)+evNum] = fun } + for errNum, fun := range newExtErrorFuncs["DAMAGE"] { + newErrorFuncs[int(reply.FirstError)+errNum] = fun + } c.extLock.Unlock() return nil @@ -32,8 +35,17 @@ func (c *Conn) DamageInit() error { func init() { newExtEventFuncs["DAMAGE"] = make(map[int]newEventFun) + newExtErrorFuncs["DAMAGE"] = make(map[int]newErrorFun) } +// Skipping definition for base type 'Card16' + +// Skipping definition for base type 'Char' + +// Skipping definition for base type 'Card32' + +// Skipping definition for base type 'Double' + // Skipping definition for base type 'Bool' // Skipping definition for base type 'Float' @@ -52,14 +64,6 @@ func init() { // 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' - const ( DamageReportLevelRawRectangles = 0 DamageReportLevelDeltaRectangles = 1 @@ -213,7 +217,7 @@ func (err DamageBadDamageError) Error() string { } func init() { - newErrorFuncs[0] = NewDamageBadDamageError + newExtErrorFuncs["DAMAGE"][0] = NewDamageBadDamageError } // Request DamageQueryVersion diff --git a/nexgb/auto_dpms.go b/nexgb/auto_dpms.go index eee6688..5200bfa 100644 --- a/nexgb/auto_dpms.go +++ b/nexgb/auto_dpms.go @@ -1,7 +1,7 @@ package xgb /* - This file was generated by dpms.xml on May 6 2012 5:48:47pm EDT. + This file was generated by dpms.xml on May 7 2012 9:17:56pm EDT. This file is automatically generated. Edit at your peril! */ @@ -12,7 +12,7 @@ func (c *Conn) DpmsInit() error { case err != nil: return err case !reply.Present: - return newError("No extension named DPMS could be found on on the server.") + return errorf("No extension named DPMS could be found on on the server.") } c.extLock.Lock() @@ -20,6 +20,9 @@ func (c *Conn) DpmsInit() error { for evNum, fun := range newExtEventFuncs["DPMS"] { newEventFuncs[int(reply.FirstEvent)+evNum] = fun } + for errNum, fun := range newExtErrorFuncs["DPMS"] { + newErrorFuncs[int(reply.FirstError)+errNum] = fun + } c.extLock.Unlock() return nil @@ -27,6 +30,7 @@ func (c *Conn) DpmsInit() error { func init() { newExtEventFuncs["DPMS"] = make(map[int]newEventFun) + newExtErrorFuncs["DPMS"] = make(map[int]newErrorFun) } // Skipping definition for base type 'Int32' diff --git a/nexgb/auto_dri2.go b/nexgb/auto_dri2.go index 0712891..68d6084 100644 --- a/nexgb/auto_dri2.go +++ b/nexgb/auto_dri2.go @@ -1,7 +1,7 @@ package xgb /* - This file was generated by dri2.xml on May 6 2012 5:48:47pm EDT. + This file was generated by dri2.xml on May 7 2012 9:17:56pm EDT. This file is automatically generated. Edit at your peril! */ @@ -16,7 +16,7 @@ func (c *Conn) Dri2Init() error { case err != nil: return err case !reply.Present: - return newError("No extension named DRI2 could be found on on the server.") + return errorf("No extension named DRI2 could be found on on the server.") } c.extLock.Lock() @@ -24,6 +24,9 @@ func (c *Conn) Dri2Init() error { for evNum, fun := range newExtEventFuncs["DRI2"] { newEventFuncs[int(reply.FirstEvent)+evNum] = fun } + for errNum, fun := range newExtErrorFuncs["DRI2"] { + newErrorFuncs[int(reply.FirstError)+errNum] = fun + } c.extLock.Unlock() return nil @@ -31,10 +34,9 @@ func (c *Conn) Dri2Init() error { func init() { newExtEventFuncs["DRI2"] = make(map[int]newEventFun) + newExtErrorFuncs["DRI2"] = make(map[int]newErrorFun) } -// Skipping definition for base type 'Float' - // Skipping definition for base type 'Id' // Skipping definition for base type 'Card8' @@ -59,6 +61,8 @@ func init() { // Skipping definition for base type 'Bool' +// Skipping definition for base type 'Float' + const ( Dri2AttachmentBufferFrontLeft = 0 Dri2AttachmentBufferBackLeft = 1 diff --git a/nexgb/auto_ge.go b/nexgb/auto_ge.go index 9a06265..ef80ebf 100644 --- a/nexgb/auto_ge.go +++ b/nexgb/auto_ge.go @@ -1,7 +1,7 @@ package xgb /* - This file was generated by ge.xml on May 6 2012 5:48:47pm EDT. + This file was generated by ge.xml on May 7 2012 9:17:56pm EDT. This file is automatically generated. Edit at your peril! */ @@ -12,7 +12,7 @@ func (c *Conn) GeInit() error { case err != nil: return err case !reply.Present: - return newError("No extension named Generic Event Extension could be found on on the server.") + return errorf("No extension named Generic Event Extension could be found on on the server.") } c.extLock.Lock() @@ -20,6 +20,9 @@ func (c *Conn) GeInit() error { for evNum, fun := range newExtEventFuncs["Generic Event Extension"] { newEventFuncs[int(reply.FirstEvent)+evNum] = fun } + for errNum, fun := range newExtErrorFuncs["Generic Event Extension"] { + newErrorFuncs[int(reply.FirstError)+errNum] = fun + } c.extLock.Unlock() return nil @@ -27,12 +30,9 @@ func (c *Conn) GeInit() error { func init() { newExtEventFuncs["Generic Event Extension"] = make(map[int]newEventFun) + newExtErrorFuncs["Generic Event Extension"] = make(map[int]newErrorFun) } -// Skipping definition for base type 'Void' - -// Skipping definition for base type 'Byte' - // Skipping definition for base type 'Int8' // Skipping definition for base type 'Card16' @@ -55,6 +55,10 @@ func init() { // Skipping definition for base type 'Int32' +// Skipping definition for base type 'Void' + +// Skipping definition for base type 'Byte' + // Request GeQueryVersion // size: 8 type GeQueryVersionCookie struct { diff --git a/nexgb/auto_glx.go b/nexgb/auto_glx.go index 1b88e6c..67c79d7 100644 --- a/nexgb/auto_glx.go +++ b/nexgb/auto_glx.go @@ -1,7 +1,7 @@ package xgb /* - This file was generated by glx.xml on May 6 2012 5:48:47pm EDT. + This file was generated by glx.xml on May 7 2012 9:17:56pm EDT. This file is automatically generated. Edit at your peril! */ @@ -16,7 +16,7 @@ func (c *Conn) GlxInit() error { case err != nil: return err case !reply.Present: - return newError("No extension named GLX could be found on on the server.") + return errorf("No extension named GLX could be found on on the server.") } c.extLock.Lock() @@ -24,6 +24,9 @@ func (c *Conn) GlxInit() error { for evNum, fun := range newExtEventFuncs["GLX"] { newEventFuncs[int(reply.FirstEvent)+evNum] = fun } + for errNum, fun := range newExtErrorFuncs["GLX"] { + newErrorFuncs[int(reply.FirstError)+errNum] = fun + } c.extLock.Unlock() return nil @@ -31,8 +34,19 @@ func (c *Conn) GlxInit() error { func init() { newExtEventFuncs["GLX"] = make(map[int]newEventFun) + newExtErrorFuncs["GLX"] = make(map[int]newErrorFun) } +// Skipping definition for base type 'Card16' + +// Skipping definition for base type 'Char' + +// Skipping definition for base type 'Card32' + +// Skipping definition for base type 'Double' + +// Skipping definition for base type 'Bool' + // Skipping definition for base type 'Float' // Skipping definition for base type 'Id' @@ -49,16 +63,6 @@ func init() { // 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' - -// Skipping definition for base type 'Bool' - const ( GlxPbcetDamaged = 32791 GlxPbcetSaved = 32792 @@ -319,7 +323,7 @@ func (err GlxGenericError) Error() string { } func init() { - newErrorFuncs[-1] = NewGlxGenericError + newExtErrorFuncs["GLX"][-1] = NewGlxGenericError } // ErrorCopy definition GlxBadContext (0) @@ -355,7 +359,7 @@ func (err GlxBadContextError) Error() string { } func init() { - newErrorFuncs[0] = NewGlxBadContextError + newExtErrorFuncs["GLX"][0] = NewGlxBadContextError } // ErrorCopy definition GlxBadContextState (1) @@ -391,7 +395,7 @@ func (err GlxBadContextStateError) Error() string { } func init() { - newErrorFuncs[1] = NewGlxBadContextStateError + newExtErrorFuncs["GLX"][1] = NewGlxBadContextStateError } // ErrorCopy definition GlxBadDrawable (2) @@ -427,7 +431,7 @@ func (err GlxBadDrawableError) Error() string { } func init() { - newErrorFuncs[2] = NewGlxBadDrawableError + newExtErrorFuncs["GLX"][2] = NewGlxBadDrawableError } // ErrorCopy definition GlxBadPixmap (3) @@ -463,7 +467,7 @@ func (err GlxBadPixmapError) Error() string { } func init() { - newErrorFuncs[3] = NewGlxBadPixmapError + newExtErrorFuncs["GLX"][3] = NewGlxBadPixmapError } // ErrorCopy definition GlxBadContextTag (4) @@ -499,7 +503,7 @@ func (err GlxBadContextTagError) Error() string { } func init() { - newErrorFuncs[4] = NewGlxBadContextTagError + newExtErrorFuncs["GLX"][4] = NewGlxBadContextTagError } // ErrorCopy definition GlxBadCurrentWindow (5) @@ -535,7 +539,7 @@ func (err GlxBadCurrentWindowError) Error() string { } func init() { - newErrorFuncs[5] = NewGlxBadCurrentWindowError + newExtErrorFuncs["GLX"][5] = NewGlxBadCurrentWindowError } // ErrorCopy definition GlxBadRenderRequest (6) @@ -571,7 +575,7 @@ func (err GlxBadRenderRequestError) Error() string { } func init() { - newErrorFuncs[6] = NewGlxBadRenderRequestError + newExtErrorFuncs["GLX"][6] = NewGlxBadRenderRequestError } // ErrorCopy definition GlxBadLargeRequest (7) @@ -607,7 +611,7 @@ func (err GlxBadLargeRequestError) Error() string { } func init() { - newErrorFuncs[7] = NewGlxBadLargeRequestError + newExtErrorFuncs["GLX"][7] = NewGlxBadLargeRequestError } // ErrorCopy definition GlxUnsupportedPrivateRequest (8) @@ -643,7 +647,7 @@ func (err GlxUnsupportedPrivateRequestError) Error() string { } func init() { - newErrorFuncs[8] = NewGlxUnsupportedPrivateRequestError + newExtErrorFuncs["GLX"][8] = NewGlxUnsupportedPrivateRequestError } // ErrorCopy definition GlxBadFBConfig (9) @@ -679,7 +683,7 @@ func (err GlxBadFBConfigError) Error() string { } func init() { - newErrorFuncs[9] = NewGlxBadFBConfigError + newExtErrorFuncs["GLX"][9] = NewGlxBadFBConfigError } // ErrorCopy definition GlxBadPbuffer (10) @@ -715,7 +719,7 @@ func (err GlxBadPbufferError) Error() string { } func init() { - newErrorFuncs[10] = NewGlxBadPbufferError + newExtErrorFuncs["GLX"][10] = NewGlxBadPbufferError } // ErrorCopy definition GlxBadCurrentDrawable (11) @@ -751,7 +755,7 @@ func (err GlxBadCurrentDrawableError) Error() string { } func init() { - newErrorFuncs[11] = NewGlxBadCurrentDrawableError + newExtErrorFuncs["GLX"][11] = NewGlxBadCurrentDrawableError } // ErrorCopy definition GlxBadWindow (12) @@ -787,7 +791,7 @@ func (err GlxBadWindowError) Error() string { } func init() { - newErrorFuncs[12] = NewGlxBadWindowError + newExtErrorFuncs["GLX"][12] = NewGlxBadWindowError } // ErrorCopy definition GlxGLXBadProfileARB (13) @@ -823,7 +827,7 @@ func (err GlxGLXBadProfileARBError) Error() string { } func init() { - newErrorFuncs[13] = NewGlxGLXBadProfileARBError + newExtErrorFuncs["GLX"][13] = NewGlxGLXBadProfileARBError } // Request GlxRender diff --git a/nexgb/auto_randr.go b/nexgb/auto_randr.go index cc5e760..4e707e6 100644 --- a/nexgb/auto_randr.go +++ b/nexgb/auto_randr.go @@ -1,7 +1,7 @@ package xgb /* - This file was generated by randr.xml on May 6 2012 5:48:47pm EDT. + This file was generated by randr.xml on May 7 2012 9:17:56pm EDT. This file is automatically generated. Edit at your peril! */ @@ -17,7 +17,7 @@ func (c *Conn) RandrInit() error { case err != nil: return err case !reply.Present: - return newError("No extension named RANDR could be found on on the server.") + return errorf("No extension named RANDR could be found on on the server.") } c.extLock.Lock() @@ -25,6 +25,9 @@ func (c *Conn) RandrInit() error { for evNum, fun := range newExtEventFuncs["RANDR"] { newEventFuncs[int(reply.FirstEvent)+evNum] = fun } + for errNum, fun := range newExtErrorFuncs["RANDR"] { + newErrorFuncs[int(reply.FirstError)+errNum] = fun + } c.extLock.Unlock() return nil @@ -32,8 +35,11 @@ func (c *Conn) RandrInit() error { func init() { newExtEventFuncs["RANDR"] = make(map[int]newEventFun) + newExtErrorFuncs["RANDR"] = make(map[int]newErrorFun) } +// Skipping definition for base type 'Int8' + // Skipping definition for base type 'Card16' // Skipping definition for base type 'Char' @@ -58,8 +64,6 @@ func init() { // Skipping definition for base type 'Byte' -// Skipping definition for base type 'Int8' - const ( RandrRotationRotate0 = 1 RandrRotationRotate90 = 2 @@ -1100,7 +1104,7 @@ func (err RandrBadOutputError) Error() string { } func init() { - newErrorFuncs[0] = NewRandrBadOutputError + newExtErrorFuncs["RANDR"][0] = NewRandrBadOutputError } // Error definition RandrBadCrtc (1) @@ -1145,7 +1149,7 @@ func (err RandrBadCrtcError) Error() string { } func init() { - newErrorFuncs[1] = NewRandrBadCrtcError + newExtErrorFuncs["RANDR"][1] = NewRandrBadCrtcError } // Error definition RandrBadMode (2) @@ -1190,7 +1194,7 @@ func (err RandrBadModeError) Error() string { } func init() { - newErrorFuncs[2] = NewRandrBadModeError + newExtErrorFuncs["RANDR"][2] = NewRandrBadModeError } // Request RandrQueryVersion diff --git a/nexgb/auto_record.go b/nexgb/auto_record.go index 6fb966b..32e1715 100644 --- a/nexgb/auto_record.go +++ b/nexgb/auto_record.go @@ -1,7 +1,7 @@ package xgb /* - This file was generated by record.xml on May 6 2012 5:48:47pm EDT. + This file was generated by record.xml on May 7 2012 9:17:57pm EDT. This file is automatically generated. Edit at your peril! */ @@ -12,7 +12,7 @@ func (c *Conn) RecordInit() error { case err != nil: return err case !reply.Present: - return newError("No extension named RECORD could be found on on the server.") + return errorf("No extension named RECORD could be found on on the server.") } c.extLock.Lock() @@ -20,6 +20,9 @@ func (c *Conn) RecordInit() error { for evNum, fun := range newExtEventFuncs["RECORD"] { newEventFuncs[int(reply.FirstEvent)+evNum] = fun } + for errNum, fun := range newExtErrorFuncs["RECORD"] { + newErrorFuncs[int(reply.FirstError)+errNum] = fun + } c.extLock.Unlock() return nil @@ -27,8 +30,19 @@ func (c *Conn) RecordInit() error { func init() { newExtEventFuncs["RECORD"] = make(map[int]newEventFun) + newExtErrorFuncs["RECORD"] = make(map[int]newErrorFun) } +// Skipping definition for base type 'Card8' + +// Skipping definition for base type 'Int16' + +// Skipping definition for base type 'Int32' + +// Skipping definition for base type 'Void' + +// Skipping definition for base type 'Byte' + // Skipping definition for base type 'Int8' // Skipping definition for base type 'Card16' @@ -45,16 +59,6 @@ func init() { // Skipping definition for base type 'Id' -// Skipping definition for base type 'Card8' - -// Skipping definition for base type 'Int16' - -// Skipping definition for base type 'Int32' - -// Skipping definition for base type 'Void' - -// Skipping definition for base type 'Byte' - const ( RecordHTypeFromServerTime = 1 RecordHTypeFromClientTime = 2 @@ -507,7 +511,7 @@ func (err RecordBadContextError) Error() string { } func init() { - newErrorFuncs[0] = NewRecordBadContextError + newExtErrorFuncs["RECORD"][0] = NewRecordBadContextError } // Request RecordQueryVersion diff --git a/nexgb/auto_render.go b/nexgb/auto_render.go index c9fc097..fa0c5f2 100644 --- a/nexgb/auto_render.go +++ b/nexgb/auto_render.go @@ -1,7 +1,7 @@ package xgb /* - This file was generated by render.xml on May 6 2012 5:48:47pm EDT. + This file was generated by render.xml on May 7 2012 9:17:57pm EDT. This file is automatically generated. Edit at your peril! */ @@ -16,7 +16,7 @@ func (c *Conn) RenderInit() error { case err != nil: return err case !reply.Present: - return newError("No extension named RENDER could be found on on the server.") + return errorf("No extension named RENDER could be found on on the server.") } c.extLock.Lock() @@ -24,6 +24,9 @@ func (c *Conn) RenderInit() error { for evNum, fun := range newExtEventFuncs["RENDER"] { newEventFuncs[int(reply.FirstEvent)+evNum] = fun } + for errNum, fun := range newExtErrorFuncs["RENDER"] { + newErrorFuncs[int(reply.FirstError)+errNum] = fun + } c.extLock.Unlock() return nil @@ -31,14 +34,9 @@ func (c *Conn) RenderInit() error { func init() { newExtEventFuncs["RENDER"] = make(map[int]newEventFun) + newExtErrorFuncs["RENDER"] = make(map[int]newErrorFun) } -// Skipping definition for base type 'Int32' - -// Skipping definition for base type 'Void' - -// Skipping definition for base type 'Byte' - // Skipping definition for base type 'Int8' // Skipping definition for base type 'Card16' @@ -59,6 +57,12 @@ func init() { // Skipping definition for base type 'Int16' +// Skipping definition for base type 'Int32' + +// Skipping definition for base type 'Void' + +// Skipping definition for base type 'Byte' + const ( RenderPictTypeIndexed = 0 RenderPictTypeDirect = 1 @@ -1392,7 +1396,7 @@ func (err RenderPictFormatError) Error() string { } func init() { - newErrorFuncs[0] = NewRenderPictFormatError + newExtErrorFuncs["RENDER"][0] = NewRenderPictFormatError } // Error definition RenderPicture (1) @@ -1437,7 +1441,7 @@ func (err RenderPictureError) Error() string { } func init() { - newErrorFuncs[1] = NewRenderPictureError + newExtErrorFuncs["RENDER"][1] = NewRenderPictureError } // Error definition RenderPictOp (2) @@ -1482,7 +1486,7 @@ func (err RenderPictOpError) Error() string { } func init() { - newErrorFuncs[2] = NewRenderPictOpError + newExtErrorFuncs["RENDER"][2] = NewRenderPictOpError } // Error definition RenderGlyphSet (3) @@ -1527,7 +1531,7 @@ func (err RenderGlyphSetError) Error() string { } func init() { - newErrorFuncs[3] = NewRenderGlyphSetError + newExtErrorFuncs["RENDER"][3] = NewRenderGlyphSetError } // Error definition RenderGlyph (4) @@ -1572,7 +1576,7 @@ func (err RenderGlyphError) Error() string { } func init() { - newErrorFuncs[4] = NewRenderGlyphError + newExtErrorFuncs["RENDER"][4] = NewRenderGlyphError } // Request RenderQueryVersion diff --git a/nexgb/auto_res.go b/nexgb/auto_res.go index d3f0f0b..eeaf01f 100644 --- a/nexgb/auto_res.go +++ b/nexgb/auto_res.go @@ -1,7 +1,7 @@ package xgb /* - This file was generated by res.xml on May 6 2012 5:48:47pm EDT. + This file was generated by res.xml on May 7 2012 9:17:57pm EDT. This file is automatically generated. Edit at your peril! */ @@ -16,7 +16,7 @@ func (c *Conn) ResInit() error { case err != nil: return err case !reply.Present: - return newError("No extension named X-Resource could be found on on the server.") + return errorf("No extension named X-Resource could be found on on the server.") } c.extLock.Lock() @@ -24,6 +24,9 @@ func (c *Conn) ResInit() error { for evNum, fun := range newExtEventFuncs["X-Resource"] { newEventFuncs[int(reply.FirstEvent)+evNum] = fun } + for errNum, fun := range newExtErrorFuncs["X-Resource"] { + newErrorFuncs[int(reply.FirstError)+errNum] = fun + } c.extLock.Unlock() return nil @@ -31,16 +34,9 @@ func (c *Conn) ResInit() error { func init() { newExtEventFuncs["X-Resource"] = make(map[int]newEventFun) + newExtErrorFuncs["X-Resource"] = make(map[int]newErrorFun) } -// Skipping definition for base type 'Id' - -// Skipping definition for base type 'Card8' - -// Skipping definition for base type 'Int16' - -// Skipping definition for base type 'Int32' - // Skipping definition for base type 'Void' // Skipping definition for base type 'Byte' @@ -59,6 +55,14 @@ func init() { // Skipping definition for base type 'Float' +// Skipping definition for base type 'Id' + +// Skipping definition for base type 'Card8' + +// Skipping definition for base type 'Int16' + +// Skipping definition for base type 'Int32' + // 'ResClient' struct definition // Size: 8 type ResClient struct { diff --git a/nexgb/auto_screensaver.go b/nexgb/auto_screensaver.go index 1e47b91..13aa818 100644 --- a/nexgb/auto_screensaver.go +++ b/nexgb/auto_screensaver.go @@ -1,7 +1,7 @@ package xgb /* - This file was generated by screensaver.xml on May 6 2012 5:48:47pm EDT. + This file was generated by screensaver.xml on May 7 2012 9:17:57pm EDT. This file is automatically generated. Edit at your peril! */ @@ -16,7 +16,7 @@ func (c *Conn) ScreensaverInit() error { case err != nil: return err case !reply.Present: - return newError("No extension named MIT-SCREEN-SAVER could be found on on the server.") + return errorf("No extension named MIT-SCREEN-SAVER could be found on on the server.") } c.extLock.Lock() @@ -24,6 +24,9 @@ func (c *Conn) ScreensaverInit() error { for evNum, fun := range newExtEventFuncs["MIT-SCREEN-SAVER"] { newEventFuncs[int(reply.FirstEvent)+evNum] = fun } + for errNum, fun := range newExtErrorFuncs["MIT-SCREEN-SAVER"] { + newErrorFuncs[int(reply.FirstError)+errNum] = fun + } c.extLock.Unlock() return nil @@ -31,18 +34,9 @@ func (c *Conn) ScreensaverInit() error { func init() { newExtEventFuncs["MIT-SCREEN-SAVER"] = make(map[int]newEventFun) + newExtErrorFuncs["MIT-SCREEN-SAVER"] = make(map[int]newErrorFun) } -// Skipping definition for base type 'Int16' - -// Skipping definition for base type 'Int32' - -// Skipping definition for base type 'Void' - -// Skipping definition for base type 'Byte' - -// Skipping definition for base type 'Int8' - // Skipping definition for base type 'Card16' // Skipping definition for base type 'Char' @@ -59,6 +53,16 @@ func init() { // Skipping definition for base type 'Card8' +// Skipping definition for base type 'Int16' + +// Skipping definition for base type 'Int32' + +// Skipping definition for base type 'Void' + +// Skipping definition for base type 'Byte' + +// Skipping definition for base type 'Int8' + const ( ScreensaverKindBlanked = 0 ScreensaverKindInternal = 1 diff --git a/nexgb/auto_shape.go b/nexgb/auto_shape.go index a28836c..4b52a5d 100644 --- a/nexgb/auto_shape.go +++ b/nexgb/auto_shape.go @@ -1,7 +1,7 @@ package xgb /* - This file was generated by shape.xml on May 6 2012 5:48:47pm EDT. + This file was generated by shape.xml on May 7 2012 9:17:57pm EDT. This file is automatically generated. Edit at your peril! */ @@ -16,7 +16,7 @@ func (c *Conn) ShapeInit() error { case err != nil: return err case !reply.Present: - return newError("No extension named SHAPE could be found on on the server.") + return errorf("No extension named SHAPE could be found on on the server.") } c.extLock.Lock() @@ -24,6 +24,9 @@ func (c *Conn) ShapeInit() error { for evNum, fun := range newExtEventFuncs["SHAPE"] { newEventFuncs[int(reply.FirstEvent)+evNum] = fun } + for errNum, fun := range newExtErrorFuncs["SHAPE"] { + newErrorFuncs[int(reply.FirstError)+errNum] = fun + } c.extLock.Unlock() return nil @@ -31,8 +34,15 @@ func (c *Conn) ShapeInit() error { func init() { newExtEventFuncs["SHAPE"] = make(map[int]newEventFun) + newExtErrorFuncs["SHAPE"] = make(map[int]newErrorFun) } +// Skipping definition for base type 'Void' + +// Skipping definition for base type 'Byte' + +// Skipping definition for base type 'Int8' + // Skipping definition for base type 'Card16' // Skipping definition for base type 'Char' @@ -53,12 +63,6 @@ func init() { // Skipping definition for base type 'Int32' -// Skipping definition for base type 'Void' - -// Skipping definition for base type 'Byte' - -// Skipping definition for base type 'Int8' - const ( ShapeSoSet = 0 ShapeSoUnion = 1 diff --git a/nexgb/auto_shm.go b/nexgb/auto_shm.go index 514dc03..a6d64a2 100644 --- a/nexgb/auto_shm.go +++ b/nexgb/auto_shm.go @@ -1,7 +1,7 @@ package xgb /* - This file was generated by shm.xml on May 6 2012 5:48:47pm EDT. + This file was generated by shm.xml on May 7 2012 9:17:57pm EDT. This file is automatically generated. Edit at your peril! */ @@ -16,7 +16,7 @@ func (c *Conn) ShmInit() error { case err != nil: return err case !reply.Present: - return newError("No extension named MIT-SHM could be found on on the server.") + return errorf("No extension named MIT-SHM could be found on on the server.") } c.extLock.Lock() @@ -24,6 +24,9 @@ func (c *Conn) ShmInit() error { for evNum, fun := range newExtEventFuncs["MIT-SHM"] { newEventFuncs[int(reply.FirstEvent)+evNum] = fun } + for errNum, fun := range newExtErrorFuncs["MIT-SHM"] { + newErrorFuncs[int(reply.FirstError)+errNum] = fun + } c.extLock.Unlock() return nil @@ -31,8 +34,15 @@ func (c *Conn) ShmInit() error { func init() { newExtEventFuncs["MIT-SHM"] = make(map[int]newEventFun) + newExtErrorFuncs["MIT-SHM"] = make(map[int]newErrorFun) } +// Skipping definition for base type 'Card32' + +// Skipping definition for base type 'Double' + +// Skipping definition for base type 'Bool' + // Skipping definition for base type 'Float' // Skipping definition for base type 'Id' @@ -53,12 +63,6 @@ func init() { // Skipping definition for base type 'Char' -// Skipping definition for base type 'Card32' - -// Skipping definition for base type 'Double' - -// Skipping definition for base type 'Bool' - // Skipping resource definition of 'Seg' // Event definition ShmCompletion (0) @@ -194,7 +198,7 @@ func (err ShmBadSegError) Error() string { } func init() { - newErrorFuncs[0] = NewShmBadSegError + newExtErrorFuncs["MIT-SHM"][0] = NewShmBadSegError } // Request ShmQueryVersion diff --git a/nexgb/auto_sync.go b/nexgb/auto_sync.go index a59cf20..ef69ebe 100644 --- a/nexgb/auto_sync.go +++ b/nexgb/auto_sync.go @@ -1,7 +1,7 @@ package xgb /* - This file was generated by sync.xml on May 6 2012 5:48:47pm EDT. + This file was generated by sync.xml on May 7 2012 9:17:57pm EDT. This file is automatically generated. Edit at your peril! */ @@ -16,7 +16,7 @@ func (c *Conn) SyncInit() error { case err != nil: return err case !reply.Present: - return newError("No extension named SYNC could be found on on the server.") + return errorf("No extension named SYNC could be found on on the server.") } c.extLock.Lock() @@ -24,6 +24,9 @@ func (c *Conn) SyncInit() error { for evNum, fun := range newExtEventFuncs["SYNC"] { newEventFuncs[int(reply.FirstEvent)+evNum] = fun } + for errNum, fun := range newExtErrorFuncs["SYNC"] { + newErrorFuncs[int(reply.FirstError)+errNum] = fun + } c.extLock.Unlock() return nil @@ -31,8 +34,19 @@ func (c *Conn) SyncInit() error { func init() { newExtEventFuncs["SYNC"] = make(map[int]newEventFun) + newExtErrorFuncs["SYNC"] = make(map[int]newErrorFun) } +// Skipping definition for base type 'Card16' + +// Skipping definition for base type 'Char' + +// Skipping definition for base type 'Card32' + +// Skipping definition for base type 'Double' + +// Skipping definition for base type 'Bool' + // Skipping definition for base type 'Float' // Skipping definition for base type 'Id' @@ -49,16 +63,6 @@ func init() { // 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' - -// Skipping definition for base type 'Bool' - const ( SyncAlarmstateActive = 0 SyncAlarmstateInactive = 1 @@ -656,7 +660,7 @@ func (err SyncCounterError) Error() string { } func init() { - newErrorFuncs[0] = NewSyncCounterError + newExtErrorFuncs["SYNC"][0] = NewSyncCounterError } // Error definition SyncAlarm (1) @@ -716,7 +720,7 @@ func (err SyncAlarmError) Error() string { } func init() { - newErrorFuncs[1] = NewSyncAlarmError + newExtErrorFuncs["SYNC"][1] = NewSyncAlarmError } // Request SyncInitialize diff --git a/nexgb/auto_xc_misc.go b/nexgb/auto_xc_misc.go index 66ad03a..4d5c03c 100644 --- a/nexgb/auto_xc_misc.go +++ b/nexgb/auto_xc_misc.go @@ -1,7 +1,7 @@ package xgb /* - This file was generated by xc_misc.xml on May 6 2012 5:48:47pm EDT. + This file was generated by xc_misc.xml on May 7 2012 9:17:57pm EDT. This file is automatically generated. Edit at your peril! */ @@ -12,7 +12,7 @@ func (c *Conn) Xc_miscInit() error { case err != nil: return err case !reply.Present: - return newError("No extension named XC-MISC could be found on on the server.") + return errorf("No extension named XC-MISC could be found on on the server.") } c.extLock.Lock() @@ -20,6 +20,9 @@ func (c *Conn) Xc_miscInit() error { for evNum, fun := range newExtEventFuncs["XC-MISC"] { newEventFuncs[int(reply.FirstEvent)+evNum] = fun } + for errNum, fun := range newExtErrorFuncs["XC-MISC"] { + newErrorFuncs[int(reply.FirstError)+errNum] = fun + } c.extLock.Unlock() return nil @@ -27,12 +30,9 @@ func (c *Conn) Xc_miscInit() error { func init() { newExtEventFuncs["XC-MISC"] = make(map[int]newEventFun) + newExtErrorFuncs["XC-MISC"] = make(map[int]newErrorFun) } -// Skipping definition for base type 'Byte' - -// Skipping definition for base type 'Int8' - // Skipping definition for base type 'Card16' // Skipping definition for base type 'Char' @@ -55,6 +55,10 @@ func init() { // Skipping definition for base type 'Void' +// Skipping definition for base type 'Byte' + +// Skipping definition for base type 'Int8' + // Request Xc_miscGetVersion // size: 8 type Xc_miscGetVersionCookie struct { diff --git a/nexgb/auto_xevie.go b/nexgb/auto_xevie.go index eed775e..1046f1b 100644 --- a/nexgb/auto_xevie.go +++ b/nexgb/auto_xevie.go @@ -1,7 +1,7 @@ package xgb /* - This file was generated by xevie.xml on May 6 2012 5:48:47pm EDT. + This file was generated by xevie.xml on May 7 2012 9:17:57pm EDT. This file is automatically generated. Edit at your peril! */ @@ -12,7 +12,7 @@ func (c *Conn) XevieInit() error { case err != nil: return err case !reply.Present: - return newError("No extension named XEVIE could be found on on the server.") + return errorf("No extension named XEVIE could be found on on the server.") } c.extLock.Lock() @@ -20,6 +20,9 @@ func (c *Conn) XevieInit() error { for evNum, fun := range newExtEventFuncs["XEVIE"] { newEventFuncs[int(reply.FirstEvent)+evNum] = fun } + for errNum, fun := range newExtErrorFuncs["XEVIE"] { + newErrorFuncs[int(reply.FirstError)+errNum] = fun + } c.extLock.Unlock() return nil @@ -27,10 +30,9 @@ func (c *Conn) XevieInit() error { func init() { newExtEventFuncs["XEVIE"] = make(map[int]newEventFun) + newExtErrorFuncs["XEVIE"] = make(map[int]newErrorFun) } -// Skipping definition for base type 'Float' - // Skipping definition for base type 'Id' // Skipping definition for base type 'Card8' @@ -55,6 +57,8 @@ func init() { // Skipping definition for base type 'Bool' +// Skipping definition for base type 'Float' + const ( XevieDatatypeUnmodified = 0 XevieDatatypeModified = 1 diff --git a/nexgb/auto_xf86dri.go b/nexgb/auto_xf86dri.go index 7407d24..362fa40 100644 --- a/nexgb/auto_xf86dri.go +++ b/nexgb/auto_xf86dri.go @@ -1,7 +1,7 @@ package xgb /* - This file was generated by xf86dri.xml on May 6 2012 5:48:47pm EDT. + This file was generated by xf86dri.xml on May 7 2012 9:17:57pm EDT. This file is automatically generated. Edit at your peril! */ @@ -12,7 +12,7 @@ func (c *Conn) Xf86driInit() error { case err != nil: return err case !reply.Present: - return newError("No extension named XFree86-DRI could be found on on the server.") + return errorf("No extension named XFree86-DRI could be found on on the server.") } c.extLock.Lock() @@ -20,6 +20,9 @@ func (c *Conn) Xf86driInit() error { for evNum, fun := range newExtEventFuncs["XFree86-DRI"] { newEventFuncs[int(reply.FirstEvent)+evNum] = fun } + for errNum, fun := range newExtErrorFuncs["XFree86-DRI"] { + newErrorFuncs[int(reply.FirstError)+errNum] = fun + } c.extLock.Unlock() return nil @@ -27,6 +30,7 @@ func (c *Conn) Xf86driInit() error { func init() { newExtEventFuncs["XFree86-DRI"] = make(map[int]newEventFun) + newExtErrorFuncs["XFree86-DRI"] = make(map[int]newErrorFun) } // Skipping definition for base type 'Int8' diff --git a/nexgb/auto_xf86vidmode.go b/nexgb/auto_xf86vidmode.go index 649244d..d44105d 100644 --- a/nexgb/auto_xf86vidmode.go +++ b/nexgb/auto_xf86vidmode.go @@ -1,7 +1,7 @@ package xgb /* - This file was generated by xf86vidmode.xml on May 6 2012 5:48:47pm EDT. + This file was generated by xf86vidmode.xml on May 7 2012 9:17:57pm EDT. This file is automatically generated. Edit at your peril! */ @@ -12,7 +12,7 @@ func (c *Conn) Xf86vidmodeInit() error { case err != nil: return err case !reply.Present: - return newError("No extension named XFree86-VidModeExtension could be found on on the server.") + return errorf("No extension named XFree86-VidModeExtension could be found on on the server.") } c.extLock.Lock() @@ -20,6 +20,9 @@ func (c *Conn) Xf86vidmodeInit() error { for evNum, fun := range newExtEventFuncs["XFree86-VidModeExtension"] { newEventFuncs[int(reply.FirstEvent)+evNum] = fun } + for errNum, fun := range newExtErrorFuncs["XFree86-VidModeExtension"] { + newErrorFuncs[int(reply.FirstError)+errNum] = fun + } c.extLock.Unlock() return nil @@ -27,18 +30,9 @@ func (c *Conn) Xf86vidmodeInit() error { func init() { newExtEventFuncs["XFree86-VidModeExtension"] = make(map[int]newEventFun) + newExtErrorFuncs["XFree86-VidModeExtension"] = make(map[int]newErrorFun) } -// Skipping definition for base type 'Char' - -// Skipping definition for base type 'Card32' - -// Skipping definition for base type 'Double' - -// Skipping definition for base type 'Bool' - -// Skipping definition for base type 'Float' - // Skipping definition for base type 'Id' // Skipping definition for base type 'Card8' @@ -55,6 +49,16 @@ func init() { // Skipping definition for base type 'Card16' +// Skipping definition for base type 'Char' + +// Skipping definition for base type 'Card32' + +// Skipping definition for base type 'Double' + +// Skipping definition for base type 'Bool' + +// Skipping definition for base type 'Float' + const ( Xf86vidmodeModeFlagPositiveHsync = 1 Xf86vidmodeModeFlagNegativeHsync = 2 @@ -262,7 +266,7 @@ func (err Xf86vidmodeBadClockError) Error() string { } func init() { - newErrorFuncs[0] = NewXf86vidmodeBadClockError + newExtErrorFuncs["XFree86-VidModeExtension"][0] = NewXf86vidmodeBadClockError } // Error definition Xf86vidmodeBadHTimings (1) @@ -307,7 +311,7 @@ func (err Xf86vidmodeBadHTimingsError) Error() string { } func init() { - newErrorFuncs[1] = NewXf86vidmodeBadHTimingsError + newExtErrorFuncs["XFree86-VidModeExtension"][1] = NewXf86vidmodeBadHTimingsError } // Error definition Xf86vidmodeBadVTimings (2) @@ -352,7 +356,7 @@ func (err Xf86vidmodeBadVTimingsError) Error() string { } func init() { - newErrorFuncs[2] = NewXf86vidmodeBadVTimingsError + newExtErrorFuncs["XFree86-VidModeExtension"][2] = NewXf86vidmodeBadVTimingsError } // Error definition Xf86vidmodeModeUnsuitable (3) @@ -397,7 +401,7 @@ func (err Xf86vidmodeModeUnsuitableError) Error() string { } func init() { - newErrorFuncs[3] = NewXf86vidmodeModeUnsuitableError + newExtErrorFuncs["XFree86-VidModeExtension"][3] = NewXf86vidmodeModeUnsuitableError } // Error definition Xf86vidmodeExtensionDisabled (4) @@ -442,7 +446,7 @@ func (err Xf86vidmodeExtensionDisabledError) Error() string { } func init() { - newErrorFuncs[4] = NewXf86vidmodeExtensionDisabledError + newExtErrorFuncs["XFree86-VidModeExtension"][4] = NewXf86vidmodeExtensionDisabledError } // Error definition Xf86vidmodeClientNotLocal (5) @@ -487,7 +491,7 @@ func (err Xf86vidmodeClientNotLocalError) Error() string { } func init() { - newErrorFuncs[5] = NewXf86vidmodeClientNotLocalError + newExtErrorFuncs["XFree86-VidModeExtension"][5] = NewXf86vidmodeClientNotLocalError } // Error definition Xf86vidmodeZoomLocked (6) @@ -532,7 +536,7 @@ func (err Xf86vidmodeZoomLockedError) Error() string { } func init() { - newErrorFuncs[6] = NewXf86vidmodeZoomLockedError + newExtErrorFuncs["XFree86-VidModeExtension"][6] = NewXf86vidmodeZoomLockedError } // Request Xf86vidmodeQueryVersion diff --git a/nexgb/auto_xfixes.go b/nexgb/auto_xfixes.go index aae1afb..f188be0 100644 --- a/nexgb/auto_xfixes.go +++ b/nexgb/auto_xfixes.go @@ -1,7 +1,7 @@ package xgb /* - This file was generated by xfixes.xml on May 6 2012 5:48:48pm EDT. + This file was generated by xfixes.xml on May 7 2012 9:17:57pm EDT. This file is automatically generated. Edit at your peril! */ @@ -18,7 +18,7 @@ func (c *Conn) XfixesInit() error { case err != nil: return err case !reply.Present: - return newError("No extension named XFIXES could be found on on the server.") + return errorf("No extension named XFIXES could be found on on the server.") } c.extLock.Lock() @@ -26,6 +26,9 @@ func (c *Conn) XfixesInit() error { for evNum, fun := range newExtEventFuncs["XFIXES"] { newEventFuncs[int(reply.FirstEvent)+evNum] = fun } + for errNum, fun := range newExtErrorFuncs["XFIXES"] { + newErrorFuncs[int(reply.FirstError)+errNum] = fun + } c.extLock.Unlock() return nil @@ -33,20 +36,9 @@ func (c *Conn) XfixesInit() error { func init() { newExtEventFuncs["XFIXES"] = make(map[int]newEventFun) + newExtErrorFuncs["XFIXES"] = make(map[int]newErrorFun) } -// Skipping definition for base type 'Card8' - -// Skipping definition for base type 'Int16' - -// Skipping definition for base type 'Int32' - -// Skipping definition for base type 'Void' - -// Skipping definition for base type 'Byte' - -// Skipping definition for base type 'Int8' - // Skipping definition for base type 'Card16' // Skipping definition for base type 'Char' @@ -61,6 +53,18 @@ func init() { // Skipping definition for base type 'Id' +// Skipping definition for base type 'Card8' + +// Skipping definition for base type 'Int16' + +// Skipping definition for base type 'Int32' + +// Skipping definition for base type 'Void' + +// Skipping definition for base type 'Byte' + +// Skipping definition for base type 'Int8' + const ( XfixesSaveSetModeInsert = 0 XfixesSaveSetModeDelete = 1 @@ -342,7 +346,7 @@ func (err XfixesBadRegionError) Error() string { } func init() { - newErrorFuncs[0] = NewXfixesBadRegionError + newExtErrorFuncs["XFIXES"][0] = NewXfixesBadRegionError } // Request XfixesQueryVersion diff --git a/nexgb/auto_xinerama.go b/nexgb/auto_xinerama.go index d751710..ff7453c 100644 --- a/nexgb/auto_xinerama.go +++ b/nexgb/auto_xinerama.go @@ -1,7 +1,7 @@ package xgb /* - This file was generated by xinerama.xml on May 6 2012 5:48:48pm EDT. + This file was generated by xinerama.xml on May 7 2012 9:17:57pm EDT. This file is automatically generated. Edit at your peril! */ @@ -16,7 +16,7 @@ func (c *Conn) XineramaInit() error { case err != nil: return err case !reply.Present: - return newError("No extension named XINERAMA could be found on on the server.") + return errorf("No extension named XINERAMA could be found on on the server.") } c.extLock.Lock() @@ -24,6 +24,9 @@ func (c *Conn) XineramaInit() error { for evNum, fun := range newExtEventFuncs["XINERAMA"] { newEventFuncs[int(reply.FirstEvent)+evNum] = fun } + for errNum, fun := range newExtErrorFuncs["XINERAMA"] { + newErrorFuncs[int(reply.FirstError)+errNum] = fun + } c.extLock.Unlock() return nil @@ -31,8 +34,11 @@ func (c *Conn) XineramaInit() error { func init() { newExtEventFuncs["XINERAMA"] = make(map[int]newEventFun) + newExtErrorFuncs["XINERAMA"] = make(map[int]newErrorFun) } +// Skipping definition for base type 'Byte' + // Skipping definition for base type 'Int8' // Skipping definition for base type 'Card16' @@ -57,8 +63,6 @@ func init() { // Skipping definition for base type 'Void' -// Skipping definition for base type 'Byte' - // 'XineramaScreenInfo' struct definition // Size: 8 type XineramaScreenInfo struct { diff --git a/nexgb/auto_xinput.go b/nexgb/auto_xinput.go index ae122b8..7305d2d 100644 --- a/nexgb/auto_xinput.go +++ b/nexgb/auto_xinput.go @@ -1,7 +1,7 @@ package xgb /* - This file was generated by xinput.xml on May 6 2012 5:48:48pm EDT. + This file was generated by xinput.xml on May 7 2012 9:17:57pm EDT. This file is automatically generated. Edit at your peril! */ @@ -16,7 +16,7 @@ func (c *Conn) XinputInit() error { case err != nil: return err case !reply.Present: - return newError("No extension named XInputExtension could be found on on the server.") + return errorf("No extension named XInputExtension could be found on on the server.") } c.extLock.Lock() @@ -24,6 +24,9 @@ func (c *Conn) XinputInit() error { for evNum, fun := range newExtEventFuncs["XInputExtension"] { newEventFuncs[int(reply.FirstEvent)+evNum] = fun } + for errNum, fun := range newExtErrorFuncs["XInputExtension"] { + newErrorFuncs[int(reply.FirstError)+errNum] = fun + } c.extLock.Unlock() return nil @@ -31,18 +34,9 @@ func (c *Conn) XinputInit() error { func init() { newExtEventFuncs["XInputExtension"] = make(map[int]newEventFun) + newExtErrorFuncs["XInputExtension"] = make(map[int]newErrorFun) } -// 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' - // Skipping definition for base type 'Bool' // Skipping definition for base type 'Float' @@ -59,6 +53,16 @@ func init() { // Skipping definition for base type 'Byte' +// 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' + const ( XinputValuatorModeRelative = 0 XinputValuatorModeAbsolute = 1 @@ -4443,7 +4447,7 @@ func (err XinputDeviceError) Error() string { } func init() { - newErrorFuncs[0] = NewXinputDeviceError + newExtErrorFuncs["XInputExtension"][0] = NewXinputDeviceError } // Error definition XinputEvent (1) @@ -4488,7 +4492,7 @@ func (err XinputEventError) Error() string { } func init() { - newErrorFuncs[1] = NewXinputEventError + newExtErrorFuncs["XInputExtension"][1] = NewXinputEventError } // Error definition XinputMode (2) @@ -4533,7 +4537,7 @@ func (err XinputModeError) Error() string { } func init() { - newErrorFuncs[2] = NewXinputModeError + newExtErrorFuncs["XInputExtension"][2] = NewXinputModeError } // Error definition XinputDeviceBusy (3) @@ -4578,7 +4582,7 @@ func (err XinputDeviceBusyError) Error() string { } func init() { - newErrorFuncs[3] = NewXinputDeviceBusyError + newExtErrorFuncs["XInputExtension"][3] = NewXinputDeviceBusyError } // Error definition XinputClass (4) @@ -4623,7 +4627,7 @@ func (err XinputClassError) Error() string { } func init() { - newErrorFuncs[4] = NewXinputClassError + newExtErrorFuncs["XInputExtension"][4] = NewXinputClassError } // Request XinputGetExtensionVersion diff --git a/nexgb/auto_xprint.go b/nexgb/auto_xprint.go index 6c9be85..9bb8ea7 100644 --- a/nexgb/auto_xprint.go +++ b/nexgb/auto_xprint.go @@ -1,7 +1,7 @@ package xgb /* - This file was generated by xprint.xml on May 6 2012 5:48:48pm EDT. + This file was generated by xprint.xml on May 7 2012 9:17:57pm EDT. This file is automatically generated. Edit at your peril! */ @@ -16,7 +16,7 @@ func (c *Conn) XprintInit() error { case err != nil: return err case !reply.Present: - return newError("No extension named XpExtension could be found on on the server.") + return errorf("No extension named XpExtension could be found on on the server.") } c.extLock.Lock() @@ -24,6 +24,9 @@ func (c *Conn) XprintInit() error { for evNum, fun := range newExtEventFuncs["XpExtension"] { newEventFuncs[int(reply.FirstEvent)+evNum] = fun } + for errNum, fun := range newExtErrorFuncs["XpExtension"] { + newErrorFuncs[int(reply.FirstError)+errNum] = fun + } c.extLock.Unlock() return nil @@ -31,6 +34,7 @@ func (c *Conn) XprintInit() error { func init() { newExtEventFuncs["XpExtension"] = make(map[int]newEventFun) + newExtErrorFuncs["XpExtension"] = make(map[int]newErrorFun) } // Skipping definition for base type 'Float' @@ -376,7 +380,7 @@ func (err XprintBadContextError) Error() string { } func init() { - newErrorFuncs[0] = NewXprintBadContextError + newExtErrorFuncs["XpExtension"][0] = NewXprintBadContextError } // Error definition XprintBadSequence (1) @@ -421,7 +425,7 @@ func (err XprintBadSequenceError) Error() string { } func init() { - newErrorFuncs[1] = NewXprintBadSequenceError + newExtErrorFuncs["XpExtension"][1] = NewXprintBadSequenceError } // Request XprintPrintQueryVersion diff --git a/nexgb/auto_xproto.go b/nexgb/auto_xproto.go index 84b193d..20152c8 100644 --- a/nexgb/auto_xproto.go +++ b/nexgb/auto_xproto.go @@ -1,16 +1,10 @@ package xgb /* - This file was generated by xproto.xml on May 6 2012 5:48:48pm EDT. + This file was generated by xproto.xml on May 7 2012 9:17:57pm EDT. This file is automatically generated. Edit at your peril! */ -// Skipping definition for base type 'Void' - -// Skipping definition for base type 'Byte' - -// Skipping definition for base type 'Int8' - // Skipping definition for base type 'Card16' // Skipping definition for base type 'Char' @@ -31,6 +25,12 @@ package xgb // Skipping definition for base type 'Int32' +// Skipping definition for base type 'Void' + +// Skipping definition for base type 'Byte' + +// Skipping definition for base type 'Int8' + const ( VisualClassStaticGray = 0 VisualClassGrayScale = 1 diff --git a/nexgb/auto_xselinux.go b/nexgb/auto_xselinux.go index e3dfbf3..a51346a 100644 --- a/nexgb/auto_xselinux.go +++ b/nexgb/auto_xselinux.go @@ -1,7 +1,7 @@ package xgb /* - This file was generated by xselinux.xml on May 6 2012 5:48:48pm EDT. + This file was generated by xselinux.xml on May 7 2012 9:17:58pm EDT. This file is automatically generated. Edit at your peril! */ @@ -16,7 +16,7 @@ func (c *Conn) XselinuxInit() error { case err != nil: return err case !reply.Present: - return newError("No extension named SELinux could be found on on the server.") + return errorf("No extension named SELinux could be found on on the server.") } c.extLock.Lock() @@ -24,6 +24,9 @@ func (c *Conn) XselinuxInit() error { for evNum, fun := range newExtEventFuncs["SELinux"] { newEventFuncs[int(reply.FirstEvent)+evNum] = fun } + for errNum, fun := range newExtErrorFuncs["SELinux"] { + newErrorFuncs[int(reply.FirstError)+errNum] = fun + } c.extLock.Unlock() return nil @@ -31,12 +34,9 @@ func (c *Conn) XselinuxInit() error { func init() { newExtEventFuncs["SELinux"] = make(map[int]newEventFun) + newExtErrorFuncs["SELinux"] = make(map[int]newErrorFun) } -// Skipping definition for base type 'Bool' - -// Skipping definition for base type 'Float' - // Skipping definition for base type 'Id' // Skipping definition for base type 'Card8' @@ -59,6 +59,10 @@ func init() { // Skipping definition for base type 'Double' +// Skipping definition for base type 'Bool' + +// Skipping definition for base type 'Float' + // 'XselinuxListItem' struct definition // Size: ((12 + pad((int(ObjectContextLen) * 1))) + pad((int(DataContextLen) * 1))) type XselinuxListItem struct { diff --git a/nexgb/auto_xtest.go b/nexgb/auto_xtest.go index 565c3d1..8a43878 100644 --- a/nexgb/auto_xtest.go +++ b/nexgb/auto_xtest.go @@ -1,7 +1,7 @@ package xgb /* - This file was generated by xtest.xml on May 6 2012 5:48:48pm EDT. + This file was generated by xtest.xml on May 7 2012 9:17:58pm EDT. This file is automatically generated. Edit at your peril! */ @@ -16,7 +16,7 @@ func (c *Conn) XtestInit() error { case err != nil: return err case !reply.Present: - return newError("No extension named XTEST could be found on on the server.") + return errorf("No extension named XTEST could be found on on the server.") } c.extLock.Lock() @@ -24,6 +24,9 @@ func (c *Conn) XtestInit() error { for evNum, fun := range newExtEventFuncs["XTEST"] { newEventFuncs[int(reply.FirstEvent)+evNum] = fun } + for errNum, fun := range newExtErrorFuncs["XTEST"] { + newErrorFuncs[int(reply.FirstError)+errNum] = fun + } c.extLock.Unlock() return nil @@ -31,10 +34,9 @@ func (c *Conn) XtestInit() error { func init() { newExtEventFuncs["XTEST"] = make(map[int]newEventFun) + newExtErrorFuncs["XTEST"] = make(map[int]newErrorFun) } -// Skipping definition for base type 'Bool' - // Skipping definition for base type 'Float' // Skipping definition for base type 'Id' @@ -59,6 +61,8 @@ func init() { // Skipping definition for base type 'Double' +// Skipping definition for base type 'Bool' + const ( XtestCursorNone = 0 XtestCursorCurrent = 1 diff --git a/nexgb/auto_xv.go b/nexgb/auto_xv.go index 0ce0c64..dc2826b 100644 --- a/nexgb/auto_xv.go +++ b/nexgb/auto_xv.go @@ -1,7 +1,7 @@ package xgb /* - This file was generated by xv.xml on May 6 2012 5:48:48pm EDT. + This file was generated by xv.xml on May 7 2012 9:17:58pm EDT. This file is automatically generated. Edit at your peril! */ @@ -17,7 +17,7 @@ func (c *Conn) XvInit() error { case err != nil: return err case !reply.Present: - return newError("No extension named XVideo could be found on on the server.") + return errorf("No extension named XVideo could be found on on the server.") } c.extLock.Lock() @@ -25,6 +25,9 @@ func (c *Conn) XvInit() error { for evNum, fun := range newExtEventFuncs["XVideo"] { newEventFuncs[int(reply.FirstEvent)+evNum] = fun } + for errNum, fun := range newExtErrorFuncs["XVideo"] { + newErrorFuncs[int(reply.FirstError)+errNum] = fun + } c.extLock.Unlock() return nil @@ -32,14 +35,9 @@ func (c *Conn) XvInit() error { func init() { newExtEventFuncs["XVideo"] = make(map[int]newEventFun) + newExtErrorFuncs["XVideo"] = make(map[int]newErrorFun) } -// Skipping definition for base type 'Void' - -// Skipping definition for base type 'Byte' - -// Skipping definition for base type 'Int8' - // Skipping definition for base type 'Card16' // Skipping definition for base type 'Char' @@ -60,6 +58,12 @@ func init() { // Skipping definition for base type 'Int32' +// Skipping definition for base type 'Void' + +// Skipping definition for base type 'Byte' + +// Skipping definition for base type 'Int8' + const ( XvTypeInputMask = 1 XvTypeOutputMask = 2 @@ -1094,7 +1098,7 @@ func (err XvBadPortError) Error() string { } func init() { - newErrorFuncs[0] = NewXvBadPortError + newExtErrorFuncs["XVideo"][0] = NewXvBadPortError } // Error definition XvBadEncoding (1) @@ -1139,7 +1143,7 @@ func (err XvBadEncodingError) Error() string { } func init() { - newErrorFuncs[1] = NewXvBadEncodingError + newExtErrorFuncs["XVideo"][1] = NewXvBadEncodingError } // Error definition XvBadControl (2) @@ -1184,7 +1188,7 @@ func (err XvBadControlError) Error() string { } func init() { - newErrorFuncs[2] = NewXvBadControlError + newExtErrorFuncs["XVideo"][2] = NewXvBadControlError } // Request XvQueryExtension diff --git a/nexgb/auto_xvmc.go b/nexgb/auto_xvmc.go index 61eab40..9c53a59 100644 --- a/nexgb/auto_xvmc.go +++ b/nexgb/auto_xvmc.go @@ -1,7 +1,7 @@ package xgb /* - This file was generated by xvmc.xml on May 6 2012 5:48:48pm EDT. + This file was generated by xvmc.xml on May 7 2012 9:17:58pm EDT. This file is automatically generated. Edit at your peril! */ @@ -16,7 +16,7 @@ func (c *Conn) XvmcInit() error { case err != nil: return err case !reply.Present: - return newError("No extension named XVideo-MotionCompensation could be found on on the server.") + return errorf("No extension named XVideo-MotionCompensation could be found on on the server.") } c.extLock.Lock() @@ -24,6 +24,9 @@ func (c *Conn) XvmcInit() error { for evNum, fun := range newExtEventFuncs["XVideo-MotionCompensation"] { newEventFuncs[int(reply.FirstEvent)+evNum] = fun } + for errNum, fun := range newExtErrorFuncs["XVideo-MotionCompensation"] { + newErrorFuncs[int(reply.FirstError)+errNum] = fun + } c.extLock.Unlock() return nil @@ -31,8 +34,11 @@ func (c *Conn) XvmcInit() error { func init() { newExtEventFuncs["XVideo-MotionCompensation"] = make(map[int]newEventFun) + newExtErrorFuncs["XVideo-MotionCompensation"] = make(map[int]newErrorFun) } +// Skipping definition for base type 'Int32' + // Skipping definition for base type 'Void' // Skipping definition for base type 'Byte' @@ -57,8 +63,6 @@ func init() { // Skipping definition for base type 'Int16' -// Skipping definition for base type 'Int32' - // Skipping resource definition of 'Context' // Skipping resource definition of 'Surface' diff --git a/nexgb/xgb.go b/nexgb/xgb.go index c9a265f..cec06d6 100644 --- a/nexgb/xgb.go +++ b/nexgb/xgb.go @@ -2,19 +2,43 @@ package xgb import ( "errors" - "fmt" + "log" "io" "net" - "os" "sync" ) +func init() { + log.SetFlags(0) + log.SetPrefix("XGB:") +} + const ( // cookieBuffer represents the queue size of cookies existing at any // point in time. The size of the buffer is really only important when // there are many requests without replies made in sequence. Once the // buffer fills, a round trip request is made to clear the buffer. cookieBuffer = 1000 + + // xidBuffer represents the queue size of the xid channel. + // I don't think this value matters much, since xid generation is not + // that expensive. + xidBuffer = 5 + + // seqBuffer represents the queue size of the sequence number channel. + // I don't think this value matters much, since sequence number generation + // is not that expensive. + seqBuffer = 5 + + // reqBuffer represents the queue size of the number of requests that + // can be made until new ones block. This value seems OK. + reqBuffer = 100 + + // eventBuffer represents the queue size of the number of events or errors + // that can be loaded off the wire and not grabbed with WaitForEvent + // until reading an event blocks. This value should be big enough to handle + // bursts of events. + eventBuffer = 500 ) // A Conn represents a connection to an X server. @@ -64,10 +88,10 @@ func NewConnDisplay(display string) (*Conn, error) { conn.extensions = make(map[string]byte) conn.cookieChan = make(chan *cookie, cookieBuffer) - conn.xidChan = make(chan xid, 5) - conn.seqChan = make(chan uint16, 20) - conn.reqChan = make(chan *request, 100) - conn.eventChan = make(chan eventOrError, 100) + conn.xidChan = make(chan xid, xidBuffer) + conn.seqChan = make(chan uint16, seqBuffer) + conn.reqChan = make(chan *request, reqBuffer) + conn.eventChan = make(chan eventOrError, eventBuffer) go conn.generateXIds() go conn.generateSeqIds() @@ -106,7 +130,7 @@ type newEventFun func(buf []byte) Event var newEventFuncs = make(map[int]newEventFun) // newExtEventFuncs is a temporary map that stores event constructor functions -// for each extension. When an extension is initialize, each event for that +// for each extension. When an extension is initialized, each event for that // extension is added to the 'newEventFuncs' map. var newExtEventFuncs = make(map[string]map[int]newEventFun) @@ -119,9 +143,16 @@ type Error interface { Error() string } +type newErrorFun func(buf []byte) Error + // newErrorFuncs is a map from error numbers to functions that create // the corresponding error. -var newErrorFuncs = map[int]func(buf []byte) Error{} +var newErrorFuncs = make(map[int]newErrorFun) + +// newExtErrorFuncs is a temporary map that stores error constructor functions +// for each extension. When an extension is initialized, each error for that +// extension is added to the 'newErrorFuncs' map. +var newExtErrorFuncs = make(map[string]map[int]newErrorFun) // eventOrError corresponds to values that can be either an event or an // error. @@ -239,28 +270,22 @@ func (c *Conn) sendRequests() { cookie := c.newCookie(true, true) cookie.Sequence = c.newSequenceId() c.cookieChan <- cookie - if !c.writeBuffer(c.getInputFocusRequest()) { - return - } + c.writeBuffer(c.getInputFocusRequest()) GetInputFocusCookie{cookie}.Reply() // wait for the buffer to clear } req.cookie.Sequence = c.newSequenceId() c.cookieChan <- req.cookie - if !c.writeBuffer(req.buf) { - return - } + c.writeBuffer(req.buf) } } // writeBuffer is a convenience function for writing a byte slice to the wire. -func (c *Conn) writeBuffer(buf []byte) bool { +func (c *Conn) writeBuffer(buf []byte) { if _, err := c.conn.Write(buf); err != nil { - fmt.Fprintf(os.Stderr, "x protocol write error: %s\n", err) - close(c.reqChan) - return false + log.Printf("Write error: %s", err) + log.Fatal("A write error is unrecoverable. Exiting...") } - return true } // readResponses is a goroutine that reads events, errors and @@ -285,9 +310,8 @@ func (c *Conn) readResponses() { err, event, seq = nil, nil, 0 if _, err := io.ReadFull(c.conn, buf); err != nil { - fmt.Fprintf(os.Stderr, "x protocol read error: %s\n", err) - close(c.eventChan) - break + log.Printf("Read error: %s", err) + log.Fatal("A read error is unrecoverable. Exiting...") } switch buf[0] { @@ -296,10 +320,8 @@ func (c *Conn) readResponses() { // generated) by looking it up by the error number. newErrFun, ok := newErrorFuncs[int(buf[1])] if !ok { - fmt.Fprintf(os.Stderr, - "BUG: "+ - "Could not find error constructor function for error "+ - "with number %d.\n", buf[1]) + log.Printf("BUG: Could not find error constructor function " + + "for error with number %d.", buf[1]) continue } err = newErrFun(buf) @@ -317,9 +339,8 @@ func (c *Conn) readResponses() { biggerBuf := make([]byte, byteCount) copy(biggerBuf[:32], buf) if _, err := io.ReadFull(c.conn, biggerBuf[32:]); err != nil { - fmt.Fprintf(os.Stderr, "x protocol read error: %s\n", err) - close(c.eventChan) - break + log.Printf("Read error: %s", err) + log.Fatal("A read error is unrecoverable. Exiting...") } replyBytes = biggerBuf } else { @@ -336,17 +357,24 @@ func (c *Conn) readResponses() { evNum := int(buf[0] & 127) newEventFun, ok := newEventFuncs[evNum] if !ok { - fmt.Fprintf(os.Stderr, - "BUG: "+ - "Could not find event constructor function for event "+ - "with number %d.", evNum) + log.Printf("BUG: Could not find event construct function " + + "for event with number %d.", evNum) continue } event = newEventFun(buf) // Put the event into the queue. - c.eventChan <- event + // FIXME: I'm not sure if using a goroutine here to guarantee + // a non-blocking send is the right way to go. I should implement + // a proper dynamic queue. + if cap(c.eventChan) == len(c.eventChan) { + go func() { + c.eventChan <- event + }() + } else { + c.eventChan <- event + } // No more processing for events. continue @@ -376,9 +404,8 @@ func (c *Conn) readResponses() { } } else { // this is a reply if cookie.replyChan == nil { - fmt.Fprintf(os.Stderr, - "Reply with sequence id %d does not have a "+ - "cookie with a valid reply channel.\n", seq) + log.Printf("Reply with sequence id %d does not have a "+ + "cookie with a valid reply channel.", seq) continue } else { cookie.replyChan <- replyBytes @@ -390,16 +417,14 @@ func (c *Conn) readResponses() { switch { // Checked requests with replies case cookie.replyChan != nil && cookie.errorChan != nil: - fmt.Fprintf(os.Stderr, - "Found cookie with sequence id %d that is expecting a "+ - "reply but will never get it. Currently on sequence "+ - "number %d\n", cookie.Sequence, seq) + log.Printf("Found cookie with sequence id %d that is " + + "expecting a reply but will never get it. Currently " + + "on sequence number %d", cookie.Sequence, seq) // Unchecked requests with replies case cookie.replyChan != nil && cookie.pingChan != nil: - fmt.Fprintf(os.Stderr, - "Found cookie with sequence id %d that is expecting a "+ - "reply (and not an error) but will never get it. "+ - "Currently on sequence number %d\n", + log.Printf("Found cookie with sequence id %d that is " + + "expecting a reply (and not an error) but will never " + + "get it. Currently on sequence number %d", cookie.Sequence, seq) // Checked requests without replies case cookie.pingChan != nil && cookie.errorChan != nil: @@ -420,7 +445,7 @@ func processEventOrError(everr eventOrError) (Event, Error) { case Error: return nil, ee default: - fmt.Fprintf(os.Stderr, "Invalid event/error type: %T\n", everr) + log.Printf("Invalid event/error type: %T", everr) return nil, nil } panic("unreachable") diff --git a/nexgb/xgb_help.go b/nexgb/xgb_help.go index 6d07938..6c3b40a 100644 --- a/nexgb/xgb_help.go +++ b/nexgb/xgb_help.go @@ -1,7 +1,6 @@ package xgb import ( - "errors" "fmt" "strings" ) @@ -17,10 +16,10 @@ func sprintf(format string, v ...interface{}) string { return fmt.Sprintf(format, v...) } -// newError is just a wrapper for errors.New. Exists for the same reason +// errorf is just a wrapper for fmt.Errorf. Exists for the same reason // that 'stringsJoin' and 'sprintf' exists. -func newError(format string, v ...interface{}) error { - return errors.New(fmt.Sprintf(format, v...)) +func errorf(format string, v ...interface{}) error { + return fmt.Errorf(format, v...) } // Pad a length to align on 4 bytes. diff --git a/nexgb/xgb_test.go b/nexgb/xgb_test.go index b70ff5e..7eea19b 100644 --- a/nexgb/xgb_test.go +++ b/nexgb/xgb_test.go @@ -162,6 +162,24 @@ func TestWindowEvents(t *testing.T) { t.Fatalf("ConfigureWindow: %s", err) } + err = X.ConfigureWindowChecked(wid, + ConfigWindowX|ConfigWindowY| + ConfigWindowWidth|ConfigWindowHeight, + []uint32{uint32(gx + 2), uint32(gy), uint32(gw), uint32(gh)}).Check() + if err != nil { + t.Fatalf("ConfigureWindow: %s", err) + } + + err = X.ConfigureWindowChecked(wid, + ConfigWindowX|ConfigWindowY| + ConfigWindowWidth|ConfigWindowHeight, + []uint32{uint32(gx + 1), uint32(gy), uint32(gw), uint32(gh)}).Check() + if err != nil { + t.Fatalf("ConfigureWindow: %s", err) + } + + TestProperty(t) + evOrErr := waitForEvent(t, 5) switch event := evOrErr.ev.(type) { case ConfigureNotifyEvent: diff --git a/nexgb/xgbgen/context.go b/nexgb/xgbgen/context.go index f1762d3..a7a1d1d 100644 --- a/nexgb/xgbgen/context.go +++ b/nexgb/xgbgen/context.go @@ -86,7 +86,7 @@ func (c *Context) Morph(xmlBytes []byte) { c.Putln("case err != nil:") c.Putln("return err") c.Putln("case !reply.Present:") - c.Putln("return newError(\"No extension named %s could be found on "+ + c.Putln("return errorf(\"No extension named %s could be found on "+ "on the server.\")", xname) c.Putln("}") c.Putln("") @@ -95,6 +95,9 @@ func (c *Context) Morph(xmlBytes []byte) { c.Putln("for evNum, fun := range newExtEventFuncs[\"%s\"] {", xname) c.Putln("newEventFuncs[int(reply.FirstEvent) + evNum] = fun") c.Putln("}") + c.Putln("for errNum, fun := range newExtErrorFuncs[\"%s\"] {", xname) + c.Putln("newErrorFuncs[int(reply.FirstError) + errNum] = fun") + c.Putln("}") c.Putln("c.extLock.Unlock()") c.Putln("") c.Putln("return nil") @@ -102,8 +105,10 @@ func (c *Context) Morph(xmlBytes []byte) { c.Putln("") // Make sure newExtEventFuncs["EXT_NAME"] map is initialized. + // Same deal for newExtErrorFuncs["EXT_NAME"] c.Putln("func init() {") c.Putln("newExtEventFuncs[\"%s\"] = make(map[int]newEventFun)", xname) + c.Putln("newExtErrorFuncs[\"%s\"] = make(map[int]newErrorFun)", xname) c.Putln("}") c.Putln("") } diff --git a/nexgb/xgbgen/go_error.go b/nexgb/xgbgen/go_error.go index 9e01042..c96866c 100644 --- a/nexgb/xgbgen/go_error.go +++ b/nexgb/xgbgen/go_error.go @@ -29,7 +29,12 @@ func (e *Error) Define(c *Context) { // Let's the XGB event loop read this error. c.Putln("func init() {") - c.Putln("newErrorFuncs[%d] = New%s", e.Number, e.ErrType()) + if c.protocol.isExt() { + c.Putln("newExtErrorFuncs[\"%s\"][%d] = New%s", + c.protocol.ExtXName, e.Number, e.ErrType()) + } else { + c.Putln("newErrorFuncs[%d] = New%s", e.Number, e.ErrType()) + } c.Putln("}") c.Putln("") } @@ -95,7 +100,12 @@ func (e *ErrorCopy) Define(c *Context) { // Let's the XGB know how to read this error. c.Putln("func init() {") - c.Putln("newErrorFuncs[%d] = New%s", e.Number, e.ErrType()) + if c.protocol.isExt() { + c.Putln("newExtErrorFuncs[\"%s\"][%d] = New%s", + c.protocol.ExtXName, e.Number, e.ErrType()) + } else { + c.Putln("newErrorFuncs[%d] = New%s", e.Number, e.ErrType()) + } c.Putln("}") c.Putln("") } -- cgit v1.2.3-70-g09d2