module Graphics.XHB.Gen.RandR (extension, queryVersion, setScreenConfig, selectInput, getScreenInfo, getScreenSizeRange, setScreenSize, getScreenResources, getOutputInfo, listOutputProperties, queryOutputProperty, configureOutputProperty, changeOutputProperty, deleteOutputProperty, getOutputProperty, createMode, destroyMode, addOutputMode, deleteOutputMode, getCrtcInfo, setCrtcConfig, getCrtcGammaSize, getCrtcGamma, setCrtcGamma, module Graphics.XHB.Gen.RandR.Types) where import Graphics.XHB.Gen.RandR.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 = "RANDR" queryVersion :: Graphics.XHB.Connection.Types.Connection -> CARD32 -> CARD32 -> 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 setScreenConfig :: Graphics.XHB.Connection.Types.Connection -> SetScreenConfig -> IO (Receipt SetScreenConfigReply) setScreenConfig c req = do receipt <- newEmptyReceiptIO putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequestWithReply c chunk receipt return receipt selectInput :: Graphics.XHB.Connection.Types.Connection -> WINDOW -> CARD16 -> IO () selectInput c window enable = do let req = MkSelectInput window enable putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequest c chunk getScreenInfo :: Graphics.XHB.Connection.Types.Connection -> WINDOW -> IO (Receipt GetScreenInfoReply) getScreenInfo c window = do receipt <- newEmptyReceiptIO let req = MkGetScreenInfo window putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequestWithReply c chunk receipt return receipt getScreenSizeRange :: Graphics.XHB.Connection.Types.Connection -> WINDOW -> IO (Receipt GetScreenSizeRangeReply) getScreenSizeRange c window = do receipt <- newEmptyReceiptIO let req = MkGetScreenSizeRange window putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequestWithReply c chunk receipt return receipt setScreenSize :: Graphics.XHB.Connection.Types.Connection -> SetScreenSize -> IO () setScreenSize c req = do putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequest c chunk getScreenResources :: Graphics.XHB.Connection.Types.Connection -> WINDOW -> IO (Receipt GetScreenResourcesReply) getScreenResources c window = do receipt <- newEmptyReceiptIO let req = MkGetScreenResources window putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequestWithReply c chunk receipt return receipt getOutputInfo :: Graphics.XHB.Connection.Types.Connection -> OUTPUT -> TIMESTAMP -> IO (Receipt GetOutputInfoReply) getOutputInfo c output config_timestamp = do receipt <- newEmptyReceiptIO let req = MkGetOutputInfo output config_timestamp putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequestWithReply c chunk receipt return receipt listOutputProperties :: Graphics.XHB.Connection.Types.Connection -> OUTPUT -> IO (Receipt ListOutputPropertiesReply) listOutputProperties c output = do receipt <- newEmptyReceiptIO let req = MkListOutputProperties output putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequestWithReply c chunk receipt return receipt queryOutputProperty :: Graphics.XHB.Connection.Types.Connection -> OUTPUT -> ATOM -> IO (Receipt QueryOutputPropertyReply) queryOutputProperty c output property = do receipt <- newEmptyReceiptIO let req = MkQueryOutputProperty output property putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequestWithReply c chunk receipt return receipt configureOutputProperty :: Graphics.XHB.Connection.Types.Connection -> ConfigureOutputProperty -> IO () configureOutputProperty c req = do putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequest c chunk changeOutputProperty :: Graphics.XHB.Connection.Types.Connection -> ChangeOutputProperty -> IO () changeOutputProperty c req = do putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequest c chunk deleteOutputProperty :: Graphics.XHB.Connection.Types.Connection -> OUTPUT -> ATOM -> IO () deleteOutputProperty c output property = do let req = MkDeleteOutputProperty output property putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequest c chunk getOutputProperty :: Graphics.XHB.Connection.Types.Connection -> GetOutputProperty -> IO (Receipt GetOutputPropertyReply) getOutputProperty c req = do receipt <- newEmptyReceiptIO putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequestWithReply c chunk receipt return receipt createMode :: Graphics.XHB.Connection.Types.Connection -> CreateMode -> IO (Receipt CreateModeReply) createMode c req = do receipt <- newEmptyReceiptIO putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequestWithReply c chunk receipt return receipt destroyMode :: Graphics.XHB.Connection.Types.Connection -> MODE -> IO () destroyMode c mode = do let req = MkDestroyMode mode putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequest c chunk addOutputMode :: Graphics.XHB.Connection.Types.Connection -> OUTPUT -> MODE -> IO () addOutputMode c output mode = do let req = MkAddOutputMode output mode putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequest c chunk deleteOutputMode :: Graphics.XHB.Connection.Types.Connection -> OUTPUT -> MODE -> IO () deleteOutputMode c output mode = do let req = MkDeleteOutputMode output mode putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequest c chunk getCrtcInfo :: Graphics.XHB.Connection.Types.Connection -> CRTC -> TIMESTAMP -> IO (Receipt GetCrtcInfoReply) getCrtcInfo c crtc config_timestamp = do receipt <- newEmptyReceiptIO let req = MkGetCrtcInfo crtc config_timestamp putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequestWithReply c chunk receipt return receipt setCrtcConfig :: Graphics.XHB.Connection.Types.Connection -> SetCrtcConfig -> IO (Receipt SetCrtcConfigReply) setCrtcConfig c req = do receipt <- newEmptyReceiptIO putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequestWithReply c chunk receipt return receipt getCrtcGammaSize :: Graphics.XHB.Connection.Types.Connection -> CRTC -> IO (Receipt GetCrtcGammaSizeReply) getCrtcGammaSize c crtc = do receipt <- newEmptyReceiptIO let req = MkGetCrtcGammaSize crtc putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequestWithReply c chunk receipt return receipt getCrtcGamma :: Graphics.XHB.Connection.Types.Connection -> CRTC -> IO (Receipt GetCrtcGammaReply) getCrtcGamma c crtc = do receipt <- newEmptyReceiptIO let req = MkGetCrtcGamma crtc putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequestWithReply c chunk receipt return receipt setCrtcGamma :: Graphics.XHB.Connection.Types.Connection -> SetCrtcGamma -> IO () setCrtcGamma c req = do putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequest c chunk