module Graphics.XHB.Gen.Res
       (extension, queryVersion, queryClients, queryClientResources,
        queryClientPixmapBytes, module Graphics.XHB.Gen.Res.Types)
       where
import Graphics.XHB.Gen.Res.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(..))
import Graphics.XHB.Gen.Xproto.Types
       hiding (deserializeError, deserializeEvent)
import qualified Graphics.XHB.Gen.Xproto.Types
 
extension :: ExtensionId
extension = "X-Resource"
 
queryVersion ::
               Graphics.XHB.Connection.Types.Connection ->
                 CARD8 -> CARD8 -> IO (Receipt QueryVersionReply)
queryVersion c client_major client_minor
  = do receipt <- newEmptyReceiptIO
       let req = MkQueryVersion client_major client_minor
       putAction <- serializeExtensionRequest c req
       let chunk = runPut putAction
       sendRequestWithReply c chunk receipt
       return receipt
 
queryClients ::
               Graphics.XHB.Connection.Types.Connection ->
                 IO (Receipt QueryClientsReply)
queryClients c
  = do receipt <- newEmptyReceiptIO
       let req = MkQueryClients
       putAction <- serializeExtensionRequest c req
       let chunk = runPut putAction
       sendRequestWithReply c chunk receipt
       return receipt
 
queryClientResources ::
                       Graphics.XHB.Connection.Types.Connection ->
                         CARD32 -> IO (Receipt QueryClientResourcesReply)
queryClientResources c xid
  = do receipt <- newEmptyReceiptIO
       let req = MkQueryClientResources xid
       putAction <- serializeExtensionRequest c req
       let chunk = runPut putAction
       sendRequestWithReply c chunk receipt
       return receipt
 
queryClientPixmapBytes ::
                         Graphics.XHB.Connection.Types.Connection ->
                           CARD32 -> IO (Receipt QueryClientPixmapBytesReply)
queryClientPixmapBytes c xid
  = do receipt <- newEmptyReceiptIO
       let req = MkQueryClientPixmapBytes xid
       putAction <- serializeExtensionRequest c req
       let chunk = runPut putAction
       sendRequestWithReply c chunk receipt
       return receipt