module Graphics.XHB.Gen.XCMisc
       (extension, getVersion, getXIDRange, getXIDList,
        module Graphics.XHB.Gen.XCMisc.Types)
       where
import Graphics.XHB.Gen.XCMisc.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.Binary.Put (runPut)
import Graphics.XHB.Shared hiding (Event(..), Error(..))
 
extension :: ExtensionId
extension = "XC-MISC"
 
getVersion ::
             Graphics.XHB.Connection.Types.Connection ->
               CARD16 -> CARD16 -> IO (Receipt GetVersionReply)
getVersion c client_major_version client_minor_version
  = do receipt <- newEmptyReceiptIO
       let req = MkGetVersion client_major_version client_minor_version
       putAction <- serializeExtensionRequest c req
       let chunk = runPut putAction
       sendRequestWithReply c chunk receipt
       return receipt
 
getXIDRange ::
              Graphics.XHB.Connection.Types.Connection ->
                IO (Receipt GetXIDRangeReply)
getXIDRange c
  = do receipt <- newEmptyReceiptIO
       let req = MkGetXIDRange
       putAction <- serializeExtensionRequest c req
       let chunk = runPut putAction
       sendRequestWithReply c chunk receipt
       return receipt
 
getXIDList ::
             Graphics.XHB.Connection.Types.Connection ->
               CARD32 -> IO (Receipt GetXIDListReply)
getXIDList c count
  = do receipt <- newEmptyReceiptIO
       let req = MkGetXIDList count
       putAction <- serializeExtensionRequest c req
       let chunk = runPut putAction
       sendRequestWithReply c chunk receipt
       return receipt