libpulse_sys/context/
mod.rs1pub mod ext_device_manager;
19pub mod ext_device_restore;
20pub mod ext_stream_restore;
21pub mod introspect;
22pub mod scache;
23pub mod subscribe;
24
25pub use self::ext_device_manager::*;
27pub use self::ext_device_restore::*;
28pub use self::ext_stream_restore::*;
29pub use self::introspect::*;
30pub use self::scache::*;
31pub use self::subscribe::*;
32
33use std::os::raw::{c_char, c_void};
34use num_derive::{FromPrimitive, ToPrimitive};
35use crate::mainloop::api::{pa_time_event, pa_time_event_cb_t, pa_mainloop_api};
36use crate::{operation::pa_operation, def::pa_spawn_api};
37use crate::proplist::{pa_proplist, pa_update_mode_t};
38use crate::sample::{pa_usec_t, pa_sample_spec};
39
40#[repr(C)] pub struct pa_context { _private: [u8; 0] }
42
43#[repr(C)]
44#[derive(Debug, Copy, Clone, PartialEq, Eq)]
45#[derive(FromPrimitive, ToPrimitive)]
46pub enum pa_context_state_t {
47 Unconnected,
48 Connecting,
49 Authorizing,
50 SettingName,
51 Ready,
52 Failed,
53 Terminated,
54}
55
56pub const PA_CONTEXT_UNCONNECTED: pa_context_state_t = pa_context_state_t::Unconnected;
57pub const PA_CONTEXT_CONNECTING: pa_context_state_t = pa_context_state_t::Connecting;
58pub const PA_CONTEXT_AUTHORIZING: pa_context_state_t = pa_context_state_t::Authorizing;
59pub const PA_CONTEXT_SETTING_NAME: pa_context_state_t = pa_context_state_t::SettingName;
60pub const PA_CONTEXT_READY: pa_context_state_t = pa_context_state_t::Ready;
61pub const PA_CONTEXT_FAILED: pa_context_state_t = pa_context_state_t::Failed;
62pub const PA_CONTEXT_TERMINATED: pa_context_state_t = pa_context_state_t::Terminated;
63
64#[inline(always)]
66pub fn pa_context_is_good(state: pa_context_state_t) -> bool {
67 state == pa_context_state_t::Connecting
68 || state == pa_context_state_t::Authorizing
69 || state == pa_context_state_t::SettingName
70 || state == pa_context_state_t::Ready
71}
72
73pub type pa_context_flags_t = u32;
74
75pub use self::flags::*;
76
77mod flags {
79 use super::pa_context_flags_t;
80
81 pub const PA_CONTEXT_NOFLAGS: pa_context_flags_t = 0x0;
82 pub const PA_CONTEXT_NOAUTOSPAWN: pa_context_flags_t = 0x1;
83 pub const PA_CONTEXT_NOFAIL: pa_context_flags_t = 0x2;
84}
85
86pub type pa_context_notify_cb_t = Option<extern "C" fn(c: *mut pa_context, userdata: *mut c_void)>;
87
88#[rustfmt::skip]
89pub type pa_context_success_cb_t = Option<extern "C" fn(c: *mut pa_context, success: i32, userdata: *mut c_void)>;
90
91#[rustfmt::skip]
92pub type pa_context_event_cb_t = Option<extern "C" fn(c: *mut pa_context, name: *const c_char, p: *mut pa_proplist, userdata: *mut c_void)>;
93
94#[rustfmt::skip]
95#[link(name = "pulse")]
96extern "C" {
97 pub fn pa_context_new(mainloop: *const pa_mainloop_api, name: *const c_char) -> *mut pa_context;
98 pub fn pa_context_new_with_proplist(mainloop: *const pa_mainloop_api, name: *const c_char, proplist: *const pa_proplist) -> *mut pa_context;
99 pub fn pa_context_unref(c: *mut pa_context);
100 pub fn pa_context_ref(c: *mut pa_context) -> *mut pa_context;
101 pub fn pa_context_set_state_callback(c: *mut pa_context, cb: pa_context_notify_cb_t, userdata: *mut c_void);
102 pub fn pa_context_set_event_callback(p: *mut pa_context, cb: pa_context_event_cb_t, userdata: *mut c_void);
103 pub fn pa_context_errno(c: *const pa_context) -> i32;
104 pub fn pa_context_is_pending(c: *const pa_context) -> i32;
105 pub fn pa_context_get_state(c: *const pa_context) -> pa_context_state_t;
106 pub fn pa_context_connect(c: *mut pa_context, server: *const c_char, flags: pa_context_flags_t, api: *const pa_spawn_api) -> i32;
107 pub fn pa_context_disconnect(c: *mut pa_context);
108 pub fn pa_context_drain(c: *mut pa_context, cb: pa_context_notify_cb_t, userdata: *mut c_void) -> *mut pa_operation;
109 pub fn pa_context_exit_daemon(c: *mut pa_context, cb: pa_context_success_cb_t, userdata: *mut c_void) -> *mut pa_operation;
110 pub fn pa_context_set_default_sink(c: *mut pa_context, name: *const c_char, cb: pa_context_success_cb_t, userdata: *mut c_void) -> *mut pa_operation;
111 pub fn pa_context_set_default_source(c: *mut pa_context, name: *const c_char, cb: pa_context_success_cb_t, userdata: *mut c_void) -> *mut pa_operation;
112 pub fn pa_context_is_local(c: *const pa_context) -> i32;
113 pub fn pa_context_set_name(c: *mut pa_context, name: *const c_char, cb: pa_context_success_cb_t, userdata: *mut c_void) -> *mut pa_operation;
114 pub fn pa_context_get_server(c: *const pa_context) -> *const c_char;
115 pub fn pa_context_get_protocol_version(c: *const pa_context) -> u32;
116 pub fn pa_context_get_server_protocol_version(c: *const pa_context) -> u32;
117 pub fn pa_context_proplist_update(c: *mut pa_context, mode: pa_update_mode_t, p: *const pa_proplist, cb: pa_context_success_cb_t, userdata: *mut c_void) -> *mut pa_operation;
118 pub fn pa_context_proplist_remove(c: *mut pa_context, keys: *const *const c_char, cb: pa_context_success_cb_t, userdata: *mut c_void) -> *mut pa_operation;
119 pub fn pa_context_get_index(s: *const pa_context) -> u32;
120 pub fn pa_context_rttime_new(c: *const pa_context, usec: pa_usec_t, cb: pa_time_event_cb_t, userdata: *mut c_void) -> *mut pa_time_event;
121 pub fn pa_context_rttime_restart(c: *const pa_context, e: *mut pa_time_event, usec: pa_usec_t);
122 pub fn pa_context_get_tile_size(c: *const pa_context, ss: *const pa_sample_spec) -> usize;
123 pub fn pa_context_load_cookie_from_file(c: *mut pa_context, cookie_file_path: *const c_char) -> i32;
124}