193 lines
7.0 KiB
Rust
193 lines
7.0 KiB
Rust
// x11-rs: Rust bindings for X11 libraries
|
|
// The X11 libraries are available under the MIT license.
|
|
// These bindings are public domain.
|
|
|
|
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};
|
|
|
|
//
|
|
// functions
|
|
//
|
|
|
|
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:
|
|
}
|
|
|
|
//
|
|
// types
|
|
//
|
|
|
|
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,
|
|
}
|
|
|
|
//
|
|
// constants
|
|
//
|
|
|
|
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;
|