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_int, c_uint, c_ulong };
6 
7 use xlib::{ Atom, Bool, Display, Drawable, Status, Time, Visual, XEvent, XID, XSetWindowAttributes, Window };
8 
9 
10 //
11 // functions
12 //
13 
14 
15 x11_link! { Xss, xscrnsaver, ["libXss.so.2", "libXss.so"], 11,
16   pub fn XScreenSaverQueryExtension (_1: *mut Display, _2: *mut c_int, _3: *mut c_int) -> Bool,
17   pub fn XScreenSaverQueryVersion (_1: *mut Display, _2: *mut c_int, _3: *mut c_int) -> Status,
18   pub fn XScreenSaverAllocInfo () -> *mut XScreenSaverInfo,
19   pub fn XScreenSaverQueryInfo (_1: *mut Display, _2: Drawable, _3: *mut XScreenSaverInfo) -> Status,
20   pub fn XScreenSaverSelectInput (_1: *mut Display, _2: Drawable, _3: c_ulong) -> (),
21   pub fn XScreenSaverSetAttributes (_1: *mut Display, _2: Drawable, _3: c_int, _4: c_int, _5: c_uint, _6: c_uint, _7: c_uint, _8: c_int, _9: c_uint, _10: *mut Visual, _11: c_ulong, _12: *mut XSetWindowAttributes) -> (),
22   pub fn XScreenSaverUnsetAttributes (_1: *mut Display, _2: Drawable) -> (),
23   pub fn XScreenSaverRegister (_1: *mut Display, _2: c_int, _3: XID, _4: Atom) -> Status,
24   pub fn XScreenSaverUnregister (_1: *mut Display, _2: c_int) -> Status,
25   pub fn XScreenSaverGetRegistered (_1: *mut Display, _2: c_int, _3: *mut XID, _4: *mut Atom) -> Status,
26   pub fn XScreenSaverSuspend (_1: *mut Display, _2: Bool) -> (),
27 variadic:
28 globals:
29 }
30 
31 
32 //
33 // types
34 //
35 
36 
37 #[derive(Debug, Clone, Copy, PartialEq)]
38 #[repr(C)]
39 pub struct XScreenSaverInfo {
40   pub window: Window,
41   pub state: c_int,
42   pub kind: c_int,
43   pub til_or_since: c_ulong,
44   pub idle: c_ulong,
45   pub eventMask: c_ulong,
46 }
47 
48 
49 //
50 // event structures
51 //
52 
53 
54 #[derive(Debug, Clone, Copy, PartialEq)]
55 #[repr(C)]
56 pub struct XScreenSaverNotifyEvent {
57   pub type_: c_int,
58   pub serial: c_ulong,
59   pub send_event: Bool,
60   pub display: *mut Display,
61   pub window: Window,
62   pub root: Window,
63   pub state: c_int,
64   pub kind: c_int,
65   pub forced: Bool,
66   pub time: Time,
67 }
68 
69 event_conversions_and_tests! {
70   xss_notify: XScreenSaverNotifyEvent,
71 }
72 
73 
74 //
75 // constants
76 //
77 
78 
79 pub const ScreenSaverName: &'static str = "MIT-SCREEN-SAVER";
80 pub const ScreenSaverPropertyName: &'static str = "_MIT_SCREEN_SAVER_ID";
81 
82 pub const ScreenSaverNotifyMask: c_ulong = 0x00000001;
83 pub const ScreenSaverCycleMask: c_ulong = 0x00000002;
84 
85 pub const ScreenSaverMajorVersion: c_int = 1;
86 pub const ScreenSaverMinorVersion: c_int = 1;
87 
88 pub const ScreenSaverOff: c_int = 0;
89 pub const ScreenSaverOn: c_int = 1;
90 pub const ScreenSaverCycle: c_int = 2;
91 pub const ScreenSaverDisabled: c_int = 3;
92 
93 pub const ScreenSaverBlanked: c_int = 0;
94 pub const ScreenSaverInternal: c_int = 1;
95 pub const ScreenSaverExternal: c_int = 2;
96 
97 pub const ScreenSaverNotify: c_int = 0;
98 pub const ScreenSaverNumberEvents: c_int = 1;
99