use std::os::raw::{c_char, c_int, c_long, c_uchar, c_uint, c_ulong};
use crate::xlib::{Bool, Display, Drawable, Status, Time, XID};
x11_link! { Xext, xext, ["libXext.so.6", "libXext.so"], 38,
pub fn XSyncQueryExtension(dpy: *mut Display, event_base: *mut c_int, error_base: *mut c_int) -> Status,
pub fn XSyncInitialize(dpy: *mut Display, major_version: *mut c_int, minor_version: *mut c_int) -> Status,
pub fn XSyncListSystemCounters(dpy: *mut Display, n_counters: *mut c_int) -> *mut XSyncSystemCounter,
pub fn XSyncFreeSystemCounterList(list: *mut XSyncSystemCounter) -> (),
pub fn XSyncCreateCounter(dpy: *mut Display, initial_value: XSyncValue) -> XSyncCounter,
pub fn XSyncSetCounter(dpy: *mut Display, counter: XSyncCounter, value: XSyncValue) -> Status,
pub fn XSyncChangeCounter(dpy: *mut Display, counter: XSyncCounter, value: XSyncValue) -> Status,
pub fn XSyncDestroyCounter(dpy: *mut Display, value: XSyncCounter) -> Status,
pub fn XSyncQueryCounter(dpy: *mut Display, counter: XSyncCounter, value: *mut XSyncValue) -> Status,
pub fn XSyncAwait(dpy: *mut Display, wait_list: *mut XSyncWaitCondition, n_conditions: c_int) -> Status,
pub fn XSyncCreateAlarm(dpy: *mut Display, values_mask: c_ulong, values: *mut XSyncAlarmAttributes) -> XSyncAlarm,
pub fn XSyncDestroyAlarm(dpy: *mut Display, alarm: XSyncAlarm) -> Status,
pub fn XSyncQueryAlarm(dpy: *mut Display, alarm: XSyncAlarm, values: *mut XSyncAlarmAttributes) -> Status,
pub fn XSyncChangeAlarm(dpy: *mut Display, alarm: XSyncAlarm, values_mask: c_ulong, values: *mut XSyncAlarmAttributes) -> Status,
pub fn XSyncSetPriority(dpy: *mut Display, client_resource_id: XID, priority: c_int) -> Status,
pub fn XSyncGetPriority(dpy: *mut Display, client_resource_id: XID, priority: *mut c_int) -> Status,
pub fn XSyncCreateFence(dpy: *mut Display, d: Drawable, initially_triggered: Bool) -> XSyncFence,
pub fn XSyncTriggerFence(dpy: *mut Display, fence: XSyncFence) -> Bool,
pub fn XSyncResetFence(dpy: *mut Display, fence: XSyncFence) -> Bool,
pub fn XSyncDestroyFence(dpy: *mut Display, fence: XSyncFence) -> Bool,
pub fn XSyncQueryFence(dpy: *mut Display, fence: XSyncFence, triggered: *mut Bool) -> Bool,
pub fn XSyncAwaitFence(dpy: *mut Display, fence_list: *const XSyncFence, n_fences: c_int) -> Bool,
pub fn XSyncIntToValue(pv: *mut XSyncValue, i: c_int) -> (),
pub fn XSyncIntsToValue(pv: *mut XSyncValue, l: c_uint, h: c_int) -> (),
pub fn XSyncValueGreaterThan(a: XSyncValue, b: XSyncValue) -> Bool,
pub fn XSyncValueLessThan(a: XSyncValue, b: XSyncValue) -> Bool,
pub fn XSyncValueGreaterOrEqual(a: XSyncValue, b: XSyncValue) -> Bool,
pub fn XSyncValueLessOrEqual(a: XSyncValue, b: XSyncValue) -> Bool,
pub fn XSyncValueEqual(a: XSyncValue, b: XSyncValue) -> Bool,
pub fn XSyncValueIsNegative(v: XSyncValue) -> Bool,
pub fn XSyncValueIsZero(v: XSyncValue) -> Bool,
pub fn XSyncValueIsPositive(v: XSyncValue) -> Bool,
pub fn XSyncValueLow32(v: XSyncValue) -> c_uint,
pub fn XSyncValueHigh32(v: XSyncValue) -> c_int,
pub fn XSyncValueAdd(presult: *mut XSyncValue, a: XSyncValue, b: XSyncValue, poverflow: *mut c_int) -> (),
pub fn XSyncValueSubtract(presult: *mut XSyncValue, a: XSyncValue, b: XSyncValue, poverflow: *mut c_int) -> (),
pub fn XSyncMaxValue(pv: *mut XSyncValue) -> (),
pub fn XSyncMinValue(pv: *mut XSyncValue) -> (),
variadic:
globals:
}
pub type XSyncValueType = c_uint;
pub type XSyncTestType = c_uint;
pub type XSyncAlarmState = c_uint;
pub type XSyncCounter = XID;
pub type XSyncAlarm = XID;
pub type XSyncFence = XID;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct XSyncAlarmError {
pub type_: c_int,
pub display: *mut Display,
pub alarm: XSyncAlarm,
pub serial: c_ulong,
pub error_code: c_uchar,
pub request_code: c_uchar,
pub minor_code: c_uchar,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct XSyncCounterError {
pub type_: c_int,
pub display: *mut Display,
pub counter: XSyncCounter,
pub serial: c_ulong,
pub error_code: c_uchar,
pub request_code: c_uchar,
pub minor_code: c_uchar,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct XSyncValue {
pub hi: c_int,
pub lo: c_uint,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct XSyncTrigger {
pub counter: XSyncCounter,
pub value_type: XSyncValueType,
pub wait_value: XSyncValue,
pub test_type: XSyncTestType,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct XSyncWaitCondition {
pub trigger: XSyncTrigger,
pub event_threshold: XSyncValue,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct XSyncAlarmAttributes {
pub trigger: XSyncTrigger,
pub delta: XSyncValue,
pub events: Bool,
pub state: XSyncAlarmState,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct XSyncCounterNotifyEvent {
pub type_: c_int,
pub serial: c_ulong,
pub send_event: Bool,
pub display: *mut Display,
pub counter: XSyncCounter,
pub wait_value: XSyncValue,
pub counter_value: XSyncValue,
pub time: Time,
pub count: c_int,
pub destroyed: Bool,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct XSyncAlarmNotifyEvent {
pub type_: c_int,
pub serial: c_ulong,
pub send_event: Bool,
pub display: *mut Display,
pub alarm: XSyncAlarm,
pub counter_value: XSyncValue,
pub alarm_value: XSyncValue,
pub time: Time,
pub state: XSyncAlarmState,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct XSyncSystemCounter {
pub name: *mut c_char,
pub counter: XSyncCounter,
pub resolution: XSyncValue,
}
pub const SYNC_NAME: &str = "SYNC";
pub const SYNC_MAJOR_VERSION: c_int = 3;
pub const SYNC_MINOR_VERSION: c_int = 1;
pub const XSyncCounterNotify: c_long = 0;
pub const XSyncAlarmNotify: c_long = 1;
pub const XSyncAlarmNotifyMask: c_long = 1 << XSyncAlarmNotify;
pub const XSyncNumberEvents: c_long = 2;
pub const XSyncBadCounter: c_long = 0;
pub const XSyncBadAlarm: c_long = 1;
pub const XSyncBadFence: c_long = 2;
pub const XSyncNumberErrors: c_long = XSyncBadFence + 1;
pub const XSyncCACounter: c_long = 1 << 0;
pub const XSyncCAValueType: c_long = 1 << 1;
pub const XSyncCAValue: c_long = 1 << 2;
pub const XSyncCATestType: c_long = 1 << 3;
pub const XSyncCADelta: c_long = 1 << 4;
pub const XSyncCAEvents: c_long = 1 << 5;
pub const XSyncValueType_XSyncAbsolute: XSyncValueType = 0;
pub const XSyncValueType_XSyncRelative: XSyncValueType = 1;
pub const XSyncTestType_XSyncPositiveTransition: XSyncTestType = 0;
pub const XSyncTestType_XSyncNegativeTransition: XSyncTestType = 1;
pub const XSyncTestType_XSyncPositiveComparison: XSyncTestType = 2;
pub const XSyncTestType_XSyncNegativeComparison: XSyncTestType = 3;
pub const XSyncAlarmState_XSyncAlarmActive: XSyncAlarmState = 0;
pub const XSyncAlarmState_XSyncAlarmInactive: XSyncAlarmState = 1;
pub const XSyncAlarmState_XSyncAlarmDestroyed: XSyncAlarmState = 2;