module Graphics.XHB.Gen.Record (extension, queryVersion, createContext, registerClients, unregisterClients, getContext, enableContext, disableContext, freeContext, module Graphics.XHB.Gen.Record.Types) where import Graphics.XHB.Gen.Record.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 = "RECORD" queryVersion :: Graphics.XHB.Connection.Types.Connection -> CARD16 -> CARD16 -> IO (Receipt QueryVersionReply) queryVersion c major_version minor_version = do receipt <- newEmptyReceiptIO let req = MkQueryVersion major_version minor_version putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequestWithReply c chunk receipt return receipt createContext :: Graphics.XHB.Connection.Types.Connection -> CreateContext -> IO () createContext c req = do putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequest c chunk registerClients :: Graphics.XHB.Connection.Types.Connection -> RegisterClients -> IO () registerClients c req = do putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequest c chunk unregisterClients :: Graphics.XHB.Connection.Types.Connection -> UnregisterClients -> IO () unregisterClients c req = do putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequest c chunk getContext :: Graphics.XHB.Connection.Types.Connection -> Graphics.XHB.Gen.Record.Types.CONTEXT -> IO (Receipt GetContextReply) getContext c context = do receipt <- newEmptyReceiptIO let req = MkGetContext context putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequestWithReply c chunk receipt return receipt enableContext :: Graphics.XHB.Connection.Types.Connection -> Graphics.XHB.Gen.Record.Types.CONTEXT -> IO (Receipt EnableContextReply) enableContext c context = do receipt <- newEmptyReceiptIO let req = MkEnableContext context putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequestWithReply c chunk receipt return receipt disableContext :: Graphics.XHB.Connection.Types.Connection -> Graphics.XHB.Gen.Record.Types.CONTEXT -> IO () disableContext c context = do let req = MkDisableContext context putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequest c chunk freeContext :: Graphics.XHB.Connection.Types.Connection -> Graphics.XHB.Gen.Record.Types.CONTEXT -> IO () freeContext c context = do let req = MkFreeContext context putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequest c chunk