diff --git a/CONTRIBUTORS b/CONTRIBUTORS
--- a/CONTRIBUTORS
+++ b/CONTRIBUTORS
@@ -3,4 +3,4 @@
 Antoine Latter <aslatter@gmail.com>
 Spencer Janssen
 Artyom Shalkhakov
-
+Bart Massey
diff --git a/patched/Graphics/XHB/Gen/DPMS.hs b/patched/Graphics/XHB/Gen/DPMS.hs
--- a/patched/Graphics/XHB/Gen/DPMS.hs
+++ b/patched/Graphics/XHB/Gen/DPMS.hs
@@ -1,6 +1,6 @@
 module Graphics.XHB.Gen.DPMS
-       (extension, getVersion, capable, getTimeouts, setTimeouts,
-        forceLevel, info, module Graphics.XHB.Gen.DPMS.Types)
+       (extension, getVersion, capable, getTimeouts, setTimeouts, enable,
+        disable, forceLevel, info, module Graphics.XHB.Gen.DPMS.Types)
        where
 import Graphics.XHB.Gen.DPMS.Types
 import Graphics.XHB.Connection.Internal
@@ -54,6 +54,20 @@
               Graphics.XHB.Connection.Types.Connection -> SetTimeouts -> IO ()
 setTimeouts c req
   = do putAction <- serializeExtensionRequest c req
+       let chunk = runPut putAction
+       sendRequest c chunk
+ 
+enable :: Graphics.XHB.Connection.Types.Connection -> IO ()
+enable c
+  = do let req = MkEnable
+       putAction <- serializeExtensionRequest c req
+       let chunk = runPut putAction
+       sendRequest c chunk
+ 
+disable :: Graphics.XHB.Connection.Types.Connection -> IO ()
+disable c
+  = do let req = MkDisable
+       putAction <- serializeExtensionRequest c req
        let chunk = runPut putAction
        sendRequest c chunk
  
diff --git a/patched/Graphics/XHB/Gen/DPMS/Types.hs b/patched/Graphics/XHB/Gen/DPMS/Types.hs
--- a/patched/Graphics/XHB/Gen/DPMS/Types.hs
+++ b/patched/Graphics/XHB/Gen/DPMS/Types.hs
@@ -1,8 +1,8 @@
 module Graphics.XHB.Gen.DPMS.Types
        (deserializeError, deserializeEvent, GetVersion(..),
         GetVersionReply(..), Capable(..), CapableReply(..),
-        GetTimeouts(..), GetTimeoutsReply(..), SetTimeouts(..),
-        DPMSMode(..), ForceLevel(..), Info(..), InfoReply(..))
+        GetTimeouts(..), GetTimeoutsReply(..), SetTimeouts(..), Enable(..),
+        Disable(..), DPMSMode(..), ForceLevel(..), Info(..), InfoReply(..))
        where
 import Data.Word
 import Data.Int
@@ -135,6 +135,30 @@
                serialize (standby_timeout_SetTimeouts x)
                serialize (suspend_timeout_SetTimeouts x)
                serialize (off_timeout_SetTimeouts x)
+               putSkip (requiredPadding size__)
+ 
+data Enable = MkEnable{}
+            deriving (Show, Typeable)
+ 
+instance ExtensionRequest Enable where
+        extensionId _ = "DPMS"
+        serializeRequest x extOpCode
+          = do putWord8 extOpCode
+               putWord8 4
+               let size__ = 4
+               serialize (convertBytesToRequestSize size__ :: Int16)
+               putSkip (requiredPadding size__)
+ 
+data Disable = MkDisable{}
+             deriving (Show, Typeable)
+ 
+instance ExtensionRequest Disable where
+        extensionId _ = "DPMS"
+        serializeRequest x extOpCode
+          = do putWord8 extOpCode
+               putWord8 5
+               let size__ = 4
+               serialize (convertBytesToRequestSize size__ :: Int16)
                putSkip (requiredPadding size__)
  
 data DPMSMode = DPMSModeOn
