Calculate window dimensions

This commit is contained in:
Kenny Levinsen
2019-08-04 14:23:16 +02:00
parent a4f661ffa7
commit 5cc4a6e740
+19 -2
View File
@@ -3,6 +3,7 @@ use std::io::{Read, Write};
use std::os::unix::io::AsRawFd;
use std::sync::mpsc::{channel, Sender};
use std::sync::{Arc, Mutex};
use std::cmp::max;
use nix::poll::{poll, PollFd, PollFlags};
use os_pipe::pipe;
@@ -149,7 +150,10 @@ impl App {
None
}
fn new(dimensions: (u32, u32), tx: Sender<bool>) -> App {
fn new(tx: Sender<bool>) -> App {
//
// Set up modules
//
let mut modules = vec![
Module::new(Box::new(Clock::new(tx.clone())), (0, 0, 720, 320)),
Module::new(Box::new(Calendar::new()), (0, 368, 1280, 344)),
@@ -172,6 +176,19 @@ impl App {
modules.push(Module::new(Box::new(m), (720, vert_off, 560, 32)));
}
//
// Calculate window dimensions
//
let mut dimensions = (0, 0);
for m in modules.iter() {
let b = m.get_bounds();
dimensions = (max(dimensions.0, b.0 + b.2), max(dimensions.1, b.1 + b.3));
}
// Add padding
dimensions = (dimensions.0 + 40, dimensions.1 + 40);
let cmd_queue = Arc::new(Mutex::new(VecDeque::new()));
let (display, mut event_queue) = Display::connect_to_env().unwrap();
@@ -412,7 +429,7 @@ fn main() {
let (mut rx_pipe, mut tx_pipe) = pipe().unwrap();
let (tx_draw, rx_draw) = channel();
let mut app = App::new((1320u32, 848u32), tx_draw);
let mut app = App::new(tx_draw);
let worker_queue = app.cmd_queue();
std::thread::spawn(move || loop {