module Graphics.XHB.Gen.Xv (extension, queryExtension, queryAdaptors, queryEncodings, grabPort, ungrabPort, putVideo, putStill, getVideo, getStill, stopVideo, selectVideoNotify, selectPortNotify, queryBestSize, setPortAttribute, getPortAttribute, queryPortAttributes, listImageFormats, queryImageAttributes, putImage, shmPutImage, module Graphics.XHB.Gen.Xv.Types) where import Graphics.XHB.Gen.Xv.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 (QueryExtension(..), QueryExtensionReply(..), QueryBestSize(..), QueryBestSizeReply(..), PutImage(..), deserializeError, deserializeEvent) import qualified Graphics.XHB.Gen.Xproto.Types import Graphics.XHB.Gen.Shm.Types hiding (PutImage(..), deserializeError, deserializeEvent) import qualified Graphics.XHB.Gen.Shm.Types extension :: ExtensionId extension = "XVideo" queryExtension :: Graphics.XHB.Connection.Types.Connection -> IO (Receipt QueryExtensionReply) queryExtension c = do receipt <- newEmptyReceiptIO let req = MkQueryExtension putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequestWithReply c chunk receipt return receipt queryAdaptors :: Graphics.XHB.Connection.Types.Connection -> WINDOW -> IO (Receipt QueryAdaptorsReply) queryAdaptors c window = do receipt <- newEmptyReceiptIO let req = MkQueryAdaptors window putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequestWithReply c chunk receipt return receipt queryEncodings :: Graphics.XHB.Connection.Types.Connection -> PORT -> IO (Receipt QueryEncodingsReply) queryEncodings c port = do receipt <- newEmptyReceiptIO let req = MkQueryEncodings port putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequestWithReply c chunk receipt return receipt grabPort :: Graphics.XHB.Connection.Types.Connection -> PORT -> TIMESTAMP -> IO (Receipt GrabPortReply) grabPort c port time = do receipt <- newEmptyReceiptIO let req = MkGrabPort port time putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequestWithReply c chunk receipt return receipt ungrabPort :: Graphics.XHB.Connection.Types.Connection -> PORT -> TIMESTAMP -> IO () ungrabPort c port time = do let req = MkUngrabPort port time putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequest c chunk putVideo :: Graphics.XHB.Connection.Types.Connection -> PutVideo -> IO () putVideo c req = do putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequest c chunk putStill :: Graphics.XHB.Connection.Types.Connection -> PutStill -> IO () putStill c req = do putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequest c chunk getVideo :: Graphics.XHB.Connection.Types.Connection -> GetVideo -> IO () getVideo c req = do putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequest c chunk getStill :: Graphics.XHB.Connection.Types.Connection -> GetStill -> IO () getStill c req = do putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequest c chunk stopVideo :: Graphics.XHB.Connection.Types.Connection -> PORT -> DRAWABLE -> IO () stopVideo c port drawable = do let req = MkStopVideo port drawable putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequest c chunk selectVideoNotify :: Graphics.XHB.Connection.Types.Connection -> DRAWABLE -> BOOL -> IO () selectVideoNotify c drawable onoff = do let req = MkSelectVideoNotify drawable onoff putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequest c chunk selectPortNotify :: Graphics.XHB.Connection.Types.Connection -> PORT -> BOOL -> IO () selectPortNotify c port onoff = do let req = MkSelectPortNotify port onoff putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequest c chunk queryBestSize :: Graphics.XHB.Connection.Types.Connection -> QueryBestSize -> IO (Receipt QueryBestSizeReply) queryBestSize c req = do receipt <- newEmptyReceiptIO putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequestWithReply c chunk receipt return receipt setPortAttribute :: Graphics.XHB.Connection.Types.Connection -> SetPortAttribute -> IO () setPortAttribute c req = do putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequest c chunk getPortAttribute :: Graphics.XHB.Connection.Types.Connection -> PORT -> ATOM -> IO (Receipt GetPortAttributeReply) getPortAttribute c port attribute = do receipt <- newEmptyReceiptIO let req = MkGetPortAttribute port attribute putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequestWithReply c chunk receipt return receipt queryPortAttributes :: Graphics.XHB.Connection.Types.Connection -> PORT -> IO (Receipt QueryPortAttributesReply) queryPortAttributes c port = do receipt <- newEmptyReceiptIO let req = MkQueryPortAttributes port putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequestWithReply c chunk receipt return receipt listImageFormats :: Graphics.XHB.Connection.Types.Connection -> PORT -> IO (Receipt ListImageFormatsReply) listImageFormats c port = do receipt <- newEmptyReceiptIO let req = MkListImageFormats port putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequestWithReply c chunk receipt return receipt queryImageAttributes :: Graphics.XHB.Connection.Types.Connection -> QueryImageAttributes -> IO (Receipt QueryImageAttributesReply) queryImageAttributes c req = do receipt <- newEmptyReceiptIO putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequestWithReply c chunk receipt return receipt putImage :: Graphics.XHB.Connection.Types.Connection -> PutImage -> IO () putImage c req = do putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequest c chunk shmPutImage :: Graphics.XHB.Connection.Types.Connection -> ShmPutImage -> IO () shmPutImage c req = do putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequest c chunk