diff --git a/patched/Graphics/XHB/Gen/DRI2.hs b/patched/Graphics/XHB/Gen/DRI2.hs
new file mode 100644
--- /dev/null
+++ b/patched/Graphics/XHB/Gen/DRI2.hs
@@ -0,0 +1,102 @@
+module Graphics.XHB.Gen.DRI2
+       (extension, queryVersion, connect, authenticate, createDrawable,
+        destroyDrawable, getBuffers, copyRegion, getBuffersWithFormat,
+        module Graphics.XHB.Gen.DRI2.Types)
+       where
+import Graphics.XHB.Gen.DRI2.Types
+import Graphics.XHB.Connection.Internal
+import Graphics.XHB.Connection.Extension
+import Graphics.XHB.Connection.Types
+import Control.Concurrent.STM
+import Foreign.C.Types
+import Data.Word
+import Data.Int
+import Data.Binary.Get
+import Data.Binary.Put (runPut)
+import Graphics.XHB.Shared hiding (Event(..), Error(..))
+import Graphics.XHB.Gen.Xproto.Types
+       hiding (deserializeError, deserializeEvent)
+import qualified Graphics.XHB.Gen.Xproto.Types
+ 
+extension :: ExtensionId
+extension = "DRI2"
+ 
+queryVersion ::
+               Graphics.XHB.Connection.Types.Connection ->
+                 Word32 -> Word32 -> IO (Receipt QueryVersionReply)
+queryVersion c major_version minor_version
+  = do (receipt, rReceipt) <- newDeserReceipt
+       let req = MkQueryVersion major_version minor_version
+       putAction <- serializeExtensionRequest c req
+       let chunk = runPut putAction
+       sendRequestWithReply c chunk rReceipt
+       return receipt
+ 
+connect ::
+          Graphics.XHB.Connection.Types.Connection ->
+            WINDOW -> DriverType -> IO (Receipt ConnectReply)
+connect c window driver_type
+  = do (receipt, rReceipt) <- newDeserReceipt
+       let req = MkConnect window driver_type
+       putAction <- serializeExtensionRequest c req
+       let chunk = runPut putAction
+       sendRequestWithReply c chunk rReceipt
+       return receipt
+ 
+authenticate ::
+               Graphics.XHB.Connection.Types.Connection ->
+                 WINDOW -> Word32 -> IO (Receipt Word32)
+authenticate c window magic
+  = do (receipt, rReceipt) <- newEmptyReceipt
+                                (runGet (authenticated_AuthenticateReply `fmap` deserialize))
+       let req = MkAuthenticate window magic
+       putAction <- serializeExtensionRequest c req
+       let chunk = runPut putAction
+       sendRequestWithReply c chunk rReceipt
+       return receipt
+ 
+createDrawable ::
+                 Graphics.XHB.Connection.Types.Connection -> DRAWABLE -> IO ()
+createDrawable c drawable
+  = do let req = MkCreateDrawable drawable
+       putAction <- serializeExtensionRequest c req
+       let chunk = runPut putAction
+       sendRequest c chunk
+ 
+destroyDrawable ::
+                  Graphics.XHB.Connection.Types.Connection -> DRAWABLE -> IO ()
+destroyDrawable c drawable
+  = do let req = MkDestroyDrawable drawable
+       putAction <- serializeExtensionRequest c req
+       let chunk = runPut putAction
+       sendRequest c chunk
+ 
+getBuffers ::
+             Graphics.XHB.Connection.Types.Connection ->
+               GetBuffers -> IO (Receipt GetBuffersReply)
+getBuffers c req
+  = do (receipt, rReceipt) <- newDeserReceipt
+       putAction <- serializeExtensionRequest c req
+       let chunk = runPut putAction
+       sendRequestWithReply c chunk rReceipt
+       return receipt
+ 
+copyRegion ::
+             Graphics.XHB.Connection.Types.Connection ->
+               CopyRegion -> IO (Receipt CopyRegionReply)
+copyRegion c req
+  = do (receipt, rReceipt) <- newDeserReceipt
+       putAction <- serializeExtensionRequest c req
+       let chunk = runPut putAction
+       sendRequestWithReply c chunk rReceipt
+       return receipt
+ 
+getBuffersWithFormat ::
+                       Graphics.XHB.Connection.Types.Connection ->
+                         GetBuffersWithFormat -> IO (Receipt GetBuffersWithFormatReply)
+getBuffersWithFormat c req
+  = do (receipt, rReceipt) <- newDeserReceipt
+       putAction <- serializeExtensionRequest c req
+       let chunk = runPut putAction
+       sendRequestWithReply c chunk rReceipt
+       return receipt
diff --git a/patched/Graphics/XHB/Gen/DRI2/Types.hs b/patched/Graphics/XHB/Gen/DRI2/Types.hs
new file mode 100644
--- /dev/null
+++ b/patched/Graphics/XHB/Gen/DRI2/Types.hs
@@ -0,0 +1,364 @@
+module Graphics.XHB.Gen.DRI2.Types
+       (deserializeError, deserializeEvent, Attachment(..),
+        DriverType(..), DRI2Buffer(..), AttachFormat(..), QueryVersion(..),
+        QueryVersionReply(..), Connect(..), ConnectReply(..),
+        Authenticate(..), AuthenticateReply(..), CreateDrawable(..),
+        DestroyDrawable(..), GetBuffers(..), GetBuffersReply(..),
+        CopyRegion(..), CopyRegionReply(..), GetBuffersWithFormat(..),
+        GetBuffersWithFormatReply(..))
+       where
+import Data.Word
+import Data.Int
+import Foreign.C.Types
+import Data.Bits
+import Data.Binary.Put
+import Data.Binary.Get
+import Data.Typeable
+import Control.Monad
+import Control.Exception
+import Data.List
+import Graphics.XHB.Shared hiding (Event, Error)
+import qualified Graphics.XHB.Shared
+import Graphics.XHB.Gen.Xproto.Types
+       hiding (deserializeError, deserializeEvent)
+import qualified Graphics.XHB.Gen.Xproto.Types
+ 
+deserializeError :: Word8 -> Maybe (Get SomeError)
+deserializeError _ = Nothing
+ 
+deserializeEvent :: Word8 -> Maybe (Get SomeEvent)
+deserializeEvent _ = Nothing
+ 
+data Attachment = AttachmentBufferFrontLeft
+                | AttachmentBufferBackLeft
+                | AttachmentBufferFrontRight
+                | AttachmentBufferBackRight
+                | AttachmentBufferDepth
+                | AttachmentBufferStencil
+                | AttachmentBufferAccum
+                | AttachmentBufferFakeFrontLeft
+                | AttachmentBufferFakeFrontRight
+                | AttachmentBufferDepthStencil
+                deriving Show
+ 
+instance SimpleEnum Attachment where
+        toValue AttachmentBufferFrontLeft{} = 0
+        toValue AttachmentBufferBackLeft{} = 1
+        toValue AttachmentBufferFrontRight{} = 2
+        toValue AttachmentBufferBackRight{} = 3
+        toValue AttachmentBufferDepth{} = 4
+        toValue AttachmentBufferStencil{} = 5
+        toValue AttachmentBufferAccum{} = 6
+        toValue AttachmentBufferFakeFrontLeft{} = 7
+        toValue AttachmentBufferFakeFrontRight{} = 8
+        toValue AttachmentBufferDepthStencil{} = 9
+        fromValue 0 = AttachmentBufferFrontLeft
+        fromValue 1 = AttachmentBufferBackLeft
+        fromValue 2 = AttachmentBufferFrontRight
+        fromValue 3 = AttachmentBufferBackRight
+        fromValue 4 = AttachmentBufferDepth
+        fromValue 5 = AttachmentBufferStencil
+        fromValue 6 = AttachmentBufferAccum
+        fromValue 7 = AttachmentBufferFakeFrontLeft
+        fromValue 8 = AttachmentBufferFakeFrontRight
+        fromValue 9 = AttachmentBufferDepthStencil
+ 
+data DriverType = DriverTypeDRI
+                deriving Show
+ 
+instance SimpleEnum DriverType where
+        toValue DriverTypeDRI{} = 0
+        fromValue 0 = DriverTypeDRI
+ 
+data DRI2Buffer = MkDRI2Buffer{attachment_DRI2Buffer :: Attachment,
+                               name_DRI2Buffer :: Word32, pitch_DRI2Buffer :: Word32,
+                               cpp_DRI2Buffer :: Word32, flags_DRI2Buffer :: Word32}
+                deriving (Show, Typeable)
+ 
+instance Serialize DRI2Buffer where
+        serialize x
+          = do serialize (toValue (attachment_DRI2Buffer x) :: Word32)
+               serialize (name_DRI2Buffer x)
+               serialize (pitch_DRI2Buffer x)
+               serialize (cpp_DRI2Buffer x)
+               serialize (flags_DRI2Buffer x)
+        size x
+          = size (undefined :: Word32) + size (name_DRI2Buffer x) +
+              size (pitch_DRI2Buffer x)
+              + size (cpp_DRI2Buffer x)
+              + size (flags_DRI2Buffer x)
+ 
+instance Deserialize DRI2Buffer where
+        deserialize
+          = do attachment <- liftM fromValue (deserialize :: Get Word32)
+               name <- deserialize
+               pitch <- deserialize
+               cpp <- deserialize
+               flags <- deserialize
+               return (MkDRI2Buffer attachment name pitch cpp flags)
+ 
+data AttachFormat = MkAttachFormat{attachment_AttachFormat ::
+                                   Attachment,
+                                   format_AttachFormat :: Word32}
+                  deriving (Show, Typeable)
+ 
+instance Serialize AttachFormat where
+        serialize x
+          = do serialize (toValue (attachment_AttachFormat x) :: Word32)
+               serialize (format_AttachFormat x)
+        size x = size (undefined :: Word32) + size (format_AttachFormat x)
+ 
+instance Deserialize AttachFormat where
+        deserialize
+          = do attachment <- liftM fromValue (deserialize :: Get Word32)
+               format <- deserialize
+               return (MkAttachFormat attachment format)
+ 
+data QueryVersion = MkQueryVersion{major_version_QueryVersion ::
+                                   Word32,
+                                   minor_version_QueryVersion :: Word32}
+                  deriving (Show, Typeable)
+ 
+instance ExtensionRequest QueryVersion where
+        extensionId _ = "DRI2"
+        serializeRequest x extOpCode
+          = do putWord8 extOpCode
+               putWord8 0
+               let size__
+                     = 4 + size (major_version_QueryVersion x) +
+                         size (minor_version_QueryVersion x)
+               serialize (convertBytesToRequestSize size__ :: Int16)
+               serialize (major_version_QueryVersion x)
+               serialize (minor_version_QueryVersion x)
+               putSkip (requiredPadding size__)
+ 
+data QueryVersionReply = MkQueryVersionReply{major_version_QueryVersionReply
+                                             :: Word32,
+                                             minor_version_QueryVersionReply :: Word32}
+                       deriving (Show, Typeable)
+ 
+instance Deserialize QueryVersionReply where
+        deserialize
+          = do skip 1
+               skip 1
+               skip 2
+               length <- deserialize
+               major_version <- deserialize
+               minor_version <- deserialize
+               let _ = isCard32 length
+               return (MkQueryVersionReply major_version minor_version)
+ 
+data Connect = MkConnect{window_Connect :: WINDOW,
+                         driver_type_Connect :: DriverType}
+             deriving (Show, Typeable)
+ 
+instance ExtensionRequest Connect where
+        extensionId _ = "DRI2"
+        serializeRequest x extOpCode
+          = do putWord8 extOpCode
+               putWord8 1
+               let size__
+                     = 4 + size (window_Connect x) + size (undefined :: Word32)
+               serialize (convertBytesToRequestSize size__ :: Int16)
+               serialize (window_Connect x)
+               serialize (toValue (driver_type_Connect x) :: Word32)
+               putSkip (requiredPadding size__)
+ 
+data ConnectReply = MkConnectReply{driver_name_length_ConnectReply
+                                   :: Word32,
+                                   device_name_length_ConnectReply :: Word32,
+                                   driver_name_ConnectReply :: [CChar],
+                                   device_name_ConnectReply :: [CChar]}
+                  deriving (Show, Typeable)
+ 
+instance Deserialize ConnectReply where
+        deserialize
+          = do skip 1
+               skip 1
+               skip 2
+               length <- deserialize
+               driver_name_length <- deserialize
+               device_name_length <- deserialize
+               skip 16
+               driver_name <- deserializeList (fromIntegral driver_name_length)
+               device_name <- deserializeList (fromIntegral device_name_length)
+               let _ = isCard32 length
+               return
+                 (MkConnectReply driver_name_length device_name_length driver_name
+                    device_name)
+ 
+data Authenticate = MkAuthenticate{window_Authenticate :: WINDOW,
+                                   magic_Authenticate :: Word32}
+                  deriving (Show, Typeable)
+ 
+instance ExtensionRequest Authenticate where
+        extensionId _ = "DRI2"
+        serializeRequest x extOpCode
+          = do putWord8 extOpCode
+               putWord8 2
+               let size__
+                     = 4 + size (window_Authenticate x) + size (magic_Authenticate x)
+               serialize (convertBytesToRequestSize size__ :: Int16)
+               serialize (window_Authenticate x)
+               serialize (magic_Authenticate x)
+               putSkip (requiredPadding size__)
+ 
+data AuthenticateReply = MkAuthenticateReply{authenticated_AuthenticateReply
+                                             :: Word32}
+                       deriving (Show, Typeable)
+ 
+instance Deserialize AuthenticateReply where
+        deserialize
+          = do skip 1
+               skip 1
+               skip 2
+               length <- deserialize
+               authenticated <- deserialize
+               let _ = isCard32 length
+               return (MkAuthenticateReply authenticated)
+ 
+data CreateDrawable = MkCreateDrawable{drawable_CreateDrawable ::
+                                       DRAWABLE}
+                    deriving (Show, Typeable)
+ 
+instance ExtensionRequest CreateDrawable where
+        extensionId _ = "DRI2"
+        serializeRequest x extOpCode
+          = do putWord8 extOpCode
+               putWord8 3
+               let size__ = 4 + size (drawable_CreateDrawable x)
+               serialize (convertBytesToRequestSize size__ :: Int16)
+               serialize (drawable_CreateDrawable x)
+               putSkip (requiredPadding size__)
+ 
+data DestroyDrawable = MkDestroyDrawable{drawable_DestroyDrawable
+                                         :: DRAWABLE}
+                     deriving (Show, Typeable)
+ 
+instance ExtensionRequest DestroyDrawable where
+        extensionId _ = "DRI2"
+        serializeRequest x extOpCode
+          = do putWord8 extOpCode
+               putWord8 4
+               let size__ = 4 + size (drawable_DestroyDrawable x)
+               serialize (convertBytesToRequestSize size__ :: Int16)
+               serialize (drawable_DestroyDrawable x)
+               putSkip (requiredPadding size__)
+ 
+data GetBuffers = MkGetBuffers{drawable_GetBuffers :: DRAWABLE,
+                               count_GetBuffers :: Word32, attachments_GetBuffers :: [Word32]}
+                deriving (Show, Typeable)
+ 
+instance ExtensionRequest GetBuffers where
+        extensionId _ = "DRI2"
+        serializeRequest x extOpCode
+          = do putWord8 extOpCode
+               putWord8 5
+               let size__
+                     = 4 + size (drawable_GetBuffers x) + size (count_GetBuffers x) +
+                         sum (map size (attachments_GetBuffers x))
+               serialize (convertBytesToRequestSize size__ :: Int16)
+               serialize (drawable_GetBuffers x)
+               serialize (count_GetBuffers x)
+               serializeList (attachments_GetBuffers x)
+               putSkip (requiredPadding size__)
+ 
+data GetBuffersReply = MkGetBuffersReply{width_GetBuffersReply ::
+                                         Word32,
+                                         height_GetBuffersReply :: Word32,
+                                         count_GetBuffersReply :: Word32,
+                                         buffers_GetBuffersReply :: [DRI2Buffer]}
+                     deriving (Show, Typeable)
+ 
+instance Deserialize GetBuffersReply where
+        deserialize
+          = do skip 1
+               skip 1
+               skip 2
+               length <- deserialize
+               width <- deserialize
+               height <- deserialize
+               count <- deserialize
+               skip 12
+               buffers <- deserializeList (fromIntegral count)
+               let _ = isCard32 length
+               return (MkGetBuffersReply width height count buffers)
+ 
+data CopyRegion = MkCopyRegion{drawable_CopyRegion :: DRAWABLE,
+                               region_CopyRegion :: Word32, dest_CopyRegion :: Word32,
+                               src_CopyRegion :: Word32}
+                deriving (Show, Typeable)
+ 
+instance ExtensionRequest CopyRegion where
+        extensionId _ = "DRI2"
+        serializeRequest x extOpCode
+          = do putWord8 extOpCode
+               putWord8 6
+               let size__
+                     = 4 + size (drawable_CopyRegion x) + size (region_CopyRegion x) +
+                         size (dest_CopyRegion x)
+                         + size (src_CopyRegion x)
+               serialize (convertBytesToRequestSize size__ :: Int16)
+               serialize (drawable_CopyRegion x)
+               serialize (region_CopyRegion x)
+               serialize (dest_CopyRegion x)
+               serialize (src_CopyRegion x)
+               putSkip (requiredPadding size__)
+ 
+data CopyRegionReply = MkCopyRegionReply{}
+                     deriving (Show, Typeable)
+ 
+instance Deserialize CopyRegionReply where
+        deserialize
+          = do skip 1
+               skip 1
+               skip 2
+               length <- deserialize
+               let _ = isCard32 length
+               return (MkCopyRegionReply)
+ 
+data GetBuffersWithFormat = MkGetBuffersWithFormat{drawable_GetBuffersWithFormat
+                                                   :: DRAWABLE,
+                                                   count_GetBuffersWithFormat :: Word32,
+                                                   attachments_GetBuffersWithFormat ::
+                                                   [AttachFormat]}
+                          deriving (Show, Typeable)
+ 
+instance ExtensionRequest GetBuffersWithFormat where
+        extensionId _ = "DRI2"
+        serializeRequest x extOpCode
+          = do putWord8 extOpCode
+               putWord8 7
+               let size__
+                     = 4 + size (drawable_GetBuffersWithFormat x) +
+                         size (count_GetBuffersWithFormat x)
+                         + sum (map size (attachments_GetBuffersWithFormat x))
+               serialize (convertBytesToRequestSize size__ :: Int16)
+               serialize (drawable_GetBuffersWithFormat x)
+               serialize (count_GetBuffersWithFormat x)
+               serializeList (attachments_GetBuffersWithFormat x)
+               putSkip (requiredPadding size__)
+ 
+data GetBuffersWithFormatReply = MkGetBuffersWithFormatReply{width_GetBuffersWithFormatReply
+                                                             :: Word32,
+                                                             height_GetBuffersWithFormatReply ::
+                                                             Word32,
+                                                             count_GetBuffersWithFormatReply ::
+                                                             Word32,
+                                                             buffers_GetBuffersWithFormatReply ::
+                                                             [DRI2Buffer]}
+                               deriving (Show, Typeable)
+ 
+instance Deserialize GetBuffersWithFormatReply where
+        deserialize
+          = do skip 1
+               skip 1
+               skip 2
+               length <- deserialize
+               width <- deserialize
+               height <- deserialize
+               count <- deserialize
+               skip 12
+               buffers <- deserializeList (fromIntegral count)
+               let _ = isCard32 length
+               return (MkGetBuffersWithFormatReply width height count buffers)
diff --git a/patched/Graphics/XHB/Gen/Extension.hs b/patched/Graphics/XHB/Gen/Extension.hs
--- a/patched/Graphics/XHB/Gen/Extension.hs
+++ b/patched/Graphics/XHB/Gen/Extension.hs
@@ -6,6 +6,7 @@
 import qualified Graphics.XHB.Gen.Composite.Types
 import qualified Graphics.XHB.Gen.Damage.Types
 import qualified Graphics.XHB.Gen.DPMS.Types
