xhb-0.1.2009.2.8: patched/Graphics/XHB/Gen/Sync.hs
module Graphics.XHB.Gen.Sync
(extension, initialize, listSystemCounters, createCounter,
destroyCounter, queryCounter, await, changeCounter, setCounter,
createAlarm, changeAlarm, destroyAlarm, queryAlarm, setPriority,
getPriority, module Graphics.XHB.Gen.Sync.Types)
where
import Graphics.XHB.Gen.Sync.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.Word
import Data.Int
import Data.Binary.Get
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 = "SYNC"
initialize ::
Graphics.XHB.Connection.Types.Connection ->
Word8 -> Word8 -> IO (Receipt InitializeReply)
initialize c desired_major_version desired_minor_version
= do (receipt, rReceipt) <- newDeserReceipt
let req = MkInitialize desired_major_version desired_minor_version
putAction <- serializeExtensionRequest c req
let chunk = runPut putAction
sendRequestWithReply c chunk rReceipt
return receipt
listSystemCounters ::
Graphics.XHB.Connection.Types.Connection ->
IO (Receipt ListSystemCountersReply)
listSystemCounters c
= do (receipt, rReceipt) <- newDeserReceipt
let req = MkListSystemCounters
putAction <- serializeExtensionRequest c req
let chunk = runPut putAction
sendRequestWithReply c chunk rReceipt
return receipt
createCounter ::
Graphics.XHB.Connection.Types.Connection ->
COUNTER -> INT64 -> IO ()
createCounter c id initial_value
= do let req = MkCreateCounter id initial_value
putAction <- serializeExtensionRequest c req
let chunk = runPut putAction
sendRequest c chunk
destroyCounter ::
Graphics.XHB.Connection.Types.Connection -> COUNTER -> IO ()
destroyCounter c counter
= do let req = MkDestroyCounter counter
putAction <- serializeExtensionRequest c req
let chunk = runPut putAction
sendRequest c chunk
queryCounter ::
Graphics.XHB.Connection.Types.Connection ->
COUNTER -> IO (Receipt INT64)
queryCounter c counter
= do (receipt, rReceipt) <- newEmptyReceipt
(runGet (counter_value_QueryCounterReply `fmap` deserialize))
let req = MkQueryCounter counter
putAction <- serializeExtensionRequest c req
let chunk = runPut putAction
sendRequestWithReply c chunk rReceipt
return receipt
await ::
Graphics.XHB.Connection.Types.Connection ->
[WAITCONDITION] -> IO ()
await c wait_list
= do let req = MkAwait wait_list
putAction <- serializeExtensionRequest c req
let chunk = runPut putAction
sendRequest c chunk
changeCounter ::
Graphics.XHB.Connection.Types.Connection ->
COUNTER -> INT64 -> IO ()
changeCounter c counter amount
= do let req = MkChangeCounter counter amount
putAction <- serializeExtensionRequest c req
let chunk = runPut putAction
sendRequest c chunk
setCounter ::
Graphics.XHB.Connection.Types.Connection ->
COUNTER -> INT64 -> IO ()
setCounter c counter value
= do let req = MkSetCounter counter value
putAction <- serializeExtensionRequest c req
let chunk = runPut putAction
sendRequest c chunk
createAlarm ::
Graphics.XHB.Connection.Types.Connection ->
ALARM -> ValueParam Word32 -> IO ()
createAlarm c id value
= do let req = MkCreateAlarm id value
putAction <- serializeExtensionRequest c req
let chunk = runPut putAction
sendRequest c chunk
changeAlarm ::
Graphics.XHB.Connection.Types.Connection ->
ALARM -> ValueParam Word32 -> IO ()
changeAlarm c id value
= do let req = MkChangeAlarm id value
putAction <- serializeExtensionRequest c req
let chunk = runPut putAction
sendRequest c chunk
destroyAlarm ::
Graphics.XHB.Connection.Types.Connection -> ALARM -> IO ()
destroyAlarm c alarm
= do let req = MkDestroyAlarm alarm
putAction <- serializeExtensionRequest c req
let chunk = runPut putAction
sendRequest c chunk
queryAlarm ::
Graphics.XHB.Connection.Types.Connection ->
ALARM -> IO (Receipt QueryAlarmReply)
queryAlarm c alarm
= do (receipt, rReceipt) <- newDeserReceipt
let req = MkQueryAlarm alarm
putAction <- serializeExtensionRequest c req
let chunk = runPut putAction
sendRequestWithReply c chunk rReceipt
return receipt
setPriority ::
Graphics.XHB.Connection.Types.Connection ->
Word32 -> Int32 -> IO ()
setPriority c id priority
= do let req = MkSetPriority id priority
putAction <- serializeExtensionRequest c req
let chunk = runPut putAction
sendRequest c chunk
getPriority ::
Graphics.XHB.Connection.Types.Connection ->
Word32 -> IO (Receipt Int32)
getPriority c id
= do (receipt, rReceipt) <- newEmptyReceipt
(runGet (priority_GetPriorityReply `fmap` deserialize))
let req = MkGetPriority id
putAction <- serializeExtensionRequest c req
let chunk = runPut putAction
sendRequestWithReply c chunk rReceipt
return receipt