module Graphics.XHB.Gen.DPMS
       (extension, getVersion, capable, getTimeouts, setTimeouts,
        forceLevel, info, module Graphics.XHB.Gen.DPMS.Types)
       where
import Graphics.XHB.Gen.DPMS.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 = "DPMS"
 
getVersion ::
             Graphics.XHB.Connection.Types.Connection ->
               CARD16 -> CARD16 -> IO (Receipt GetVersionReply)
getVersion c client_major_version client_minor_version
  = do receipt <- newEmptyReceiptIO
       let req = MkGetVersion client_major_version client_minor_version
       putAction <- serializeExtensionRequest c req
       let chunk = runPut putAction
       sendRequestWithReply c chunk receipt
       return receipt
 
capable ::
          Graphics.XHB.Connection.Types.Connection ->
            IO (Receipt CapableReply)
capable c
  = do receipt <- newEmptyReceiptIO
       let req = MkCapable
       putAction <- serializeExtensionRequest c req
       let chunk = runPut putAction
       sendRequestWithReply c chunk receipt
       return receipt
 
getTimeouts ::
              Graphics.XHB.Connection.Types.Connection ->
                IO (Receipt GetTimeoutsReply)
getTimeouts c
  = do receipt <- newEmptyReceiptIO
       let req = MkGetTimeouts
       putAction <- serializeExtensionRequest c req
       let chunk = runPut putAction
       sendRequestWithReply c chunk receipt
       return receipt
 
setTimeouts ::
              Graphics.XHB.Connection.Types.Connection -> SetTimeouts -> IO ()
setTimeouts c req
  = do putAction <- serializeExtensionRequest c req
       let chunk = runPut putAction
       sendRequest c chunk
 
forceLevel ::
             Graphics.XHB.Connection.Types.Connection -> CARD16 -> IO ()
forceLevel c power_level
  = do let req = MkForceLevel power_level
       putAction <- serializeExtensionRequest c req
       let chunk = runPut putAction
       sendRequest c chunk
 
info ::
       Graphics.XHB.Connection.Types.Connection -> IO (Receipt InfoReply)
info c
  = do receipt <- newEmptyReceiptIO
       let req = MkInfo
       putAction <- serializeExtensionRequest c req
       let chunk = runPut putAction
       sendRequestWithReply c chunk receipt
       return receipt