+import qualified Graphics.XHB.Gen.DRI2.Types
 import qualified Graphics.XHB.Gen.Glx.Types
 import qualified Graphics.XHB.Gen.RandR.Types
 import qualified Graphics.XHB.Gen.Record.Types
@@ -35,6 +36,7 @@
 errorDispatch "DAMAGE"
   = Graphics.XHB.Gen.Damage.Types.deserializeError
 errorDispatch "DPMS" = Graphics.XHB.Gen.DPMS.Types.deserializeError
+errorDispatch "DRI2" = Graphics.XHB.Gen.DRI2.Types.deserializeError
 errorDispatch "GLX" = Graphics.XHB.Gen.Glx.Types.deserializeError
 errorDispatch "RANDR"
   = Graphics.XHB.Gen.RandR.Types.deserializeError
@@ -82,6 +84,7 @@
 eventDispatch "DAMAGE"
   = Graphics.XHB.Gen.Damage.Types.deserializeEvent
 eventDispatch "DPMS" = Graphics.XHB.Gen.DPMS.Types.deserializeEvent
+eventDispatch "DRI2" = Graphics.XHB.Gen.DRI2.Types.deserializeEvent
 eventDispatch "GLX" = Graphics.XHB.Gen.Glx.Types.deserializeEvent
 eventDispatch "RANDR"
   = Graphics.XHB.Gen.RandR.Types.deserializeEvent
