module Graphics.XHB.Gen.XF86Dri (extension, queryVersion, queryDirectRenderingCapable, openConnection, closeConnection, getClientDriverName, createContext, destroyContext, createDrawable, destroyDrawable, getDrawableInfo, getDeviceInfo, authConnection, module Graphics.XHB.Gen.XF86Dri.Types) where import Graphics.XHB.Gen.XF86Dri.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 = "XFree86-DRI" queryVersion :: Graphics.XHB.Connection.Types.Connection -> IO (Receipt QueryVersionReply) queryVersion c = do receipt <- newEmptyReceiptIO let req = MkQueryVersion putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequestWithReply c chunk receipt return receipt queryDirectRenderingCapable :: Graphics.XHB.Connection.Types.Connection -> CARD32 -> IO (Receipt QueryDirectRenderingCapableReply) queryDirectRenderingCapable c screen = do receipt <- newEmptyReceiptIO let req = MkQueryDirectRenderingCapable screen putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequestWithReply c chunk receipt return receipt openConnection :: Graphics.XHB.Connection.Types.Connection -> CARD32 -> IO (Receipt OpenConnectionReply) openConnection c screen = do receipt <- newEmptyReceiptIO let req = MkOpenConnection screen putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequestWithReply c chunk receipt return receipt closeConnection :: Graphics.XHB.Connection.Types.Connection -> CARD32 -> IO () closeConnection c screen = do let req = MkCloseConnection screen putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequest c chunk getClientDriverName :: Graphics.XHB.Connection.Types.Connection -> CARD32 -> IO (Receipt GetClientDriverNameReply) getClientDriverName c screen = do receipt <- newEmptyReceiptIO let req = MkGetClientDriverName screen putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequestWithReply c chunk receipt return receipt createContext :: Graphics.XHB.Connection.Types.Connection -> CreateContext -> IO (Receipt CreateContextReply) createContext c req = do receipt <- newEmptyReceiptIO putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequestWithReply c chunk receipt return receipt destroyContext :: Graphics.XHB.Connection.Types.Connection -> CARD32 -> CARD32 -> IO () destroyContext c screen context = do let req = MkDestroyContext screen context putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequest c chunk createDrawable :: Graphics.XHB.Connection.Types.Connection -> CARD32 -> CARD32 -> IO (Receipt CreateDrawableReply) createDrawable c screen drawable = do receipt <- newEmptyReceiptIO let req = MkCreateDrawable screen drawable putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequestWithReply c chunk receipt return receipt destroyDrawable :: Graphics.XHB.Connection.Types.Connection -> CARD32 -> CARD32 -> IO () destroyDrawable c screen drawable = do let req = MkDestroyDrawable screen drawable putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequest c chunk getDrawableInfo :: Graphics.XHB.Connection.Types.Connection -> CARD32 -> CARD32 -> IO (Receipt GetDrawableInfoReply) getDrawableInfo c screen drawable = do receipt <- newEmptyReceiptIO let req = MkGetDrawableInfo screen drawable putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequestWithReply c chunk receipt return receipt getDeviceInfo :: Graphics.XHB.Connection.Types.Connection -> CARD32 -> IO (Receipt GetDeviceInfoReply) getDeviceInfo c screen = do receipt <- newEmptyReceiptIO let req = MkGetDeviceInfo screen putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequestWithReply c chunk receipt return receipt authConnection :: Graphics.XHB.Connection.Types.Connection -> CARD32 -> CARD32 -> IO (Receipt AuthConnectionReply) authConnection c screen magic = do receipt <- newEmptyReceiptIO let req = MkAuthConnection screen magic putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequestWithReply c chunk receipt return receipt