// Code generated by wlbgen. DO NOT EDIT. // Protocol: fifo_v1 // Source: fifo-v1.xml // Upstream protocol copyright and license: // Copyright © 2023 Valve Corporation // // 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 fifo import ( cross_wl_surface "github.com/bnema/go-wayland-bindings/client/wayland" "github.com/bnema/wlturbo/wl" ) // ERROR_ALREADY_EXISTS is the error already_exists value. const ERROR_ALREADY_EXISTS = 0 // ERROR_SURFACE_DESTROYED is the error surface_destroyed value. const ERROR_SURFACE_DESTROYED = 0 // WpFifoManagerInterface is the protocol interface name. const WpFifoManagerInterface = "wp_fifo_manager_v1" // WpFifoManager is the generated binding for wp_fifo_manager_v1 version 1. type WpFifoManager struct { wl.BaseProxy } // NewWpFifoManager returns an unbound WpFifoManager. func NewWpFifoManager(ctx *wl.Context) *WpFifoManager { obj := &WpFifoManager{} obj.SetContext(ctx) ctx.Register(obj) return obj } // Informs the server that the client will no longer be using this protocol object. Existing objects created by this object are not affected. func (o *WpFifoManager) Destroy() error { if err := o.Context().RequestArgs(wl.Request{Proxy: o, Opcode: 0, Name: "wp_fifo_manager_v1.destroy", Destructor: true}); err != nil { return err } return nil } // 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. func (o *WpFifoManager) GetFifo(surface *cross_wl_surface.Surface) (*WpFifo, error) { var arg1 wl.Object if surface != nil { arg1 = surface } child := &WpFifo{} child.SetContext(o.Context()) 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 { return nil, err } return child, nil } // EventSignature returns the declared event argument types in wire order. func (o *WpFifoManager) EventSignature(opcode uint16) (string, bool) { switch opcode { default: return "", false } } // Dispatch decodes one event on wp_fifo_manager_v1 and calls the registered handlers. func (o *WpFifoManager) Dispatch(event *wl.Event) { switch event.Opcode { default: } } // WpFifoInterface is the protocol interface name. const WpFifoInterface = "wp_fifo_v1" // WpFifo is the generated binding for wp_fifo_v1 version 1. type WpFifo struct { wl.BaseProxy } // NewWpFifo returns an unbound WpFifo. func NewWpFifo(ctx *wl.Context) *WpFifo { obj := &WpFifo{} obj.SetContext(ctx) ctx.Register(obj) return obj } // 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. func (o *WpFifo) SetBarrier() error { if err := o.Context().RequestArgs(wl.Request{Proxy: o, Opcode: 0, Name: "wp_fifo_v1.set_barrier"}); err != nil { return err } return nil } // 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. func (o *WpFifo) WaitBarrier() error { if err := o.Context().RequestArgs(wl.Request{Proxy: o, Opcode: 1, Name: "wp_fifo_v1.wait_barrier"}); err != nil { return err } return nil } // 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. func (o *WpFifo) Destroy() error { if err := o.Context().RequestArgs(wl.Request{Proxy: o, Opcode: 2, Name: "wp_fifo_v1.destroy", Destructor: true}); err != nil { return err } return nil } // EventSignature returns the declared event argument types in wire order. func (o *WpFifo) EventSignature(opcode uint16) (string, bool) { switch opcode { default: return "", false } } // Dispatch decodes one event on wp_fifo_v1 and calls the registered handlers. func (o *WpFifo) Dispatch(event *wl.Event) { switch event.Opcode { default: } }