diff --git a/patched/Graphics/XHB/Gen/Render/Types.hs b/patched/Graphics/XHB/Gen/Render/Types.hs
--- a/patched/Graphics/XHB/Gen/Render/Types.hs
+++ b/patched/Graphics/XHB/Gen/Render/Types.hs
@@ -114,30 +114,30 @@
         toValue PictOpXor{} = 11
         toValue PictOpAdd{} = 12
         toValue PictOpSaturate{} = 13
-        toValue PictOpDisjointClear{} = 14
-        toValue PictOpDisjointSrc{} = 15
-        toValue PictOpDisjointDst{} = 16
-        toValue PictOpDisjointOver{} = 17
-        toValue PictOpDisjointOverReverse{} = 18
-        toValue PictOpDisjointIn{} = 19
-        toValue PictOpDisjointInReverse{} = 20
-        toValue PictOpDisjointOut{} = 21
-        toValue PictOpDisjointOutReverse{} = 22
-        toValue PictOpDisjointAtop{} = 23
-        toValue PictOpDisjointAtopReverse{} = 24
-        toValue PictOpDisjointXor{} = 25
-        toValue PictOpConjointClear{} = 26
-        toValue PictOpConjointSrc{} = 27
-        toValue PictOpConjointDst{} = 28
-        toValue PictOpConjointOver{} = 29
-        toValue PictOpConjointOverReverse{} = 30
-        toValue PictOpConjointIn{} = 31
-        toValue PictOpConjointInReverse{} = 32
-        toValue PictOpConjointOut{} = 33
-        toValue PictOpConjointOutReverse{} = 34
-        toValue PictOpConjointAtop{} = 35
-        toValue PictOpConjointAtopReverse{} = 36
-        toValue PictOpConjointXor{} = 37
+        toValue PictOpDisjointClear{} = 16
+        toValue PictOpDisjointSrc{} = 17
+        toValue PictOpDisjointDst{} = 18
+        toValue PictOpDisjointOver{} = 19
+        toValue PictOpDisjointOverReverse{} = 20
+        toValue PictOpDisjointIn{} = 21
+        toValue PictOpDisjointInReverse{} = 22
+        toValue PictOpDisjointOut{} = 23
+        toValue PictOpDisjointOutReverse{} = 24
+        toValue PictOpDisjointAtop{} = 25
+        toValue PictOpDisjointAtopReverse{} = 26
+        toValue PictOpDisjointXor{} = 27
+        toValue PictOpConjointClear{} = 32
+        toValue PictOpConjointSrc{} = 33
+        toValue PictOpConjointDst{} = 34
+        toValue PictOpConjointOver{} = 35
+        toValue PictOpConjointOverReverse{} = 36
+        toValue PictOpConjointIn{} = 37
+        toValue PictOpConjointInReverse{} = 38
+        toValue PictOpConjointOut{} = 39
+        toValue PictOpConjointOutReverse{} = 40
+        toValue PictOpConjointAtop{} = 41
+        toValue PictOpConjointAtopReverse{} = 42
+        toValue PictOpConjointXor{} = 43
         fromValue 0 = PictOpClear
         fromValue 1 = PictOpSrc
         fromValue 2 = PictOpDst
@@ -152,30 +152,30 @@
         fromValue 11 = PictOpXor
         fromValue 12 = PictOpAdd
         fromValue 13 = PictOpSaturate
-        fromValue 14 = PictOpDisjointClear
-        fromValue 15 = PictOpDisjointSrc
-        fromValue 16 = PictOpDisjointDst
-        fromValue 17 = PictOpDisjointOver
-        fromValue 18 = PictOpDisjointOverReverse
-        fromValue 19 = PictOpDisjointIn
-        fromValue 20 = PictOpDisjointInReverse
-        fromValue 21 = PictOpDisjointOut
-        fromValue 22 = PictOpDisjointOutReverse
-        fromValue 23 = PictOpDisjointAtop
-        fromValue 24 = PictOpDisjointAtopReverse
-        fromValue 25 = PictOpDisjointXor
-        fromValue 26 = PictOpConjointClear
-        fromValue 27 = PictOpConjointSrc
-        fromValue 28 = PictOpConjointDst
-        fromValue 29 = PictOpConjointOver
-        fromValue 30 = PictOpConjointOverReverse
-        fromValue 31 = PictOpConjointIn
-        fromValue 32 = PictOpConjointInReverse
-        fromValue 33 = PictOpConjointOut
-        fromValue 34 = PictOpConjointOutReverse
-        fromValue 35 = PictOpConjointAtop
-        fromValue 36 = PictOpConjointAtopReverse
-        fromValue 37 = PictOpConjointXor
+        fromValue 16 = PictOpDisjointClear
+        fromValue 17 = PictOpDisjointSrc
+        fromValue 18 = PictOpDisjointDst
+        fromValue 19 = PictOpDisjointOver
+        fromValue 20 = PictOpDisjointOverReverse
+        fromValue 21 = PictOpDisjointIn
+        fromValue 22 = PictOpDisjointInReverse
+        fromValue 23 = PictOpDisjointOut
+        fromValue 24 = PictOpDisjointOutReverse
+        fromValue 25 = PictOpDisjointAtop
+        fromValue 26 = PictOpDisjointAtopReverse
+        fromValue 27 = PictOpDisjointXor
+        fromValue 32 = PictOpConjointClear
+        fromValue 33 = PictOpConjointSrc
+        fromValue 34 = PictOpConjointDst
+        fromValue 35 = PictOpConjointOver
+        fromValue 36 = PictOpConjointOverReverse
+        fromValue 37 = PictOpConjointIn
+        fromValue 38 = PictOpConjointInReverse
+        fromValue 39 = PictOpConjointOut
+        fromValue 40 = PictOpConjointOutReverse
+        fromValue 41 = PictOpConjointAtop
+        fromValue 42 = PictOpConjointAtopReverse
+        fromValue 43 = PictOpConjointXor
  
 data PolyEdge = PolyEdgeSharp
               | PolyEdgeSmooth
diff --git a/patched/Graphics/XHB/Gen/Shape/Types.hs b/patched/Graphics/XHB/Gen/Shape/Types.hs
--- a/patched/Graphics/XHB/Gen/Shape/Types.hs
+++ b/patched/Graphics/XHB/Gen/Shape/Types.hs
@@ -372,6 +372,7 @@
                skip 2
                length <- deserialize
                rectangles_len <- deserialize
+               skip 20
                rectangles <- deserializeList (fromIntegral rectangles_len)
                let _ = isCard32 length
                return (MkGetRectanglesReply ordering rectangles_len rectangles)
