// Code generated by wlbgen; DO NOT EDIT. // Upstream protocol copyright and license: // Copyright © 2018 NXP // Copyright © 2019 Status Research & Development GmbH. // Copyright © 2021 Xaver Hugl // // Permission is hereby granted, free of charge, to any person obtaining a // copy of this software and associated documentation files (the "Software"), // to deal in the Software without restriction, including without limitation // the rights to use, copy, modify, merge, publish, distribute, sublicense, // and/or sell copies of the Software, and to permit persons to whom the // Software is furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice (including the next // paragraph) shall be included in all copies or substantial portions of the // Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL // THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER // DEALINGS IN THE SOFTWARE. package drmlease import ( "fmt" "github.com/bnema/purego-libwayland/server" "runtime" ) var WpDrmLeaseDeviceV1Interface *server.Interface var WpDrmLeaseConnectorV1Interface *server.Interface var WpDrmLeaseRequestV1Interface *server.Interface var WpDrmLeaseV1Interface *server.Interface func init() { WpDrmLeaseDeviceV1Interface = &server.Interface{Name: "wp_drm_lease_device_v1", Version: 1} WpDrmLeaseConnectorV1Interface = &server.Interface{Name: "wp_drm_lease_connector_v1", Version: 1} WpDrmLeaseRequestV1Interface = &server.Interface{Name: "wp_drm_lease_request_v1", Version: 1} WpDrmLeaseV1Interface = &server.Interface{Name: "wp_drm_lease_v1", Version: 1} WpDrmLeaseDeviceV1Interface.Requests = []server.Message{ {Name: "create_lease_request", Signature: "n", Types: []*server.Interface{WpDrmLeaseRequestV1Interface}}, {Name: "release", Signature: "", Types: []*server.Interface{}}, } WpDrmLeaseDeviceV1Interface.Events = []server.Message{ {Name: "drm_fd", Signature: "h", Types: []*server.Interface{nil}}, {Name: "connector", Signature: "n", Types: []*server.Interface{WpDrmLeaseConnectorV1Interface}}, {Name: "done", Signature: "", Types: []*server.Interface{}}, {Name: "released", Signature: "", Types: []*server.Interface{}}, } WpDrmLeaseConnectorV1Interface.Requests = []server.Message{ {Name: "destroy", Signature: "", Types: []*server.Interface{}}, } WpDrmLeaseConnectorV1Interface.Events = []server.Message{ {Name: "name", Signature: "s", Types: []*server.Interface{nil}}, {Name: "description", Signature: "s", Types: []*server.Interface{nil}}, {Name: "connector_id", Signature: "u", Types: []*server.Interface{nil}}, {Name: "done", Signature: "", Types: []*server.Interface{}}, {Name: "withdrawn", Signature: "", Types: []*server.Interface{}}, } WpDrmLeaseRequestV1Interface.Requests = []server.Message{ {Name: "request_connector", Signature: "o", Types: []*server.Interface{WpDrmLeaseConnectorV1Interface}}, {Name: "submit", Signature: "n", Types: []*server.Interface{WpDrmLeaseV1Interface}}, } WpDrmLeaseRequestV1Interface.Events = []server.Message{} WpDrmLeaseV1Interface.Requests = []server.Message{ {Name: "destroy", Signature: "", Types: []*server.Interface{}}, } WpDrmLeaseV1Interface.Events = []server.Message{ {Name: "lease_fd", Signature: "h", Types: []*server.Interface{nil}}, {Name: "finished", Signature: "", Types: []*server.Interface{}}, } if err := server.NewInterfaces(WpDrmLeaseDeviceV1Interface, WpDrmLeaseConnectorV1Interface, WpDrmLeaseRequestV1Interface, WpDrmLeaseV1Interface); err != nil { panic(err) } } // WpDrmLeaseDeviceV1 lease device. type WpDrmLeaseDeviceV1 struct{ *server.Resource } func WrapWpDrmLeaseDeviceV1(r *server.Resource) *WpDrmLeaseDeviceV1 { if r == nil { return nil } return &WpDrmLeaseDeviceV1{r} } const WpDrmLeaseDeviceV1RequestCreateLeaseRequest uint32 = 0 const WpDrmLeaseDeviceV1RequestRelease uint32 = 1 const WpDrmLeaseDeviceV1EventDrmFd uint32 = 0 const WpDrmLeaseDeviceV1EventConnector uint32 = 1 const WpDrmLeaseDeviceV1EventDone uint32 = 2 const WpDrmLeaseDeviceV1EventReleased uint32 = 3 // WpDrmLeaseDeviceV1Handler handles wp_drm_lease_device_v1 requests. type WpDrmLeaseDeviceV1Handler interface { CreateLeaseRequest(self *WpDrmLeaseDeviceV1, id uint32) Release(self *WpDrmLeaseDeviceV1) } func NewWpDrmLeaseDeviceV1(c server.Client, version int32, id uint32, h WpDrmLeaseDeviceV1Handler) (*WpDrmLeaseDeviceV1, error) { if h == nil { return nil, fmt.Errorf("purego-libwayland: nil handler for wp_drm_lease_device_v1") } var self *WpDrmLeaseDeviceV1 r, err := c.CreateResource(WpDrmLeaseDeviceV1Interface, version, id, func(_ *server.Resource, opcode uint32, args []server.Arg) { switch opcode { case 0: h.CreateLeaseRequest(self, args[0].NewID()) case 1: h.Release(self) } }) if err != nil { return nil, err } self = WrapWpDrmLeaseDeviceV1(r) r.Data = self return self, nil } // SendDrmFd open a non-master fd for this DRM node. func (self *WpDrmLeaseDeviceV1) SendDrmFd(fd int) { self.PostEvent(WpDrmLeaseDeviceV1EventDrmFd, server.Fd(fd)) } // SendConnector advertise connectors available for leases. func (self *WpDrmLeaseDeviceV1) SendConnector(id *WpDrmLeaseConnectorV1) { self.PostEvent(WpDrmLeaseDeviceV1EventConnector, server.NewID(resourceOf(id))) } // SendDone signals grouping of connectors. func (self *WpDrmLeaseDeviceV1) SendDone() { self.PostEvent(WpDrmLeaseDeviceV1EventDone) } // SendReleased the compositor has finished using the device. func (self *WpDrmLeaseDeviceV1) SendReleased() { self.PostEvent(WpDrmLeaseDeviceV1EventReleased) } func NewWpDrmLeaseDeviceV1Global(d *server.Display, version int32, bind server.BindFunc) error { return d.CreateGlobal(WpDrmLeaseDeviceV1Interface, version, bind) } // WpDrmLeaseConnectorV1 a leasable DRM connector. type WpDrmLeaseConnectorV1 struct{ *server.Resource } func WrapWpDrmLeaseConnectorV1(r *server.Resource) *WpDrmLeaseConnectorV1 { if r == nil { return nil } return &WpDrmLeaseConnectorV1{r} } const WpDrmLeaseConnectorV1RequestDestroy uint32 = 0 const WpDrmLeaseConnectorV1EventName uint32 = 0 const WpDrmLeaseConnectorV1EventDescription uint32 = 1 const WpDrmLeaseConnectorV1EventConnectorId uint32 = 2 const WpDrmLeaseConnectorV1EventDone uint32 = 3 const WpDrmLeaseConnectorV1EventWithdrawn uint32 = 4 // WpDrmLeaseConnectorV1Handler handles wp_drm_lease_connector_v1 requests. type WpDrmLeaseConnectorV1Handler interface { Destroy(self *WpDrmLeaseConnectorV1) } func NewWpDrmLeaseConnectorV1(c server.Client, version int32, id uint32, h WpDrmLeaseConnectorV1Handler) (*WpDrmLeaseConnectorV1, error) { if h == nil { return nil, fmt.Errorf("purego-libwayland: nil handler for wp_drm_lease_connector_v1") } var self *WpDrmLeaseConnectorV1 r, err := c.CreateResource(WpDrmLeaseConnectorV1Interface, version, id, func(_ *server.Resource, opcode uint32, args []server.Arg) { switch opcode { case 0: h.Destroy(self) self.Destroy() } }) if err != nil { return nil, err } self = WrapWpDrmLeaseConnectorV1(r) r.Data = self return self, nil } // SendName name. func (self *WpDrmLeaseConnectorV1) SendName(name string) { var p runtime.Pinner defer p.Unpin() self.PostEvent(WpDrmLeaseConnectorV1EventName, server.String(&p, name, false)) } // SendDescription description. func (self *WpDrmLeaseConnectorV1) SendDescription(description string) { var p runtime.Pinner defer p.Unpin() self.PostEvent(WpDrmLeaseConnectorV1EventDescription, server.String(&p, description, false)) } // SendConnectorId connector_id. func (self *WpDrmLeaseConnectorV1) SendConnectorId(connectorId uint32) { self.PostEvent(WpDrmLeaseConnectorV1EventConnectorId, server.Uint(connectorId)) } // SendDone all properties have been sent. func (self *WpDrmLeaseConnectorV1) SendDone() { self.PostEvent(WpDrmLeaseConnectorV1EventDone) } // SendWithdrawn lease offer withdrawn. func (self *WpDrmLeaseConnectorV1) SendWithdrawn() { self.PostEvent(WpDrmLeaseConnectorV1EventWithdrawn) } func NewWpDrmLeaseConnectorV1Global(d *server.Display, version int32, bind server.BindFunc) error { return d.CreateGlobal(WpDrmLeaseConnectorV1Interface, version, bind) } // WpDrmLeaseRequestV1 DRM lease request. type WpDrmLeaseRequestV1 struct{ *server.Resource } func WrapWpDrmLeaseRequestV1(r *server.Resource) *WpDrmLeaseRequestV1 { if r == nil { return nil } return &WpDrmLeaseRequestV1{r} } const WpDrmLeaseRequestV1RequestRequestConnector uint32 = 0 const WpDrmLeaseRequestV1RequestSubmit uint32 = 1 // WpDrmLeaseRequestV1Error . type WpDrmLeaseRequestV1Error uint32 const ( WpDrmLeaseRequestV1ErrorWrongDevice WpDrmLeaseRequestV1Error = 0 WpDrmLeaseRequestV1ErrorDuplicateConnector WpDrmLeaseRequestV1Error = 1 WpDrmLeaseRequestV1ErrorEmptyLease WpDrmLeaseRequestV1Error = 2 ) // WpDrmLeaseRequestV1Handler handles wp_drm_lease_request_v1 requests. type WpDrmLeaseRequestV1Handler interface { RequestConnector(self *WpDrmLeaseRequestV1, connector *WpDrmLeaseConnectorV1) Submit(self *WpDrmLeaseRequestV1, id uint32) } func NewWpDrmLeaseRequestV1(c server.Client, version int32, id uint32, h WpDrmLeaseRequestV1Handler) (*WpDrmLeaseRequestV1, error) { if h == nil { return nil, fmt.Errorf("purego-libwayland: nil handler for wp_drm_lease_request_v1") } var self *WpDrmLeaseRequestV1 r, err := c.CreateResource(WpDrmLeaseRequestV1Interface, version, id, func(_ *server.Resource, opcode uint32, args []server.Arg) { switch opcode { case 0: h.RequestConnector(self, WrapWpDrmLeaseConnectorV1(args[0].Resource())) case 1: h.Submit(self, args[0].NewID()) self.Destroy() } }) if err != nil { return nil, err } self = WrapWpDrmLeaseRequestV1(r) r.Data = self return self, nil } func NewWpDrmLeaseRequestV1Global(d *server.Display, version int32, bind server.BindFunc) error { return d.CreateGlobal(WpDrmLeaseRequestV1Interface, version, bind) } // WpDrmLeaseV1 a DRM lease. type WpDrmLeaseV1 struct{ *server.Resource } func WrapWpDrmLeaseV1(r *server.Resource) *WpDrmLeaseV1 { if r == nil { return nil } return &WpDrmLeaseV1{r} } const WpDrmLeaseV1RequestDestroy uint32 = 0 const WpDrmLeaseV1EventLeaseFd uint32 = 0 const WpDrmLeaseV1EventFinished uint32 = 1 // WpDrmLeaseV1Handler handles wp_drm_lease_v1 requests. type WpDrmLeaseV1Handler interface { Destroy(self *WpDrmLeaseV1) } func NewWpDrmLeaseV1(c server.Client, version int32, id uint32, h WpDrmLeaseV1Handler) (*WpDrmLeaseV1, error) { if h == nil { return nil, fmt.Errorf("purego-libwayland: nil handler for wp_drm_lease_v1") } var self *WpDrmLeaseV1 r, err := c.CreateResource(WpDrmLeaseV1Interface, version, id, func(_ *server.Resource, opcode uint32, args []server.Arg) { switch opcode { case 0: h.Destroy(self) self.Destroy() } }) if err != nil { return nil, err } self = WrapWpDrmLeaseV1(r) r.Data = self return self, nil } // SendLeaseFd shares the DRM file descriptor. func (self *WpDrmLeaseV1) SendLeaseFd(leasedFd int) { self.PostEvent(WpDrmLeaseV1EventLeaseFd, server.Fd(leasedFd)) } // SendFinished sent when the lease has been revoked. func (self *WpDrmLeaseV1) SendFinished() { self.PostEvent(WpDrmLeaseV1EventFinished) } func NewWpDrmLeaseV1Global(d *server.Display, version int32, bind server.BindFunc) error { return d.CreateGlobal(WpDrmLeaseV1Interface, version, bind) } func resourceOf(v interface{ GetResource() *server.Resource }) *server.Resource { if v == nil { return nil } return v.GetResource() } func (self *WpDrmLeaseDeviceV1) GetResource() *server.Resource { if self == nil { return nil } return self.Resource } func (self *WpDrmLeaseConnectorV1) GetResource() *server.Resource { if self == nil { return nil } return self.Resource } func (self *WpDrmLeaseRequestV1) GetResource() *server.Resource { if self == nil { return nil } return self.Resource } func (self *WpDrmLeaseV1) GetResource() *server.Resource { if self == nil { return nil } return self.Resource }