module Graphics.XHB.Gen.XvMC (extension, queryVersion, listSurfaceTypes, createContext, destroyContext, createSurface, destroySurface, createSubpicture, destroySubpicture, listSubpictureTypes, module Graphics.XHB.Gen.XvMC.Types) where import Graphics.XHB.Gen.XvMC.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.Xv.Types hiding (deserializeError, deserializeEvent) import qualified Graphics.XHB.Gen.Xv.Types extension :: ExtensionId extension = "XVideo-MotionCompensation" 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 listSurfaceTypes :: Graphics.XHB.Connection.Types.Connection -> PORT -> IO (Receipt ListSurfaceTypesReply) listSurfaceTypes c port_id = do receipt <- newEmptyReceiptIO let req = MkListSurfaceTypes port_id 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 -> CONTEXT -> IO () destroyContext c context_id = do let req = MkDestroyContext context_id putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequest c chunk createSurface :: Graphics.XHB.Connection.Types.Connection -> SURFACE -> CONTEXT -> IO (Receipt CreateSurfaceReply) createSurface c surface_id context_id = do receipt <- newEmptyReceiptIO let req = MkCreateSurface surface_id context_id putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequestWithReply c chunk receipt return receipt destroySurface :: Graphics.XHB.Connection.Types.Connection -> SURFACE -> IO () destroySurface c surface_id = do let req = MkDestroySurface surface_id putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequest c chunk createSubpicture :: Graphics.XHB.Connection.Types.Connection -> CreateSubpicture -> IO (Receipt CreateSubpictureReply) createSubpicture c req = do receipt <- newEmptyReceiptIO putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequestWithReply c chunk receipt return receipt destroySubpicture :: Graphics.XHB.Connection.Types.Connection -> SUBPICTURE -> IO () destroySubpicture c subpicture_id = do let req = MkDestroySubpicture subpicture_id putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequest c chunk listSubpictureTypes :: Graphics.XHB.Connection.Types.Connection -> PORT -> SURFACE -> IO (Receipt ListSubpictureTypesReply) listSubpictureTypes c port_id surface_id = do receipt <- newEmptyReceiptIO let req = MkListSubpictureTypes port_id surface_id putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequestWithReply c chunk receipt return receipt