wayland-headers 0.2.0+wayland-1.18.0-protocols-1.20

Minimalist Rust FFI bindings for Wayland
Documentation
use crate::prelude::*;

use super::wayland_server::*;

#[repr(C)]
pub struct wp_presentation {
    _data: (),
    _marker: PhantomData<(*mut u8, PhantomPinned)>,
}

#[repr(C)]
pub struct wp_presentation_feedback {
    _data: (),
    _marker: PhantomData<(*mut u8, PhantomPinned)>,
}

#[derive(Clone, Copy)]
#[repr(C)]
pub struct wp_presentation_interface {
    pub destroy: Option<unsafe extern "C" fn(
        client: *mut wl_client,
        resource: *mut wl_resource,
    )>,
    pub feedback: Option<unsafe extern "C" fn(
        client: *mut wl_client,
        resource: *mut wl_resource,
        surface: *mut wl_resource,
        callback: u32,
    )>,
}

pub const WP_PRESENTATION_CLOCK_ID: u32 = 0;
pub const WP_PRESENTATION_CLOCK_ID_SINCE_VERSION: u32 = 1;
pub const WP_PRESENTATION_DESTROY_SINCE_VERSION: u32 = 1;
pub const WP_PRESENTATION_ERROR_INVALID_FLAG: u32 = 1;
pub const WP_PRESENTATION_ERROR_INVALID_TIMESTAMP: u32 = 0;
pub const WP_PRESENTATION_FEEDBACK_DISCARDED: u32 = 2;
pub const WP_PRESENTATION_FEEDBACK_DISCARDED_SINCE_VERSION: u32 = 1;
pub const WP_PRESENTATION_FEEDBACK_KIND_HW_CLOCK: u32 = 0x2;
pub const WP_PRESENTATION_FEEDBACK_KIND_HW_COMPLETION: u32 = 0x4;
pub const WP_PRESENTATION_FEEDBACK_KIND_VSYNC: u32 = 0x1;
pub const WP_PRESENTATION_FEEDBACK_KIND_ZERO_COPY: u32 = 0x8;
pub const WP_PRESENTATION_FEEDBACK_PRESENTED: u32 = 1;
pub const WP_PRESENTATION_FEEDBACK_PRESENTED_SINCE_VERSION: u32 = 1;
pub const WP_PRESENTATION_FEEDBACK_SINCE_VERSION: u32 = 1;
pub const WP_PRESENTATION_FEEDBACK_SYNC_OUTPUT: u32 = 0;
pub const WP_PRESENTATION_FEEDBACK_SYNC_OUTPUT_SINCE_VERSION: u32 = 1;

unsafe extern "C" {
    pub static wp_presentation_feedback_interface: wl_interface;
    pub static wp_presentation_interface: wl_interface;
}

#[inline]
pub unsafe extern "C" fn wp_presentation_feedback_send_discarded(
    resource_: *mut wl_resource,
) {
    unsafe {
        wl_resource_post_event(
            resource_,
            WP_PRESENTATION_FEEDBACK_DISCARDED,
        )
    }
}

#[inline]
pub unsafe extern "C" fn wp_presentation_feedback_send_presented(
    resource_: *mut wl_resource,
    tv_sec_hi: u32,
    tv_sec_lo: u32,
    tv_nsec: u32,
    refresh: u32,
    seq_hi: u32,
    seq_lo: u32,
    flags: u32,
) {
    unsafe {
        wl_resource_post_event(
            resource_,
            WP_PRESENTATION_FEEDBACK_PRESENTED,
            tv_sec_hi,
            tv_sec_lo,
            tv_nsec,
            refresh,
            seq_hi,
            seq_lo,
            flags,
        )
    }
}

#[inline]
pub unsafe extern "C" fn wp_presentation_feedback_send_sync_output(
    resource_: *mut wl_resource,
    output: *mut wl_resource,
) {
    unsafe {
        wl_resource_post_event(
            resource_,
            WP_PRESENTATION_FEEDBACK_SYNC_OUTPUT,
            output,
        )
    }
}

#[inline]
pub unsafe extern "C" fn wp_presentation_send_clock_id(
    resource_: *mut wl_resource,
    clk_id: u32,
) {
    unsafe {
        wl_resource_post_event(
            resource_,
            WP_PRESENTATION_CLOCK_ID,
            clk_id,
        )
    }
}