use curses::Curses;
use general::*;
use std::sync::Mutex;
use window::Window;
lazy_static! {
static ref INITIALIZED: Mutex<bool> = Mutex::new(false);
}
pub(crate) fn end_window() -> Result<(), ()> {
let mut initialized = INITIALIZED.lock().unwrap();
if *initialized {
check(pancurses::endwin())?;
*initialized = false;
Ok(())
} else {
Err(())
}
}
pub fn initscr() -> Result<Curses, ()> {
{
let mut initialized = INITIALIZED.lock().unwrap();
if *initialized {
return Err(());
} else {
*initialized = true;
}
}
let w = pancurses::initscr();
Ok(Curses::new(Window::new(w)))
}