module Graphics.XHB.Gen.Xinerama (extension, queryVersion, getState, getScreenCount, getScreenSize, isActive, queryScreens, module Graphics.XHB.Gen.Xinerama.Types) where import Graphics.XHB.Gen.Xinerama.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 = "XINERAMA" queryVersion :: Graphics.XHB.Connection.Types.Connection -> CARD8 -> CARD8 -> IO (Receipt QueryVersionReply) queryVersion c major minor = do receipt <- newEmptyReceiptIO let req = MkQueryVersion major minor putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequestWithReply c chunk receipt return receipt getState :: Graphics.XHB.Connection.Types.Connection -> WINDOW -> IO (Receipt GetStateReply) getState c window = do receipt <- newEmptyReceiptIO let req = MkGetState window putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequestWithReply c chunk receipt return receipt getScreenCount :: Graphics.XHB.Connection.Types.Connection -> WINDOW -> IO (Receipt GetScreenCountReply) getScreenCount c window = do receipt <- newEmptyReceiptIO let req = MkGetScreenCount window putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequestWithReply c chunk receipt return receipt getScreenSize :: Graphics.XHB.Connection.Types.Connection -> WINDOW -> CARD32 -> IO (Receipt GetScreenSizeReply) getScreenSize c window screen = do receipt <- newEmptyReceiptIO let req = MkGetScreenSize window screen putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequestWithReply c chunk receipt return receipt isActive :: Graphics.XHB.Connection.Types.Connection -> IO (Receipt IsActiveReply) isActive c = do receipt <- newEmptyReceiptIO let req = MkIsActive putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequestWithReply c chunk receipt return receipt queryScreens :: Graphics.XHB.Connection.Types.Connection -> IO (Receipt QueryScreensReply) queryScreens c = do receipt <- newEmptyReceiptIO let req = MkQueryScreens putAction <- serializeExtensionRequest c req let chunk = runPut putAction sendRequestWithReply c chunk receipt return receipt