xhb-0.0.2009.1.6: 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.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 ->
CARD8 -> CARD8 -> IO (Receipt InitializeReply)
initialize c desired_major_version desired_minor_version
= do receipt <- newEmptyReceiptIO
let req = MkInitialize desired_major_version desired_minor_version
putAction <- serializeExtensionRequest c req
let chunk = runPut putAction
sendRequestWithReply c chunk receipt
return receipt
listSystemCounters ::
Graphics.XHB.Connection.Types.Connection ->
IO (Receipt ListSystemCountersReply)
listSystemCounters c
= do receipt <- newEmptyReceiptIO
let req = MkListSystemCounters
putAction <- serializeExtensionRequest c req
let chunk = runPut putAction
sendRequestWithReply c chunk receipt
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 QueryCounterReply)
queryCounter c counter
= do receipt <- newEmptyReceiptIO
let req = MkQueryCounter counter
putAction <- serializeExtensionRequest c req
let chunk = runPut putAction
sendRequestWithReply c chunk receipt
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 CARD32 -> 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 CARD32 -> 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 <- newEmptyReceiptIO
let req = MkQueryAlarm alarm
putAction <- serializeExtensionRequest c req
let chunk = runPut putAction
sendRequestWithReply c chunk receipt
return receipt
setPriority ::
Graphics.XHB.Connection.Types.Connection ->
CARD32 -> 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 ->
CARD32 -> IO (Receipt GetPriorityReply)
getPriority c id
= do receipt <- newEmptyReceiptIO
let req = MkGetPriority id
putAction <- serializeExtensionRequest c req
let chunk = runPut putAction
sendRequestWithReply c chunk receipt
return receipt