diff --git a/patched/Graphics/XHB/Gen/XF86Dri/Types.hs b/patched/Graphics/XHB/Gen/XF86Dri/Types.hs
--- a/patched/Graphics/XHB/Gen/XF86Dri/Types.hs
+++ b/patched/Graphics/XHB/Gen/XF86Dri/Types.hs
@@ -128,10 +128,8 @@
                serialize (screen_OpenConnection x)
                putSkip (requiredPadding size__)
  
-data OpenConnectionReply = MkOpenConnectionReply{drm_client_key_low_OpenConnectionReply
+data OpenConnectionReply = MkOpenConnectionReply{sarea_handle_low_OpenConnectionReply
                                                  :: Word32,
-                                                 drm_client_key_high_OpenConnectionReply :: Word32,
-                                                 sarea_handle_low_OpenConnectionReply :: Word32,
                                                  sarea_handle_high_OpenConnectionReply :: Word32,
                                                  bus_id_len_OpenConnectionReply :: Word32,
                                                  bus_id_OpenConnectionReply :: [CChar]}
@@ -143,8 +141,6 @@
                skip 1
                skip 2
                length <- deserialize
-               drm_client_key_low <- deserialize
-               drm_client_key_high <- deserialize
                sarea_handle_low <- deserialize
                sarea_handle_high <- deserialize
                bus_id_len <- deserialize
@@ -152,9 +148,7 @@
                bus_id <- deserializeList (fromIntegral bus_id_len)
                let _ = isCard32 length
                return
-                 (MkOpenConnectionReply drm_client_key_low drm_client_key_high
-                    sarea_handle_low
-                    sarea_handle_high
+                 (MkOpenConnectionReply sarea_handle_low sarea_handle_high
                     bus_id_len
                     bus_id)
  
@@ -219,9 +213,9 @@
                     client_driver_name_len
                     client_driver_name)
  
-data CreateContext = MkCreateContext{visual_CreateContext ::
+data CreateContext = MkCreateContext{screen_CreateContext ::
                                      Word32,
-                                     screen_CreateContext :: Word32,
+                                     visual_CreateContext :: Word32,
                                      context_CreateContext :: Word32}
                    deriving (Show, Typeable)
  
@@ -231,11 +225,11 @@
           = do putWord8 extOpCode
                putWord8 5
                let size__
-                     = 4 + size (visual_CreateContext x) + size (screen_CreateContext x)
+                     = 4 + size (screen_CreateContext x) + size (visual_CreateContext x)
                          + size (context_CreateContext x)
                serialize (convertBytesToRequestSize size__ :: Int16)
-               serialize (visual_CreateContext x)
                serialize (screen_CreateContext x)
+               serialize (visual_CreateContext x)
                serialize (context_CreateContext x)
                putSkip (requiredPadding size__)
  
diff --git a/patched/Graphics/XHB/Gen/XFixes/Types.hs b/patched/Graphics/XHB/Gen/XFixes/Types.hs
--- a/patched/Graphics/XHB/Gen/XFixes/Types.hs
+++ b/patched/Graphics/XHB/Gen/XFixes/Types.hs
@@ -612,7 +612,8 @@
                length <- deserialize
                extents <- deserialize
                skip 16
-               rectangles <- deserializeList (fromIntegral length)
+               rectangles <- deserializeList
+                               (fromIntegral (fromIntegral (length `div` 2)))
                let _ = isCard32 length
                return (MkFetchRegionReply extents rectangles)
  
diff --git a/patched/Graphics/XHB/Gen/XPrint.hs b/patched/Graphics/XHB/Gen/XPrint.hs
--- a/patched/Graphics/XHB/Gen/XPrint.hs
+++ b/patched/Graphics/XHB/Gen/XPrint.hs
@@ -1,9 +1,10 @@
 module Graphics.XHB.Gen.XPrint
-       (extension, printQueryVersion, printGetPrinterList, createContext,
-        printSetContext, printGetContext, printDestroyContext,
-        printGetScreenOfContext, printStartJob, printEndJob, printStartDoc,
-        printEndDoc, printPutDocumentData, printGetDocumentData,
-        printStartPage, printEndPage, printSelectInput, printInputSelected,
+       (extension, printQueryVersion, printGetPrinterList,
+        printRehashPrinterList, createContext, printSetContext,
+        printGetContext, printDestroyContext, printGetScreenOfContext,
+        printStartJob, printEndJob, printStartDoc, printEndDoc,
+        printPutDocumentData, printGetDocumentData, printStartPage,
+        printEndPage, printSelectInput, printInputSelected,
         printGetAttributes, printGetOneAttributes, printSetAttributes,
         printGetPageDimensions, printQueryScreens, printSetImageResolution,
         printGetImageResolution, module Graphics.XHB.Gen.XPrint.Types)
@@ -46,6 +47,14 @@
        let chunk = runPut putAction
        sendRequestWithReply c chunk rReceipt
        return receipt
+ 
+printRehashPrinterList ::
+                         Graphics.XHB.Connection.Types.Connection -> IO ()
+printRehashPrinterList c
+  = do let req = MkPrintRehashPrinterList
+       putAction <- serializeExtensionRequest c req
+       let chunk = runPut putAction
+       sendRequest c chunk
  
 createContext ::
                 Graphics.XHB.Connection.Types.Connection -> CreateContext -> IO ()
diff --git a/patched/Graphics/XHB/Gen/XPrint/Types.hs b/patched/Graphics/XHB/Gen/XPrint/Types.hs
--- a/patched/Graphics/XHB/Gen/XPrint/Types.hs
+++ b/patched/Graphics/XHB/Gen/XPrint/Types.hs
@@ -3,22 +3,22 @@
         PCONTEXT, GetDoc(..), EvMask(..), Detail(..), Attr(..),
         PrintQueryVersion(..), PrintQueryVersionReply(..),
         PrintGetPrinterList(..), PrintGetPrinterListReply(..),
-        CreateContext(..), PrintSetContext(..), PrintGetContext(..),
-        PrintGetContextReply(..), PrintDestroyContext(..),
-        PrintGetScreenOfContext(..), PrintGetScreenOfContextReply(..),
-        PrintStartJob(..), PrintEndJob(..), PrintStartDoc(..),
-        PrintEndDoc(..), PrintPutDocumentData(..),
-        PrintGetDocumentData(..), PrintGetDocumentDataReply(..),
-        PrintStartPage(..), PrintEndPage(..), PrintSelectInput(..),
-        PrintInputSelected(..), PrintInputSelectedReply(..),
-        PrintGetAttributes(..), PrintGetAttributesReply(..),
-        PrintGetOneAttributes(..), PrintGetOneAttributesReply(..),
-        PrintSetAttributes(..), PrintGetPageDimensions(..),
-        PrintGetPageDimensionsReply(..), PrintQueryScreens(..),
-        PrintQueryScreensReply(..), PrintSetImageResolution(..),
-        PrintSetImageResolutionReply(..), PrintGetImageResolution(..),
-        PrintGetImageResolutionReply(..), NotifyEvent(..),
-        AttributNotifyEvent(..))
+        PrintRehashPrinterList(..), CreateContext(..), PrintSetContext(..),
+        PrintGetContext(..), PrintGetContextReply(..),
+        PrintDestroyContext(..), PrintGetScreenOfContext(..),
+        PrintGetScreenOfContextReply(..), PrintStartJob(..),
+        PrintEndJob(..), PrintStartDoc(..), PrintEndDoc(..),
+        PrintPutDocumentData(..), PrintGetDocumentData(..),
+        PrintGetDocumentDataReply(..), PrintStartPage(..),
+        PrintEndPage(..), PrintSelectInput(..), PrintInputSelected(..),
+        PrintInputSelectedReply(..), PrintGetAttributes(..),
+        PrintGetAttributesReply(..), PrintGetOneAttributes(..),
+        PrintGetOneAttributesReply(..), PrintSetAttributes(..),
+        PrintGetPageDimensions(..), PrintGetPageDimensionsReply(..),
+        PrintQueryScreens(..), PrintQueryScreensReply(..),
+        PrintSetImageResolution(..), PrintSetImageResolutionReply(..),
+        PrintGetImageResolution(..), PrintGetImageResolutionReply(..),
+        NotifyEvent(..), AttributNotifyEvent(..))
        where
 import Data.Word
 import Data.Int
@@ -212,6 +212,18 @@
                printers <- deserializeList (fromIntegral listCount)
                let _ = isCard32 length
                return (MkPrintGetPrinterListReply listCount printers)
+ 
+data PrintRehashPrinterList = MkPrintRehashPrinterList{}
+                            deriving (Show, Typeable)
+ 
+instance ExtensionRequest PrintRehashPrinterList where
+        extensionId _ = "XpExtension"
+        serializeRequest x extOpCode
+          = do putWord8 extOpCode
+               putWord8 20
+               let size__ = 4
+               serialize (convertBytesToRequestSize size__ :: Int16)
+               putSkip (requiredPadding size__)
  
 data CreateContext = MkCreateContext{context_id_CreateContext ::
                                      Word32,
diff --git a/patched/Graphics/XHB/Gen/Xproto.hs b/patched/Graphics/XHB/Gen/Xproto.hs
--- a/patched/Graphics/XHB/Gen/Xproto.hs
+++ b/patched/Graphics/XHB/Gen/Xproto.hs
@@ -7,27 +7,28 @@
         getProperty, listProperties, setSelectionOwner, getSelectionOwner,
         convertSelection, sendEvent, grabPointer, ungrabPointer,
         grabButton, ungrabButton, changeActivePointerGrab, grabKeyboard,
-        ungrabKeyboard, grabKey, ungrabKey, allowEvents, queryPointer,
-        getMotionEvents, translateCoordinates, warpPointer, setInputFocus,
-        getInputFocus, queryKeymap, openFont, closeFont, queryFont,
-        queryTextExtents, listFonts, listFontsWithInfo, setFontPath,
-        getFontPath, createPixmap, freePixmap, createGC, changeGC, copyGC,
-        setDashes, setClipRectangles, freeGC, clearArea, copyArea,
-        copyPlane, polyPoint, polyLine, polySegment, polyRectangle,
-        polyArc, fillPoly, polyFillRectangle, polyFillArc, putImage,
-        getImage, polyText8, polyText16, imageText8, imageText16,
-        createColormap, freeColormap, copyColormapAndFree, installColormap,
-        uninstallColormap, listInstalledColormaps, allocColor,
-        allocNamedColor, allocColorCells, allocColorPlanes, freeColors,
-        storeColors, storeNamedColor, queryColors, lookupColor,
-        createCursor, createGlyphCursor, freeCursor, recolorCursor,
-        queryBestSize, queryExtension, listExtensions,
-        changeKeyboardMapping, getKeyboardMapping, changeKeyboardControl,
-        getKeyboardControl, bell, changePointerControl, getPointerControl,
-        setScreenSaver, getScreenSaver, changeHosts, listHosts,
-        setAccessControl, setCloseDownMode, killClient, rotateProperties,
-        forceScreenSaver, setPointerMapping, getPointerMapping,
-        setModifierMapping, getModifierMapping,
+        ungrabKeyboard, grabKey, ungrabKey, allowEvents, grabServer,
+        ungrabServer, queryPointer, getMotionEvents, translateCoordinates,
+        warpPointer, setInputFocus, getInputFocus, queryKeymap, openFont,
+        closeFont, queryFont, queryTextExtents, listFonts,
+        listFontsWithInfo, setFontPath, getFontPath, createPixmap,
+        freePixmap, createGC, changeGC, copyGC, setDashes,
+        setClipRectangles, freeGC, clearArea, copyArea, copyPlane,
+        polyPoint, polyLine, polySegment, polyRectangle, polyArc, fillPoly,
+        polyFillRectangle, polyFillArc, putImage, getImage, polyText8,
+        polyText16, imageText8, imageText16, createColormap, freeColormap,
+        copyColormapAndFree, installColormap, uninstallColormap,
+        listInstalledColormaps, allocColor, allocNamedColor,
+        allocColorCells, allocColorPlanes, freeColors, storeColors,
+        storeNamedColor, queryColors, lookupColor, createCursor,
+        createGlyphCursor, freeCursor, recolorCursor, queryBestSize,
+        queryExtension, listExtensions, changeKeyboardMapping,
+        getKeyboardMapping, changeKeyboardControl, getKeyboardControl,
+        bell, changePointerControl, getPointerControl, setScreenSaver,
+        getScreenSaver, changeHosts, listHosts, setAccessControl,
+        setCloseDownMode, killClient, rotateProperties, forceScreenSaver,
+        setPointerMapping, getPointerMapping, setModifierMapping,
+        getModifierMapping, noOperation,
         module Graphics.XHB.Gen.Xproto.Types)
        where
 import Graphics.XHB.Gen.Xproto.Types
@@ -123,10 +124,9 @@
  
 configureWindow ::
                   Graphics.XHB.Connection.Types.Connection ->
-                    WINDOW -> ValueParam Word16 -> IO ()
-configureWindow c window value
-  = do let req = MkConfigureWindow window value
-       let chunk = runPut (serialize req)
+                    ConfigureWindow -> IO ()
+configureWindow c req
+  = do let chunk = runPut (serialize req)
        sendRequest c chunk
  
 circulateWindow ::
@@ -313,6 +313,18 @@
        let chunk = runPut (serialize req)
        sendRequest c chunk
  
+grabServer :: Graphics.XHB.Connection.Types.Connection -> IO ()
+grabServer c
+  = do let req = MkGrabServer
+       let chunk = runPut (serialize req)
+       sendRequest c chunk
+ 
+ungrabServer :: Graphics.XHB.Connection.Types.Connection -> IO ()
+ungrabServer c
+  = do let req = MkUngrabServer
+       let chunk = runPut (serialize req)
+       sendRequest c chunk
+ 
 queryPointer ::
                Graphics.XHB.Connection.Types.Connection ->
                  WINDOW -> IO (Receipt QueryPointerReply)
@@ -943,3 +955,9 @@
        let chunk = runPut (serialize req)
        sendRequestWithReply c chunk rReceipt
        return receipt
+ 
+noOperation :: Graphics.XHB.Connection.Types.Connection -> IO ()
+noOperation c
+  = do let req = MkNoOperation
+       let chunk = runPut (serialize req)
+       sendRequest c chunk
diff --git a/patched/Graphics/XHB/Gen/Xproto/Types.hs b/patched/Graphics/XHB/Gen/Xproto/Types.hs
--- a/patched/Graphics/XHB/Gen/Xproto/Types.hs
+++ b/patched/Graphics/XHB/Gen/Xproto/Types.hs
@@ -47,16 +47,17 @@
         UngrabPointer(..), ButtonIndex(..), GrabButton(..),
         UngrabButton(..), ChangeActivePointerGrab(..), GrabKeyboard(..),
         GrabKeyboardReply(..), UngrabKeyboard(..), Grab(..), GrabKey(..),
-        UngrabKey(..), Allow(..), AllowEvents(..), QueryPointer(..),
-        QueryPointerReply(..), TIMECOORD(..), GetMotionEvents(..),
-        GetMotionEventsReply(..), TranslateCoordinates(..),
-        TranslateCoordinatesReply(..), WarpPointer(..), InputFocus(..),
-        SetInputFocus(..), GetInputFocus(..), GetInputFocusReply(..),
-        QueryKeymap(..), QueryKeymapReply(..), OpenFont(..), CloseFont(..),
-        FontDraw(..), FONTPROP(..), CHARINFO(..), QueryFont(..),
-        QueryFontReply(..), odd_length_QueryTextExtents,
-        QueryTextExtents(..), QueryTextExtentsReply(..), STR(..),
-        ListFonts(..), ListFontsReply(..), ListFontsWithInfo(..),
+        UngrabKey(..), Allow(..), AllowEvents(..), GrabServer(..),
+        UngrabServer(..), QueryPointer(..), QueryPointerReply(..),
+        TIMECOORD(..), GetMotionEvents(..), GetMotionEventsReply(..),
+        TranslateCoordinates(..), TranslateCoordinatesReply(..),
+        WarpPointer(..), InputFocus(..), SetInputFocus(..),
+        GetInputFocus(..), GetInputFocusReply(..), QueryKeymap(..),
+        QueryKeymapReply(..), OpenFont(..), CloseFont(..), FontDraw(..),
+        FONTPROP(..), CHARINFO(..), QueryFont(..), QueryFontReply(..),
+        odd_length_QueryTextExtents, QueryTextExtents(..),
+        QueryTextExtentsReply(..), STR(..), ListFonts(..),
+        ListFontsReply(..), ListFontsWithInfo(..),
         ListFontsWithInfoReply(..), SetFontPath(..), GetFontPath(..),
         GetFontPathReply(..), CreatePixmap(..), FreePixmap(..), GC(..),
         GX(..), LineStyle(..), CapStyle(..), JoinStyle(..), FillStyle(..),
@@ -96,7 +97,7 @@
         SetPointerMappingReply(..), GetPointerMapping(..),
         GetPointerMappingReply(..), MapIndex(..), SetModifierMapping(..),
         SetModifierMappingReply(..), GetModifierMapping(..),
-        GetModifierMappingReply(..))
+        GetModifierMappingReply(..), NoOperation(..))
        where
 import Data.Word
 import Data.Int
