diff --git a/src/console.rs b/src/console.rs index 78a88a2..3284d00 100644 --- a/src/console.rs +++ b/src/console.rs @@ -1,11 +1,9 @@ -use libctru::console::*; -use libctru::libc; +use std::default::Default; +use std::ptr; use gfx::Screen; -use std::fmt::{self, Write}; -use std::default::Default; -use std::ptr; +use libctru::console::*; pub struct Console { context: PrintConsole, @@ -13,8 +11,14 @@ pub struct Console { impl Console { pub fn init(screen: Screen) -> Self { - let ret = unsafe { *(consoleInit(screen.into(), ptr::null_mut())) }; - Console { context: ret } + unsafe { + let ret = *(consoleInit(screen.into(), ptr::null_mut())); + Console { context: ret } + } + } + + pub fn select(&mut self) { + unsafe { consoleSelect(&mut self.context); } } pub fn set_window(&mut self, x: i32, y: i32, width: i32, height: i32) { @@ -28,23 +32,6 @@ impl Console { impl Default for Console { fn default() -> Self { - let ret = unsafe { *(consoleInit(Screen::Top.into(), ptr::null_mut())) }; - Console { context: ret } - } -} - -impl Write for Console { - fn write_str(&mut self, s: &str) -> fmt::Result { - // Writing 0 bytes to the console fails - if s.is_empty() { - return Ok(()) - } - unsafe { consoleSelect(&mut self.context); } - let ret = unsafe { libc::write(libc::STDOUT_FILENO, s.as_ptr() as *const _, s.len()) }; - if ret == s.len() as isize { - Ok(()) - } else { - Err(fmt::Error) - } + Console::init(Screen::Top) } }