1use cubeb::{Context, Result};
2use std::env;
3use std::ffi::CString;
4use std::io::{self, Write};
5
6pub fn init<T: Into<Vec<u8>>>(ctx_name: T) -> Result<Context> {
7 let backend = match env::var("CUBEB_BACKEND") {
8 Ok(s) => Some(s),
9 Err(_) => None,
10 };
11
12 let ctx_name = CString::new(ctx_name).unwrap();
13 let ctx = Context::init(Some(ctx_name.as_c_str()), None);
14 if let Ok(ref ctx) = ctx {
15 if let Some(ref backend) = backend {
16 let ctx_backend = ctx.backend_id();
17 if backend != ctx_backend {
18 let stderr = io::stderr();
19 let mut handle = stderr.lock();
20
21 writeln!(
22 handle,
23 "Requested backend `{}', got `{}'",
24 backend, ctx_backend
25 )
26 .unwrap();
27 }
28 }
29 }
30
31 ctx
32}