@@ -1832,11 +1833,218 @@
         fromValue 0 = TimeCurrentTime
  
 data Atom = AtomNone
+          | AtomAny
+          | AtomPRIMARY
+          | AtomSECONDARY
+          | AtomARC
+          | AtomATOM
+          | AtomBITMAP
+          | AtomCARDINAL
+          | AtomCOLORMAP
+          | AtomCURSOR
+          | AtomCUT_BUFFER0
+          | AtomCUT_BUFFER1
+          | AtomCUT_BUFFER2
+          | AtomCUT_BUFFER3
+          | AtomCUT_BUFFER4
+          | AtomCUT_BUFFER5
+          | AtomCUT_BUFFER6
+          | AtomCUT_BUFFER7
+          | AtomDRAWABLE
+          | AtomFONT
+          | AtomINTEGER
+          | AtomPIXMAP
+          | AtomPOINT
+          | AtomRECTANGLE
+          | AtomRESOURCE_MANAGER
+          | AtomRGB_COLOR_MAP
+          | AtomRGB_BEST_MAP
+          | AtomRGB_BLUE_MAP
+          | AtomRGB_DEFAULT_MAP
+          | AtomRGB_GRAY_MAP
+          | AtomRGB_GREEN_MAP
+          | AtomRGB_RED_MAP
+          | AtomSTRING
+          | AtomVISUALID
+          | AtomWINDOW
+          | AtomWM_COMMAND
+          | AtomWM_HINTS
+          | AtomWM_CLIENT_MACHINE
+          | AtomWM_ICON_NAME
+          | AtomWM_ICON_SIZE
+          | AtomWM_NAME
+          | AtomWM_NORMAL_HINTS
+          | AtomWM_SIZE_HINTS
+          | AtomWM_ZOOM_HINTS
+          | AtomMIN_SPACE
+          | AtomNORM_SPACE
+          | AtomMAX_SPACE
+          | AtomEND_SPACE
+          | AtomSUPERSCRIPT_X
+          | AtomSUPERSCRIPT_Y
+          | AtomSUBSCRIPT_X
+          | AtomSUBSCRIPT_Y
+          | AtomUNDERLINE_POSITION
+          | AtomUNDERLINE_THICKNESS
+          | AtomSTRIKEOUT_ASCENT
+          | AtomSTRIKEOUT_DESCENT
+          | AtomITALIC_ANGLE
+          | AtomX_HEIGHT
+          | AtomQUAD_WIDTH
+          | AtomWEIGHT
+          | AtomPOINT_SIZE
+          | AtomRESOLUTION
+          | AtomCOPYRIGHT
+          | AtomNOTICE
+          | AtomFONT_NAME
+          | AtomFAMILY_NAME
+          | AtomFULL_NAME
+          | AtomCAP_HEIGHT
+          | AtomWM_CLASS
+          | AtomWM_TRANSIENT_FOR
           deriving Show
  
 instance SimpleEnum Atom where
         toValue AtomNone{} = 0
