Wayland++ 1.0.0
C++ Bindings for Wayland
Loading...
Searching...
No Matches
wayland::server::presentation_t Class Reference

timed presentation related wl_surface requests More...

#include <wayland-server-protocol-extra.hpp>

Inherits wayland::server::resource_t.

Public Member Functions

std::function< void()> & on_destroy ()
 unbind from the presentation interface
 
std::function< void(surface_t, presentation_feedback_t)> & on_feedback ()
 request presentation feedback information
 
void clock_id (uint32_t clk_id, bool post=true)
 clock ID for timestamps
 
void post_invalid_timestamp (std::string const &msg)
 Post error: invalid value in tv_nsec.
 
void post_invalid_flag (std::string const &msg)
 Post error: invalid flag.
 
bool proxy_has_object () const
 Check whether this wrapper actually wraps an object.
 
void post_no_memory () const
 
uint32_t get_id () const
 
client_t get_client () const
 
unsigned int get_version () const
 
std::string get_class ()
 

Static Public Attributes

static constexpr std::uint32_t clock_id_since_version = 1
 Minimum protocol version required for the clock_id function.
 

Detailed Description

timed presentation related wl_surface requests

The main feature of this interface is accurate presentation timing feedback to ensure smooth video playback while maintaining audio/video synchronization. Some features use the concept of a presentation clock, which is defined in the presentation.clock_id event.

A content update for a wl_surface is submitted by a wl_surface.commit request. Request 'feedback' associates with the wl_surface.commit and provides feedback on the content update, particularly the final realized presentation time.

Definition at line 80 of file wayland-server-protocol-extra.hpp.

Member Function Documentation

◆ clock_id()

void presentation_t::clock_id ( uint32_t  clk_id,
bool  post = true 
)

clock ID for timestamps

Parameters
clk_idplatform clock identifier

This event tells the client in which clock domain the compositor interprets the timestamps used by the presentation extension. This clock is called the presentation clock.

The compositor sends this event when the client binds to the presentation interface. The presentation clock does not change during the lifetime of the client connection.

The clock identifier is platform dependent. On Linux/glibc, the identifier value is one of the clockid_t values accepted by clock_gettime(). clock_gettime() is defined by POSIX.1-2001.

Timestamps in this clock domain are expressed as tv_sec_hi, tv_sec_lo, tv_nsec triples, each component being an unsigned 32-bit value. Whole seconds are in tv_sec which is a 64-bit value combined from tv_sec_hi and tv_sec_lo, and the additional fractional part in tv_nsec as nanoseconds. Hence, for valid timestamps tv_nsec must be in [0, 999999999].

Note that clock_id applies only to the presentation clock, and implies nothing about e.g. the timestamps used in the Wayland core protocol input events.

Compositors should prefer a clock which does not jump and is not slewed e.g. by NTP. The absolute value of the clock is irrelevant. Precision of one millisecond or better is recommended. Clients must be able to query the current clock value directly, not by asking the compositor.

Definition at line 702 of file wayland-server-protocol-extra.cpp.

◆ get_class()

std::string wayland::server::resource_t::get_class ( )
inherited

Retrieve the interface name (class) of a resource object.

Returns
Interface name of the resource object.

◆ get_client()

client_t wayland::server::resource_t::get_client ( ) const
inherited

Get the associated client

Returns
the client that owns the resource.

◆ get_id()

uint32_t wayland::server::resource_t::get_id ( ) const
inherited

Get the internal ID of the resource

Returns
the internal ID of the resource

◆ get_version()

unsigned int wayland::server::resource_t::get_version ( ) const
inherited

Get interface version

Returns
Interface version this resource has been constructed with.

◆ on_destroy()

std::function< void()> & presentation_t::on_destroy ( )

unbind from the presentation interface

Informs the server that the client will no longer be using this protocol object. Existing objects created by this object are not affected.

Definition at line 690 of file wayland-server-protocol-extra.cpp.

◆ on_feedback()

std::function< void(surface_t, presentation_feedback_t)> & presentation_t::on_feedback ( )

request presentation feedback information

Parameters
surfacetarget surface
callbacknew feedback object

Request presentation feedback for the current content submission on the given surface. This creates a new presentation_feedback object, which will deliver the feedback information once. If multiple presentation_feedback objects are created for the same submission, they will all deliver the same information.

For details on what information is returned, see the presentation_feedback interface.

Definition at line 696 of file wayland-server-protocol-extra.cpp.

◆ post_invalid_flag()

void presentation_t::post_invalid_flag ( std::string const &  msg)

Post error: invalid flag.

Definition at line 712 of file wayland-server-protocol-extra.cpp.

◆ post_invalid_timestamp()

void presentation_t::post_invalid_timestamp ( std::string const &  msg)

Post error: invalid value in tv_nsec.

Definition at line 707 of file wayland-server-protocol-extra.cpp.

◆ post_no_memory()

void wayland::server::resource_t::post_no_memory ( ) const
inherited

Post "not enough memory" error to the client

If the compositor has not enough memory to fulfill a certail request of the client, this function can be called to notify the client of this circumstance.

◆ proxy_has_object()

bool wayland::server::resource_t::proxy_has_object ( ) const
inherited

Check whether this wrapper actually wraps an object.

Returns
true if there is an underlying object, false if this wrapper is empty

Member Data Documentation

◆ clock_id_since_version

constexpr std::uint32_t wayland::server::presentation_t::clock_id_since_version = 1
staticconstexpr

Minimum protocol version required for the clock_id function.

Definition at line 170 of file wayland-server-protocol-extra.hpp.


The documentation for this class was generated from the following files: