1// Code generated by wlbgen. DO NOT EDIT.
2// Protocol: fifo_v1
3// Source: fifo-v1.xml
4
5// Upstream protocol copyright and license:
6// Copyright © 2023 Valve Corporation
7//
8// Permission is hereby granted, free of charge, to any person obtaining a
9// copy of this software and associated documentation files (the "Software"),
10// to deal in the Software without restriction, including without limitation
11// the rights to use, copy, modify, merge, publish, distribute, sublicense,
12// and/or sell copies of the Software, and to permit persons to whom the
13// Software is furnished to do so, subject to the following conditions:
14//
15// The above copyright notice and this permission notice (including the next
16// paragraph) shall be included in all copies or substantial portions of the
17// Software.
18//
19// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
22// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
23// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
24// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
25// DEALINGS IN THE SOFTWARE.
26
27package fifo
28
29import (
30 cross_wl_surface "github.com/bnema/go-wayland-bindings/client/wayland"
31 "github.com/bnema/wlturbo/wl"
32)
33
34// ERROR_ALREADY_EXISTS is the error already_exists value.
35const ERROR_ALREADY_EXISTS = 0
36
37// ERROR_SURFACE_DESTROYED is the error surface_destroyed value.
38const ERROR_SURFACE_DESTROYED = 0
39
40// WpFifoManagerInterface is the protocol interface name.
41const WpFifoManagerInterface = "wp_fifo_manager_v1"
42
43// WpFifoManager is the generated binding for wp_fifo_manager_v1 version 1.
44type WpFifoManager struct {
45 wl.BaseProxy
46}
47
48// NewWpFifoManager returns an unbound WpFifoManager.
49func NewWpFifoManager(ctx *wl.Context) *WpFifoManager {
50 obj := &WpFifoManager{}
51 obj.SetContext(ctx)
52 ctx.Register(obj)
53 return obj
54}
55
56// Informs the server that the client will no longer be using this protocol object. Existing objects created by this object are not affected.
57func (o *WpFifoManager) Destroy() error {
58 if err := o.Context().RequestArgs(wl.Request{Proxy: o, Opcode: 0, Name: "wp_fifo_manager_v1.destroy", Destructor: true}); err != nil {
59 return err
60 }
61 return nil
62}
63
64// Establish a fifo object for a surface that may be used to add display refresh constraints to content updates. Only one such object may exist for a surface and attempting to create more than one will result in an already_exists protocol error. If a surface is acted on by multiple software components, general best practice is that only the component performing wl_surface.attach operations should use this protocol.
65func (o *WpFifoManager) GetFifo(surface *cross_wl_surface.Surface) (*WpFifo, error) {
66 var arg1 wl.Object
67 if surface != nil {
68 arg1 = surface
69 }
70 child := &WpFifo{}
71 child.SetContext(o.Context())
72 if err := o.Context().RequestArgs(wl.Request{Proxy: o, Opcode: 1, Name: "wp_fifo_manager_v1.get_fifo", Child: child}, wl.ArgObject(child), wl.ArgObject(arg1)); err != nil {
73 return nil, err
74 }
75 return child, nil
76}
77
78// EventSignature returns the declared event argument types in wire order.
79func (o *WpFifoManager) EventSignature(opcode uint16) (string, bool) {
80 switch opcode {
81 default:
82 return "", false
83 }
84}
85
86// Dispatch decodes one event on wp_fifo_manager_v1 and calls the registered handlers.
87func (o *WpFifoManager) Dispatch(event *wl.Event) {
88 switch event.Opcode {
89 default:
90 }
91}
92
93// WpFifoInterface is the protocol interface name.
94const WpFifoInterface = "wp_fifo_v1"
95
96// WpFifo is the generated binding for wp_fifo_v1 version 1.
97type WpFifo struct {
98 wl.BaseProxy
99}
100
101// NewWpFifo returns an unbound WpFifo.
102func NewWpFifo(ctx *wl.Context) *WpFifo {
103 obj := &WpFifo{}
104 obj.SetContext(ctx)
105 ctx.Register(obj)
106 return obj
107}
108
109// When the content update containing the "set_barrier" is applied, it sets a "fifo_barrier" condition on the surface associated with the fifo object. The condition is cleared immediately after the following latching deadline for non-tearing presentation. The compositor may clear the condition early if it must do so to ensure client forward progress assumptions. To wait for this condition to clear, use the "wait_barrier" request. "set_barrier" is double-buffered state, see wl_surface.commit. Requesting set_barrier after the fifo object's surface is destroyed will generate a "surface_destroyed" error.
110func (o *WpFifo) SetBarrier() error {
111 if err := o.Context().RequestArgs(wl.Request{Proxy: o, Opcode: 0, Name: "wp_fifo_v1.set_barrier"}); err != nil {
112 return err
113 }
114 return nil
115}
116
117// Indicate that this content update is not ready while a "fifo_barrier" condition is present on the surface. This means that when the content update containing "set_barrier" was made active at a latching deadline, it will be active for at least one refresh cycle. A content update which is allowed to tear might become active after a latching deadline if no content update became active at the deadline. The constraint must be ignored if the surface is a subsurface in synchronized mode. If the surface is not being updated by the compositor (off-screen, occluded) the compositor may ignore the constraint. Clients must use an additional mechanism such as frame callbacks or timestamps to ensure throttling occurs under all conditions. "wait_barrier" is double-buffered state, see wl_surface.commit. Requesting "wait_barrier" after the fifo object's surface is destroyed will generate a "surface_destroyed" error.
118func (o *WpFifo) WaitBarrier() error {
119 if err := o.Context().RequestArgs(wl.Request{Proxy: o, Opcode: 1, Name: "wp_fifo_v1.wait_barrier"}); err != nil {
120 return err
121 }
122 return nil
123}
124
125// Informs the server that the client will no longer be using this protocol object. Surface state changes previously made by this protocol are unaffected by this object's destruction.
126func (o *WpFifo) Destroy() error {
127 if err := o.Context().RequestArgs(wl.Request{Proxy: o, Opcode: 2, Name: "wp_fifo_v1.destroy", Destructor: true}); err != nil {
128 return err
129 }
130 return nil
131}
132
133// EventSignature returns the declared event argument types in wire order.
134func (o *WpFifo) EventSignature(opcode uint16) (string, bool) {
135 switch opcode {
136 default:
137 return "", false
138 }
139}
140
141// Dispatch decodes one event on wp_fifo_v1 and calls the registered handlers.
142func (o *WpFifo) Dispatch(event *wl.Event) {
143 switch event.Opcode {
144 default:
145 }
146}