+        toValue AtomAny{} = 0
+        toValue AtomPRIMARY{} = 1
+        toValue AtomSECONDARY{} = 2
+        toValue AtomARC{} = 3
+        toValue AtomATOM{} = 4
+        toValue AtomBITMAP{} = 5
+        toValue AtomCARDINAL{} = 6
+        toValue AtomCOLORMAP{} = 7
+        toValue AtomCURSOR{} = 8
+        toValue AtomCUT_BUFFER0{} = 9
+        toValue AtomCUT_BUFFER1{} = 10
+        toValue AtomCUT_BUFFER2{} = 11
+        toValue AtomCUT_BUFFER3{} = 12
+        toValue AtomCUT_BUFFER4{} = 13
+        toValue AtomCUT_BUFFER5{} = 14
+        toValue AtomCUT_BUFFER6{} = 15
+        toValue AtomCUT_BUFFER7{} = 16
+        toValue AtomDRAWABLE{} = 17
+        toValue AtomFONT{} = 18
+        toValue AtomINTEGER{} = 19
+        toValue AtomPIXMAP{} = 20
+        toValue AtomPOINT{} = 21
+        toValue AtomRECTANGLE{} = 22
+        toValue AtomRESOURCE_MANAGER{} = 23
+        toValue AtomRGB_COLOR_MAP{} = 24
+        toValue AtomRGB_BEST_MAP{} = 25
+        toValue AtomRGB_BLUE_MAP{} = 26
+        toValue AtomRGB_DEFAULT_MAP{} = 27
+        toValue AtomRGB_GRAY_MAP{} = 28
+        toValue AtomRGB_GREEN_MAP{} = 29
+        toValue AtomRGB_RED_MAP{} = 30
+        toValue AtomSTRING{} = 31
+        toValue AtomVISUALID{} = 32
+        toValue AtomWINDOW{} = 33
+        toValue AtomWM_COMMAND{} = 34
+        toValue AtomWM_HINTS{} = 35
+        toValue AtomWM_CLIENT_MACHINE{} = 36
+        toValue AtomWM_ICON_NAME{} = 37
+        toValue AtomWM_ICON_SIZE{} = 38
+        toValue AtomWM_NAME{} = 39
+        toValue AtomWM_NORMAL_HINTS{} = 40
+        toValue AtomWM_SIZE_HINTS{} = 41
+        toValue AtomWM_ZOOM_HINTS{} = 42
+        toValue AtomMIN_SPACE{} = 43
+        toValue AtomNORM_SPACE{} = 44
+        toValue AtomMAX_SPACE{} = 45
+        toValue AtomEND_SPACE{} = 46
+        toValue AtomSUPERSCRIPT_X{} = 47
+        toValue AtomSUPERSCRIPT_Y{} = 48
+        toValue AtomSUBSCRIPT_X{} = 49
+        toValue AtomSUBSCRIPT_Y{} = 50
+        toValue AtomUNDERLINE_POSITION{} = 51
+        toValue AtomUNDERLINE_THICKNESS{} = 52
+        toValue AtomSTRIKEOUT_ASCENT{} = 53
+        toValue AtomSTRIKEOUT_DESCENT{} = 54
+        toValue AtomITALIC_ANGLE{} = 55
+        toValue AtomX_HEIGHT{} = 56
+        toValue AtomQUAD_WIDTH{} = 57
+        toValue AtomWEIGHT{} = 58
+        toValue AtomPOINT_SIZE{} = 59
+        toValue AtomRESOLUTION{} = 60
+        toValue AtomCOPYRIGHT{} = 61
+        toValue AtomNOTICE{} = 62
+        toValue AtomFONT_NAME{} = 63
+        toValue AtomFAMILY_NAME{} = 64
+        toValue AtomFULL_NAME{} = 65
+        toValue AtomCAP_HEIGHT{} = 66
+        toValue AtomWM_CLASS{} = 67
+        toValue AtomWM_TRANSIENT_FOR{} = 68
         fromValue 0 = AtomNone
