1 // x11-rs: Rust bindings for X11 libraries 2 // The X11 libraries are available under the MIT license. 3 // These bindings are public domain. 4 5 use std::os::raw::{c_char, c_int, c_long, c_short, c_uchar, c_uint, c_ulong, c_ushort}; 6 7 use super::xlib::{Atom, Bool, Display, Drawable, Status, Time, Window, XEvent, XID}; 8 use super::xrender::{XFixed, XTransform}; 9 10 // 11 // functions 12 // 13 14 x11_link! { Xrandr, xrandr, ["libXrandr.so.2", "libXrandr.so"], 70, 15 pub fn XRRAddOutputMode (dpy: *mut Display, output: RROutput, mode: RRMode) -> (), 16 pub fn XRRAllocGamma (size: c_int) -> *mut XRRCrtcGamma, 17 pub fn XRRAllocModeInfo (name: *const c_char, nameLength: c_int) -> *mut XRRModeInfo, 18 pub fn XRRAllocateMonitor (dpy: *mut Display, noutput: c_int) -> *mut XRRMonitorInfo, 19 pub fn XRRChangeOutputProperty (dpy: *mut Display, output: RROutput, property: Atom, type_: Atom, format: c_int, mode: c_int, data: *const c_uchar, nelements: c_int) -> (), 20 pub fn XRRChangeProviderProperty (dpy: *mut Display, provider: RRProvider, property: Atom, type_: Atom, format: c_int, mode: c_int, data: *const c_uchar, nelements: c_int) -> (), 21 pub fn XRRConfigCurrentConfiguration (config: *mut XRRScreenConfiguration, rotation: *mut Rotation) -> SizeID, 22 pub fn XRRConfigCurrentRate (config: *mut XRRScreenConfiguration) -> c_short, 23 pub fn XRRConfigRates (config: *mut XRRScreenConfiguration, sizeID: c_int, nrates: *mut c_int) -> *mut c_short, 24 pub fn XRRConfigRotations (config: *mut XRRScreenConfiguration, current_rotation: *mut Rotation) -> Rotation, 25 pub fn XRRConfigSizes (config: *mut XRRScreenConfiguration, nsizes: *mut c_int) -> *mut XRRScreenSize, 26 pub fn XRRConfigTimes (config: *mut XRRScreenConfiguration, config_timestamp: *mut Time) -> Time, 27 pub fn XRRConfigureOutputProperty (dpy: *mut Display, output: RROutput, property: Atom, pending: Bool, range: Bool, num_values: c_int, values: *mut c_long) -> (), 28 pub fn XRRConfigureProviderProperty (dpy: *mut Display, provider: RRProvider, property: Atom, pending: Bool, range: Bool, num_values: c_int, values: *mut c_long) -> (), 29 pub fn XRRCreateMode (dpy: *mut Display, window: Window, modeInfo: *mut XRRModeInfo) -> RRMode, 30 pub fn XRRDeleteMonitor (dpy: *mut Display, window: Window, name: Atom) -> (), 31 pub fn XRRDeleteOutputMode (dpy: *mut Display, output: RROutput, mode: RRMode) -> (), 32 pub fn XRRDeleteOutputProperty (dpy: *mut Display, output: RROutput, property: Atom) -> (), 33 pub fn XRRDeleteProviderProperty (dpy: *mut Display, provider: RRProvider, property: Atom) -> (), 34 pub fn XRRDestroyMode (dpy: *mut Display, mode: RRMode) -> (), 35 pub fn XRRFreeCrtcInfo (crtcInfo: *mut XRRCrtcInfo) -> (), 36 pub fn XRRFreeGamma (gamma: *mut XRRCrtcGamma) -> (), 37 pub fn XRRFreeModeInfo (modeInfo: *mut XRRModeInfo) -> (), 38 pub fn XRRFreeMonitors (monitors: *mut XRRMonitorInfo) -> (), 39 pub fn XRRFreeOutputInfo (outputInfo: *mut XRROutputInfo) -> (), 40 pub fn XRRFreePanning (panning: *mut XRRPanning) -> (), 41 pub fn XRRFreeProviderInfo (provider: *mut XRRProviderInfo) -> (), 42 pub fn XRRFreeProviderResources (resources: *mut XRRProviderResources) -> (), 43 pub fn XRRFreeScreenConfigInfo (config: *mut XRRScreenConfiguration) -> (), 44 pub fn XRRFreeScreenResources (resources: *mut XRRScreenResources) -> (), 45 pub fn XRRGetCrtcGamma (dpy: *mut Display, crtc: RRCrtc) -> *mut XRRCrtcGamma, 46 pub fn XRRGetCrtcGammaSize (dpy: *mut Display, crtc: RRCrtc) -> c_int, 47 pub fn XRRGetCrtcInfo (dpy: *mut Display, resources: *mut XRRScreenResources, crtc: RRCrtc) -> *mut XRRCrtcInfo, 48 pub fn XRRGetCrtcTransform (dpy: *mut Display, crtc: RRCrtc, attributes: *mut *mut XRRCrtcTransformAttributes) -> Status, 49 pub fn XRRGetMonitors (dpy: *mut Display, window: Window, get_active: Bool, nmonitors: *mut c_int) -> *mut XRRMonitorInfo, 50 pub fn XRRGetOutputInfo (dpy: *mut Display, resources: *mut XRRScreenResources, output: RROutput) -> *mut XRROutputInfo, 51 pub fn XRRGetOutputPrimary (dpy: *mut Display, window: Window) -> RROutput, 52 pub fn XRRGetOutputProperty (dpy: *mut Display, output: RROutput, property: Atom, offset: c_long, length: c_long, _delete: Bool, pending: Bool, req_type: Atom, actual_type: *mut Atom, actual_format: *mut c_int, nitems: *mut c_ulong, bytes_after: *mut c_ulong, prop: *mut *mut c_uchar) -> c_int, 53 pub fn XRRGetPanning (dpy: *mut Display, resources: *mut XRRScreenResources, crtc: RRCrtc) -> *mut XRRPanning, 54 pub fn XRRGetProviderInfo (dpy: *mut Display, resources: *mut XRRScreenResources, provider: RRProvider) -> *mut XRRProviderInfo, 55 pub fn XRRGetProviderProperty (dpy: *mut Display, provider: RRProvider, property: Atom, offset: c_long, length: c_long, _delete: Bool, pending: Bool, req_type: Atom, actual_type: *mut Atom, actual_format: *mut c_int, nitems: *mut c_ulong, bytes_after: *mut c_ulong, prop: *mut *mut c_uchar) -> c_int, 56 pub fn XRRGetProviderResources (dpy: *mut Display, window: Window) -> *mut XRRProviderResources, 57 pub fn XRRGetScreenInfo (dpy: *mut Display, window: Window) -> *mut XRRScreenConfiguration, 58 pub fn XRRGetScreenResources (dpy: *mut Display, window: Window) -> *mut XRRScreenResources, 59 pub fn XRRGetScreenResourcesCurrent (dpy: *mut Display, window: Window) -> *mut XRRScreenResources, 60 pub fn XRRGetScreenSizeRange (dpy: *mut Display, window: Window, minWidth: *mut c_int, minHeight: *mut c_int, maxWidth: *mut c_int, maxHeight: *mut c_int) -> Status, 61 pub fn XRRListOutputProperties (dpy: *mut Display, output: RROutput, nprop: *mut c_int) -> *mut Atom, 62 pub fn XRRListProviderProperties (dpy: *mut Display, provider: RRProvider, nprop: *mut c_int) -> *mut Atom, 63 pub fn XRRQueryExtension (dpy: *mut Display, event_base_return: *mut c_int, error_base_return: *mut c_int) -> Bool, 64 pub fn XRRQueryOutputProperty (dpy: *mut Display, output: RROutput, property: Atom) -> *mut XRRPropertyInfo, 65 pub fn XRRQueryProviderProperty (dpy: *mut Display, provider: RRProvider, property: Atom) -> *mut XRRPropertyInfo, 66 pub fn XRRQueryVersion (dpy: *mut Display, major_version_return: *mut c_int, minor_version_return: *mut c_int) -> Status, 67 pub fn XRRRates (dpy: *mut Display, screen: c_int, sizeID: c_int, nrates: *mut c_int) -> *mut c_short, 68 pub fn XRRRootToScreen (dpy: *mut Display, root: Window) -> c_int, 69 pub fn XRRRotations (dpy: *mut Display, screen: c_int, current_rotation: *mut Rotation) -> Rotation, 70 pub fn XRRSelectInput (dpy: *mut Display, window: Window, mask: c_int) -> (), 71 pub fn XRRSetCrtcConfig (dpy: *mut Display, resources: *mut XRRScreenResources, crtc: RRCrtc, timestamp: Time, x: c_int, y: c_int, mode: RRMode, rotation: Rotation, outputs: *mut RROutput, noutputs: c_int) -> Status, 72 pub fn XRRSetCrtcGamma (dpy: *mut Display, crtc: RRCrtc, gamma: *mut XRRCrtcGamma) -> (), 73 pub fn XRRSetCrtcTransform (dpy: *mut Display, crtc: RRCrtc, transform: *mut XTransform, filter: *const c_char, params: *mut XFixed, nparams: c_int) -> (), 74 pub fn XRRSetMonitor (dpy: *mut Display, window: Window, monitor: *mut XRRMonitorInfo) -> (), 75 pub fn XRRSetOutputPrimary (dpy: *mut Display, window: Window, output: RROutput) -> (), 76 pub fn XRRSetPanning (dpy: *mut Display, resources: *mut XRRScreenResources, crtc: RRCrtc, panning: *mut XRRPanning) -> Status, 77 pub fn XRRSetProviderOffloadSink (dpy: *mut Display, provider: XID, sink_provider: XID) -> c_int, 78 pub fn XRRSetProviderOutputSource (dpy: *mut Display, provider: XID, source_provider: XID) -> c_int, 79 pub fn XRRSetScreenConfig (dpy: *mut Display, config: *mut XRRScreenConfiguration, draw: Drawable, size_index: c_int, rotation: Rotation, timestamp: Time) -> Status, 80 pub fn XRRSetScreenConfigAndRate (dpy: *mut Display, config: *mut XRRScreenConfiguration, draw: Drawable, size_index: c_int, rotation: Rotation, rate: c_short, timestamp: Time) -> Status, 81 pub fn XRRSetScreenSize (dpy: *mut Display, window: Window, width: c_int, height: c_int, mmWidth: c_int, mmHeight: c_int) -> (), 82 pub fn XRRSizes (dpy: *mut Display, screen: c_int, nsizes: *mut c_int) -> *mut XRRScreenSize, 83 pub fn XRRTimes (dpy: *mut Display, screen: c_int, config_timestamp: *mut Time) -> Time, 84 pub fn XRRUpdateConfiguration (event: *mut XEvent) -> c_int, 85 variadic: 86 globals: 87 } 88 89 // 90 // types 91 // 92 93 pub type Connection = c_ushort; 94 pub type Rotation = c_ushort; 95 pub type SizeID = c_ushort; 96 pub type SubpixelOrder = c_ushort; 97 98 pub type RROutput = XID; 99 pub type RRCrtc = XID; 100 pub type RRMode = XID; 101 pub type RRProvider = XID; 102 103 #[derive(Debug, Clone, Copy, PartialEq)] 104 #[repr(C)] 105 pub struct XRRScreenSize { 106 pub width: c_int, 107 pub height: c_int, 108 pub mwidth: c_int, 109 pub mheight: c_int, 110 } 111 112 #[repr(C)] 113 pub struct XRRScreenConfiguration; 114 115 pub type XRRModeFlags = c_ulong; 116 117 #[derive(Debug, Clone, Copy, PartialEq)] 118 #[repr(C)] 119 pub struct XRRModeInfo { 120 pub id: RRMode, 121 pub width: c_uint, 122 pub height: c_uint, 123 pub dotClock: c_ulong, 124 pub hSyncStart: c_uint, 125 pub hSyncEnd: c_uint, 126 pub hTotal: c_uint, 127 pub hSkew: c_uint, 128 pub vSyncStart: c_uint, 129 pub vSyncEnd: c_uint, 130 pub vTotal: c_uint, 131 pub name: *mut c_char, 132 pub nameLength: c_uint, 133 pub modeFlags: XRRModeFlags, 134 } 135 136 #[derive(Debug, Clone, Copy, PartialEq)] 137 #[repr(C)] 138 pub struct XRRScreenResources { 139 pub timestamp: Time, 140 pub configTimestamp: Time, 141 pub ncrtc: c_int, 142 pub crtcs: *mut RRCrtc, 143 pub noutput: c_int, 144 pub outputs: *mut RROutput, 145 pub nmode: c_int, 146 pub modes: *mut XRRModeInfo, 147 } 148 149 #[derive(Debug, Clone, Copy, PartialEq)] 150 #[repr(C)] 151 pub struct XRROutputInfo { 152 pub timestamp: Time, 153 pub crtc: RRCrtc, 154 pub name: *mut c_char, 155 pub nameLen: c_int, 156 pub mm_width: c_ulong, 157 pub mm_height: c_ulong, 158 pub connection: Connection, 159 pub subpixel_order: SubpixelOrder, 160 pub ncrtc: c_int, 161 pub crtcs: *mut RRCrtc, 162 pub nclone: c_int, 163 pub clones: *mut RROutput, 164 pub nmode: c_int, 165 pub npreferred: c_int, 166 pub modes: *mut RRMode, 167 } 168 169 #[derive(Debug, Clone, Copy, PartialEq)] 170 #[repr(C)] 171 pub struct XRRPropertyInfo { 172 pub pending: Bool, 173 pub range: Bool, 174 pub immutable: Bool, 175 pub num_values: c_int, 176 pub values: *mut c_long, 177 } 178 179 #[derive(Debug, Clone, Copy, PartialEq)] 180 #[repr(C)] 181 pub struct XRRCrtcInfo { 182 pub timestamp: Time, 183 pub x: c_int, 184 pub y: c_int, 185 pub width: c_uint, 186 pub height: c_uint, 187 pub mode: RRMode, 188 pub rotation: Rotation, 189 pub noutput: c_int, 190 pub outputs: *mut RROutput, 191 pub rotations: Rotation, 192 pub npossible: c_int, 193 pub possible: *mut RROutput, 194 } 195 196 #[derive(Debug, Clone, Copy, PartialEq)] 197 #[repr(C)] 198 pub struct XRRCrtcGamma { 199 pub size: c_int, 200 pub red: *mut c_ushort, 201 pub green: *mut c_ushort, 202 pub blue: *mut c_ushort, 203 } 204 205 #[derive(Debug, Clone, Copy, PartialEq)] 206 #[repr(C)] 207 pub struct XRRCrtcTransformAttributes { 208 pub pendingTransform: XTransform, 209 pub pendingFilter: *mut c_char, 210 pub pendingNparams: c_int, 211 pub pendingParams: *mut XFixed, 212 pub currentTransform: XTransform, 213 pub currentFilter: *mut c_char, 214 pub currentNparams: c_int, 215 pub currentParams: *mut XFixed, 216 } 217 218 #[derive(Debug, Clone, Copy, PartialEq)] 219 #[repr(C)] 220 pub struct XRRPanning { 221 pub timestamp: Time, 222 pub left: c_uint, 223 pub top: c_uint, 224 pub width: c_uint, 225 pub height: c_uint, 226 pub track_left: c_uint, 227 pub track_top: c_uint, 228 pub track_width: c_uint, 229 pub track_height: c_uint, 230 pub border_left: c_int, 231 pub border_top: c_int, 232 pub border_right: c_int, 233 pub border_bottom: c_int, 234 } 235 236 #[derive(Debug, Clone, Copy, PartialEq)] 237 #[repr(C)] 238 pub struct XRRProviderResources { 239 pub timestamp: Time, 240 pub nproviders: c_int, 241 pub providers: *mut RRProvider, 242 } 243 244 #[derive(Debug, Clone, Copy, PartialEq)] 245 #[repr(C)] 246 pub struct XRRProviderInfo { 247 pub capabilities: c_uint, 248 pub ncrtcs: c_int, 249 pub crtcs: *mut RRCrtc, 250 pub noutputs: c_int, 251 pub outputs: *mut RROutput, 252 pub name: *mut c_char, 253 pub nassociatedproviders: c_int, 254 pub associated_providers: *mut RRProvider, 255 pub associated_capability: *mut c_uint, 256 pub nameLen: c_int, 257 } 258 259 #[derive(Debug, Clone, Copy, PartialEq)] 260 #[repr(C)] 261 pub struct XRRMonitorInfo { 262 pub name: Atom, 263 pub primary: Bool, 264 pub automatic: Bool, 265 pub noutput: c_int, 266 pub x: c_int, 267 pub y: c_int, 268 pub width: c_int, 269 pub height: c_int, 270 pub mwidth: c_int, 271 pub mheight: c_int, 272 pub outputs: *mut RROutput, 273 } 274 275 // 276 // event structures 277 // 278 279 #[derive(Debug, Clone, Copy, PartialEq)] 280 #[repr(C)] 281 pub struct XRRScreenChangeNotifyEvent { 282 pub type_: c_int, 283 pub serial: c_ulong, 284 pub send_event: Bool, 285 pub display: *mut Display, 286 pub window: Window, 287 pub root: Window, 288 pub timestamp: Time, 289 pub config_timestamp: Time, 290 pub size_index: SizeID, 291 pub subpixel_order: SubpixelOrder, 292 pub rotation: Rotation, 293 pub width: c_int, 294 pub height: c_int, 295 pub mwidth: c_int, 296 pub mheight: c_int, 297 } 298 299 #[derive(Debug, Clone, Copy, PartialEq)] 300 #[repr(C)] 301 pub struct XRRNotifyEvent { 302 pub type_: c_int, 303 pub serial: c_ulong, 304 pub send_event: Bool, 305 pub display: *mut Display, 306 pub window: Window, 307 pub subtype: c_int, 308 } 309 310 #[derive(Debug, Clone, Copy, PartialEq)] 311 #[repr(C)] 312 pub struct XRROutputChangeNotifyEvent { 313 pub type_: c_int, 314 pub serial: c_ulong, 315 pub send_event: Bool, 316 pub display: *mut Display, 317 pub window: Window, 318 pub subtype: c_int, 319 pub output: RROutput, 320 pub crtc: RRCrtc, 321 pub mode: RRMode, 322 pub rotation: Rotation, 323 pub connection: Connection, 324 pub subpixel_order: SubpixelOrder, 325 } 326 327 #[derive(Debug, Clone, Copy, PartialEq)] 328 #[repr(C)] 329 pub struct XRRCrtcChangeNotifyEvent { 330 pub type_: c_int, 331 pub serial: c_ulong, 332 pub send_event: Bool, 333 pub display: *mut Display, 334 pub window: Window, 335 pub subtype: c_int, 336 pub crtc: RRCrtc, 337 pub mode: RRMode, 338 pub rotation: Rotation, 339 pub x: c_int, 340 pub y: c_int, 341 pub width: c_uint, 342 pub height: c_uint, 343 } 344 345 #[derive(Debug, Clone, Copy, PartialEq)] 346 #[repr(C)] 347 pub struct XRROutputPropertyNotifyEvent { 348 pub type_: c_int, 349 pub serial: c_ulong, 350 pub send_event: Bool, 351 pub display: *mut Display, 352 pub window: Window, 353 pub subtype: c_int, 354 pub output: RROutput, 355 pub property: Atom, 356 pub timestamp: Time, 357 pub state: c_int, 358 } 359 360 #[derive(Debug, Clone, Copy, PartialEq)] 361 #[repr(C)] 362 pub struct XRRProviderChangeNotifyEvent { 363 pub type_: c_int, 364 pub serial: c_ulong, 365 pub send_event: Bool, 366 pub display: *mut Display, 367 pub window: Window, 368 pub subtype: c_int, 369 pub provider: RRProvider, 370 pub timestamp: Time, 371 pub current_role: c_uint, 372 } 373 374 #[derive(Debug, Clone, Copy, PartialEq)] 375 #[repr(C)] 376 pub struct XRRProviderPropertyNotifyEvent { 377 pub type_: c_int, 378 pub serial: c_ulong, 379 pub send_event: Bool, 380 pub display: *mut Display, 381 pub window: Window, 382 pub subtype: c_int, 383 pub provider: RRProvider, 384 pub property: Atom, 385 pub timestamp: Time, 386 pub state: c_int, 387 } 388 389 #[derive(Debug, Clone, Copy, PartialEq)] 390 #[repr(C)] 391 pub struct XRRResourceChangeNotifyEvent { 392 pub type_: c_int, 393 pub serial: c_ulong, 394 pub send_event: Bool, 395 pub display: *mut Display, 396 pub window: Window, 397 pub subtype: c_int, 398 pub timestamp: Time, 399 } 400 401 event_conversions_and_tests! { 402 xrr_screen_change_notify: XRRScreenChangeNotifyEvent, 403 xrr_notify: XRRNotifyEvent, 404 xrr_output_change_notify: XRROutputChangeNotifyEvent, 405 xrr_crtc_change_notify: XRRCrtcChangeNotifyEvent, 406 xrr_output_property_notify: XRROutputPropertyNotifyEvent, 407 xrr_provider_change_notify: XRRProviderChangeNotifyEvent, 408 xrr_provider_property_notify: XRRProviderPropertyNotifyEvent, 409 xrr_resource_change_notify: XRRResourceChangeNotifyEvent, 410 } 411 412 // 413 // constants 414 // 415 416 pub const RANDR_NAME: &str = "RANDR"; 417 pub const RANDR_MAJOR: c_int = 1; 418 pub const RANDR_MINOR: c_int = 5; 419 420 pub const RRNumberErrors: c_int = 4; 421 pub const RRNumberEvents: c_int = 2; 422 pub const RRNumberRequests: c_int = 45; 423 424 pub const X_RRQueryVersion: c_int = 0; 425 pub const X_RROldGetScreenInfo: c_int = 1; 426 pub const X_RRSetScreenConfig: c_int = 2; 427 pub const X_RROldScreenChangeSelectInput: c_int = 3; 428 pub const X_RRSelectInput: c_int = 4; 429 pub const X_RRGetScreenInfo: c_int = 5; 430 431 pub const X_RRGetScreenSizeRange: c_int = 6; 432 pub const X_RRSetScreenSize: c_int = 7; 433 pub const X_RRGetScreenResources: c_int = 8; 434 pub const X_RRGetOutputInfo: c_int = 9; 435 pub const X_RRListOutputProperties: c_int = 10; 436 pub const X_RRQueryOutputProperty: c_int = 11; 437 pub const X_RRConfigureOutputProperty: c_int = 12; 438 pub const X_RRChangeOutputProperty: c_int = 13; 439 pub const X_RRDeleteOutputProperty: c_int = 14; 440 pub const X_RRGetOutputProperty: c_int = 15; 441 pub const X_RRCreateMode: c_int = 16; 442 pub const X_RRDestroyMode: c_int = 17; 443 pub const X_RRAddOutputMode: c_int = 18; 444 pub const X_RRDeleteOutputMode: c_int = 19; 445 pub const X_RRGetCrtcInfo: c_int = 20; 446 pub const X_RRSetCrtcConfig: c_int = 21; 447 pub const X_RRGetCrtcGammaSize: c_int = 22; 448 pub const X_RRGetCrtcGamma: c_int = 23; 449 pub const X_RRSetCrtcGamma: c_int = 24; 450 451 pub const X_RRGetScreenResourcesCurrent: c_int = 25; 452 pub const X_RRSetCrtcTransform: c_int = 26; 453 pub const X_RRGetCrtcTransform: c_int = 27; 454 pub const X_RRGetPanning: c_int = 28; 455 pub const X_RRSetPanning: c_int = 29; 456 pub const X_RRSetOutputPrimary: c_int = 30; 457 pub const X_RRGetOutputPrimary: c_int = 31; 458 459 pub const X_RRGetProviders: c_int = 32; 460 pub const X_RRGetProviderInfo: c_int = 33; 461 pub const X_RRSetProviderOffloadSink: c_int = 34; 462 pub const X_RRSetProviderOutputSource: c_int = 35; 463 pub const X_RRListProviderProperties: c_int = 36; 464 pub const X_RRQueryProviderProperty: c_int = 37; 465 pub const X_RRConfigureProviderProperty: c_int = 38; 466 pub const X_RRChangeProviderProperty: c_int = 39; 467 pub const X_RRDeleteProviderProperty: c_int = 40; 468 pub const X_RRGetProviderProperty: c_int = 41; 469 470 pub const X_RRGetMonitors: c_int = 42; 471 pub const X_RRSetMonitor: c_int = 43; 472 pub const X_RRDeleteMonitor: c_int = 44; 473 474 pub const RRTransformUnit: c_int = 1 << 0; 475 pub const RRTransformScaleUp: c_int = 1 << 1; 476 pub const RRTransformScaleDown: c_int = 1 << 2; 477 pub const RRTransformProjective: c_int = 1 << 3; 478 479 pub const RRScreenChangeNotifyMask: c_int = 1 << 0; 480 pub const RRCrtcChangeNotifyMask: c_int = 1 << 1; 481 pub const RROutputChangeNotifyMask: c_int = 1 << 2; 482 pub const RROutputPropertyNotifyMask: c_int = 1 << 3; 483 pub const RRProviderChangeNotifyMask: c_int = 1 << 4; 484 pub const RRProviderPropertyNotifyMask: c_int = 1 << 5; 485 pub const RRResourceChangeNotifyMask: c_int = 1 << 6; 486 487 pub const RRScreenChangeNotify: c_int = 0; 488 pub const RRNotify: c_int = 1; 489 pub const RRNotify_CrtcChange: c_int = 0; 490 pub const RRNotify_OutputChange: c_int = 1; 491 pub const RRNotify_OutputProperty: c_int = 2; 492 pub const RRNotify_ProviderChange: c_int = 3; 493 pub const RRNotify_ProviderProperty: c_int = 4; 494 pub const RRNotify_ResourceChange: c_int = 5; 495 496 pub const RR_Rotate_0: c_int = 1; 497 pub const RR_Rotate_90: c_int = 2; 498 pub const RR_Rotate_180: c_int = 4; 499 pub const RR_Rotate_270: c_int = 8; 500 501 pub const RR_Reflect_X: c_int = 16; 502 pub const RR_Reflect_Y: c_int = 32; 503 504 pub const RRSetConfigSuccess: c_int = 0; 505 pub const RRSetConfigInvalidConfigTime: c_int = 1; 506 pub const RRSetConfigInvalidTime: c_int = 2; 507 pub const RRSetConfigFailed: c_int = 3; 508 509 pub const RR_HSyncPositive: c_int = 0x00000001; 510 pub const RR_HSyncNegative: c_int = 0x00000002; 511 pub const RR_VSyncPositive: c_int = 0x00000004; 512 pub const RR_VSyncNegative: c_int = 0x00000008; 513 pub const RR_Interlace: c_int = 0x00000010; 514 pub const RR_DoubleScan: c_int = 0x00000020; 515 pub const RR_CSync: c_int = 0x00000040; 516 pub const RR_CSyncPositive: c_int = 0x00000080; 517 pub const RR_CSyncNegative: c_int = 0x00000100; 518 pub const RR_HSkewPresent: c_int = 0x00000200; 519 pub const RR_BCast: c_int = 0x00000400; 520 pub const RR_PixelMultiplex: c_int = 0x00000800; 521 pub const RR_DoubleClock: c_int = 0x00001000; 522 pub const RR_ClockDivideBy2: c_int = 0x00002000; 523 524 pub const RR_Connected: c_int = 0; 525 pub const RR_Disconnected: c_int = 1; 526 pub const RR_UnknownConnection: c_int = 2; 527 528 pub const BadRROutput: c_int = 0; 529 pub const BadRRCrtc: c_int = 1; 530 pub const BadRRMode: c_int = 2; 531 pub const BadRRProvider: c_int = 3; 532 533 pub const RR_PROPERTY_BACKLIGHT: &str = "Backlight"; 534 pub const RR_PROPERTY_RANDR_EDID: &str = "EDID"; 535 pub const RR_PROPERTY_SIGNAL_FORMAT: &str = "SignalFormat"; 536 pub const RR_PROPERTY_SIGNAL_PROPERTIES: &str = "SignalProperties"; 537 pub const RR_PROPERTY_CONNECTOR_TYPE: &str = "ConnectorType"; 538 pub const RR_PROPERTY_CONNECTOR_NUMBER: &str = "ConnectorNumber"; 539 pub const RR_PROPERTY_COMPATIBILITY_LIST: &str = "CompatibilityList"; 540 pub const RR_PROPERTY_CLONE_LIST: &str = "CloneList"; 541 pub const RR_PROPERTY_BORDER: &str = "Border"; 542 pub const RR_PROPERTY_BORDER_DIMENSIONS: &str = "BorderDimensions"; 543 pub const RR_PROPERTY_GUID: &str = "GUID"; 544 pub const RR_PROPERTY_RANDR_TILE: &str = "TILE"; 545 546 pub const RR_Capability_None: c_int = 0; 547 pub const RR_Capability_SourceOutput: c_int = 1; 548 pub const RR_Capability_SinkOutput: c_int = 2; 549 pub const RR_Capability_SourceOffload: c_int = 4; 550 pub const RR_Capability_SinkOffload: c_int = 8; 551