summaryrefslogtreecommitdiff
path: root/protocols/Wayland/Protocols/Core/WLOutput.hs
diff options
context:
space:
mode:
Diffstat (limited to 'protocols/Wayland/Protocols/Core/WLOutput.hs')
-rw-r--r--protocols/Wayland/Protocols/Core/WLOutput.hs55
1 files changed, 28 insertions, 27 deletions
diff --git a/protocols/Wayland/Protocols/Core/WLOutput.hs b/protocols/Wayland/Protocols/Core/WLOutput.hs
index d6adda2..3c4a8f5 100644
--- a/protocols/Wayland/Protocols/Core/WLOutput.hs
+++ b/protocols/Wayland/Protocols/Core/WLOutput.hs
@@ -9,26 +9,26 @@ module Wayland.Protocols.Core.WLOutput
, Geometry(..)
, Request(..)
, Event(..)
- , Handle(..)
+ , WLOutput(..)
) where
import Data.Data (Typeable)
-import Wayland.Server (ResourceClass(..), RequestClass, InterfaceDesc(..), MessageDesc(..), ArgumentDesc(..), Nullability(..), ObjectID, EventClass, marshalInt, marshalString, marshalUInt)
+import Wayland.Server (Object(..), RequestClass, InterfaceDesc(..), MessageDesc(..), ArgumentDesc(..), Nullability(..), AnyObject, EventClass, marshalInt, marshalString, marshalUInt)
import Data.Hashable (Hashable(..))
-newtype Handle = Handle ObjectID
+newtype WLOutput = WLOutput AnyObject
deriving (Show, Eq, Ord, Hashable)
reqRelease :: MessageDesc
reqRelease = MessageDesc { msgName = "release"
- , msgSignature = []
+ , msgArguments = []
, msgSince = 3
, msgIsDestructor = True
}
evGeometry :: MessageDesc
evGeometry = MessageDesc { msgName = "geometry"
- , msgSignature = [ ArgumentInt
+ , msgArguments = [ ArgumentInt
, ArgumentInt
, ArgumentInt
, ArgumentInt
@@ -43,7 +43,7 @@ evGeometry = MessageDesc { msgName = "geometry"
evMode :: MessageDesc
evMode = MessageDesc { msgName = "mode"
- , msgSignature = [ ArgumentUInt
+ , msgArguments = [ ArgumentUInt
, ArgumentInt
, ArgumentInt
, ArgumentInt
@@ -54,51 +54,52 @@ evMode = MessageDesc { msgName = "mode"
evDone :: MessageDesc
evDone = MessageDesc { msgName = "done"
- , msgSignature = []
+ , msgArguments = []
, msgSince = 2
, msgIsDestructor = False
}
evScale :: MessageDesc
evScale = MessageDesc { msgName = "scale"
- , msgSignature = [ ArgumentInt ]
+ , msgArguments = [ ArgumentInt ]
, msgSince = 2
, msgIsDestructor = False
}
evName :: MessageDesc
evName = MessageDesc { msgName = "name"
- , msgSignature = [ ArgumentString NotNull ]
+ , msgArguments = [ ArgumentString NotNull ]
, msgSince = 4
, msgIsDestructor = False
}
evDescription :: MessageDesc
evDescription = MessageDesc { msgName = "description"
- , msgSignature = [ ArgumentString NotNull ]
+ , msgArguments = [ ArgumentString NotNull ]
, msgSince = 4
, msgIsDestructor = False
}
-instance ResourceClass Handle where
- type ResourceEvent Handle = Event
- type ResourceRequest Handle = Request
- objectID (Handle h) = h
- fromID = Handle
- interface _ = InterfaceDesc { ifName = "wl_output"
- , ifVersion = 4
- , ifRequests = [ reqRelease ]
- , ifEvents = [ evGeometry
- , evMode
- , evDone
- , evScale
- , evName
- , evDescription ]
- }
+instance Object WLOutput where
+ type ObjectEvent WLOutput = Event
+ type ObjectRequest WLOutput = Request
+ toAny (WLOutput o) = o
+ fromAny = WLOutput
+ describeInterface _ = InterfaceDesc { ifName = "wl_output"
+ , ifVersion = 4
+ , ifRequests = [ reqRelease ]
+ , ifEvents = [ evGeometry
+ , evMode
+ , evDone
+ , evScale
+ , evName
+ , evDescription
+ ]
+ }
demarshalRequest r 0 = do
pure (ReqRelease r)
- demarshalRequest _ _ = fail "Unknown opcode."
+ demarshalRequest _ _ = error "Unknown opcode."
marshalEvent _ (EvGeometry p) = do
marshalInt (x p)
@@ -187,7 +188,7 @@ data Geometry
deriving (Show)
data Request
- = ReqRelease Handle
+ = ReqRelease WLOutput
deriving (Typeable, Show)
instance RequestClass Request where