+        fromValue 0 = AtomAny
+        fromValue 1 = AtomPRIMARY
+        fromValue 2 = AtomSECONDARY
+        fromValue 3 = AtomARC
+        fromValue 4 = AtomATOM
+        fromValue 5 = AtomBITMAP
+        fromValue 6 = AtomCARDINAL
+        fromValue 7 = AtomCOLORMAP
+        fromValue 8 = AtomCURSOR
+        fromValue 9 = AtomCUT_BUFFER0
+        fromValue 10 = AtomCUT_BUFFER1
+        fromValue 11 = AtomCUT_BUFFER2
+        fromValue 12 = AtomCUT_BUFFER3
+        fromValue 13 = AtomCUT_BUFFER4
+        fromValue 14 = AtomCUT_BUFFER5
+        fromValue 15 = AtomCUT_BUFFER6
+        fromValue 16 = AtomCUT_BUFFER7
+        fromValue 17 = AtomDRAWABLE
+        fromValue 18 = AtomFONT
+        fromValue 19 = AtomINTEGER
+        fromValue 20 = AtomPIXMAP
+        fromValue 21 = AtomPOINT
+        fromValue 22 = AtomRECTANGLE
+        fromValue 23 = AtomRESOURCE_MANAGER
+        fromValue 24 = AtomRGB_COLOR_MAP
+        fromValue 25 = AtomRGB_BEST_MAP
+        fromValue 26 = AtomRGB_BLUE_MAP
+        fromValue 27 = AtomRGB_DEFAULT_MAP
+        fromValue 28 = AtomRGB_GRAY_MAP
+        fromValue 29 = AtomRGB_GREEN_MAP
+        fromValue 30 = AtomRGB_RED_MAP
+        fromValue 31 = AtomSTRING
+        fromValue 32 = AtomVISUALID
+        fromValue 33 = AtomWINDOW
+        fromValue 34 = AtomWM_COMMAND
+        fromValue 35 = AtomWM_HINTS
+        fromValue 36 = AtomWM_CLIENT_MACHINE
+        fromValue 37 = AtomWM_ICON_NAME
+        fromValue 38 = AtomWM_ICON_SIZE
+        fromValue 39 = AtomWM_NAME
+        fromValue 40 = AtomWM_NORMAL_HINTS
+        fromValue 41 = AtomWM_SIZE_HINTS
+        fromValue 42 = AtomWM_ZOOM_HINTS
+        fromValue 43 = AtomMIN_SPACE
+        fromValue 44 = AtomNORM_SPACE
+        fromValue 45 = AtomMAX_SPACE
+        fromValue 46 = AtomEND_SPACE
+        fromValue 47 = AtomSUPERSCRIPT_X
+        fromValue 48 = AtomSUPERSCRIPT_Y
+        fromValue 49 = AtomSUBSCRIPT_X
+        fromValue 50 = AtomSUBSCRIPT_Y
+        fromValue 51 = AtomUNDERLINE_POSITION
+        fromValue 52 = AtomUNDERLINE_THICKNESS
+        fromValue 53 = AtomSTRIKEOUT_ASCENT
+        fromValue 54 = AtomSTRIKEOUT_DESCENT
+        fromValue 55 = AtomITALIC_ANGLE
+        fromValue 56 = AtomX_HEIGHT
+        fromValue 57 = AtomQUAD_WIDTH
+        fromValue 58 = AtomWEIGHT
+        fromValue 59 = AtomPOINT_SIZE
+        fromValue 60 = AtomRESOLUTION
+        fromValue 61 = AtomCOPYRIGHT
+        fromValue 62 = AtomNOTICE
+        fromValue 63 = AtomFONT_NAME
+        fromValue 64 = AtomFAMILY_NAME
+        fromValue 65 = AtomFULL_NAME
+        fromValue 66 = AtomCAP_HEIGHT
+        fromValue 67 = AtomWM_CLASS
+        fromValue 68 = AtomWM_TRANSIENT_FOR
  
 data SelectionRequestEvent = MkSelectionRequestEvent{time_SelectionRequestEvent
                                                      :: TIMESTAMP,
@@ -2681,6 +2889,7 @@
  
 data ConfigureWindow = MkConfigureWindow{window_ConfigureWindow ::
                                          WINDOW,
+                                         value_mask_ConfigureWindow :: Word16,
                                          value_ConfigureWindow :: ValueParam Word16}
                      deriving (Show, Typeable)
  
@@ -2690,11 +2899,15 @@
                putSkip 1
                serialize (convertBytesToRequestSize (size x) :: Int16)
                serialize (window_ConfigureWindow x)
-               serializeValueParam 2 (value_ConfigureWindow x)
+               serialize (value_mask_ConfigureWindow x)
+               putSkip 2
+               serialize (value_ConfigureWindow x)
                putSkip (requiredPadding (size x))
         size x
           = 3 + 1 + size (window_ConfigureWindow x) +
-              (size (value_ConfigureWindow x) + 2)
+              size (value_mask_ConfigureWindow x)
+              + 2
+              + size (value_ConfigureWindow x)
  
 data Circulate = CirculateRaiseLowest
                | CirculateLowerHighest
@@ -3444,6 +3657,28 @@
                putSkip (requiredPadding (size x))
         size x = 3 + size (undefined :: Word8) + size (time_AllowEvents x)
  
+data GrabServer = MkGrabServer{}
+                deriving (Show, Typeable)
+ 
+instance Serialize GrabServer where
+        serialize x
+          = do putWord8 36
+               putSkip 1
+               serialize (convertBytesToRequestSize (size x) :: Int16)
+               putSkip (requiredPadding (size x))
+        size x = 4
+ 
+data UngrabServer = MkUngrabServer{}
+                  deriving (Show, Typeable)
+ 
+instance Serialize UngrabServer where
+        serialize x
+          = do putWord8 37
+               putSkip 1
+               serialize (convertBytesToRequestSize (size x) :: Int16)
+               putSkip (requiredPadding (size x))
+        size x = 4
+ 
 data QueryPointer = MkQueryPointer{window_QueryPointer :: WINDOW}
                   deriving (Show, Typeable)
  
@@ -6407,3 +6642,14 @@
                              (fromIntegral (fromIntegral (keycodes_per_modifier * 8)))
                let _ = isCard32 length
                return (MkGetModifierMappingReply keycodes_per_modifier keycodes)
+ 
+data NoOperation = MkNoOperation{}
+                 deriving (Show, Typeable)
+ 
+instance Serialize NoOperation where
+        serialize x
+          = do putWord8 127
+               putSkip 1
+               serialize (convertBytesToRequestSize (size x) :: Int16)
+               putSkip (requiredPadding (size x))
+        size x = 4
diff --git a/xhb.cabal b/xhb.cabal
--- a/xhb.cabal
+++ b/xhb.cabal
@@ -1,5 +1,5 @@
 Name:         xhb
-Version:      0.4.2010.12.26
+Version:      0.5.2011.10.21
 Cabal-Version:  >= 1.2.3
 Synopsis:     X Haskell Bindings
 Description:
@@ -7,9 +7,9 @@
   .
   Similar to XCB - the X C Bindings.
   .
-  This library is based on version 1.5 of the xcb-proto
-  package.  See http://xcb.freedesktop.org/XmlXcb/ and
-  http://xcb.freedesktop.org/dist/ .
+  This library is based on version 1.6 of the xcb-proto
+  package.  See http:\/\/xcb.freedesktop.org\/XmlXcb\/ and
+  http:\/\/xcb.freedesktop.org\/dist\/ .
 
 License:      BSD3
 License-file: LICENSE
@@ -40,6 +40,7 @@
    Graphics.XHB.Gen.Composite,
    Graphics.XHB.Gen.Damage,
    Graphics.XHB.Gen.DPMS,
+   Graphics.XHB.Gen.DRI2,
    Graphics.XHB.Gen.Glx,
    Graphics.XHB.Gen.RandR,
    Graphics.XHB.Gen.Record,
@@ -71,6 +72,7 @@
    Graphics.XHB.Gen.Composite.Types,
    Graphics.XHB.Gen.Damage.Types,
    Graphics.XHB.Gen.DPMS.Types,
+   Graphics.XHB.Gen.DRI2.Types,
    Graphics.XHB.Gen.Glx.Types,
    Graphics.XHB.Gen.RandR.Types,
    Graphics.XHB.Gen.Record.Types,
