From 4e40c1c8afb64c714fdfc80704038cc69b176e69 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 21 Aug 2017 20:19:58 -0600 Subject: [PATCH] Add method for resizing display --- Cargo.lock | 1 + bgad/Cargo.toml | 1 + bgad/src/main.rs | 6 +++++- bgad/src/scheme.rs | 14 ++++++++++++-- 4 files changed, 19 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index b6bea8a05f..c6f29da420 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -63,6 +63,7 @@ dependencies = [ name = "bgad" version = "0.1.0" dependencies = [ + "orbclient 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", "redox_syscall 0.1.30 (registry+https://github.com/rust-lang/crates.io-index)", ] diff --git a/bgad/Cargo.toml b/bgad/Cargo.toml index 9a28ece41e..289f65cd54 100644 --- a/bgad/Cargo.toml +++ b/bgad/Cargo.toml @@ -3,4 +3,5 @@ name = "bgad" version = "0.1.0" [dependencies] +orbclient = "0.3" redox_syscall = "0.1" diff --git a/bgad/src/main.rs b/bgad/src/main.rs index 699c09eb63..e5ee67d723 100644 --- a/bgad/src/main.rs +++ b/bgad/src/main.rs @@ -1,5 +1,6 @@ #![deny(warnings)] +extern crate orbclient; extern crate syscall; use std::env; @@ -35,7 +36,10 @@ fn main() { let mut bga = Bga::new(); print!("{}", format!(" - BGA {}x{}\n", bga.width(), bga.height())); - let mut scheme = BgaScheme { bga: bga }; + let mut scheme = BgaScheme { + bga: bga, + display: File::open("display:input").ok() + }; loop { let mut packet = Packet::default(); socket.read(&mut packet).expect("bgad: failed to read events from bga scheme"); diff --git a/bgad/src/scheme.rs b/bgad/src/scheme.rs index d87e1f06b5..e4ce64eced 100644 --- a/bgad/src/scheme.rs +++ b/bgad/src/scheme.rs @@ -1,12 +1,15 @@ +use orbclient; +use std::fs::File; +use std::io::Write; use std::str; - use syscall::{Error, Result, SchemeMut, EACCES, EINVAL, MODE_CHR}; use syscall::data::Stat; use bga::Bga; pub struct BgaScheme { - pub bga: Bga + pub bga: Bga, + pub display: Option, } impl SchemeMut for BgaScheme { @@ -56,6 +59,13 @@ impl SchemeMut for BgaScheme { self.bga.set_size(width, height); + if let Some(ref mut display) = self.display { + let _ = display.write(&orbclient::ResizeEvent { + width: width as u32, + height: height as u32, + }.to_event()); + } + Ok(buf.len()) }