diff --git a/Cargo.lock b/Cargo.lock index bca65cb..a95228b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -36,6 +36,23 @@ dependencies = [ "num-traits", ] +[[package]] +name = "arc-swap" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5ab7d9e73059c86c36473f459b52adbd99c3554a4fec492caef460806006f00" + +[[package]] +name = "atty" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" +dependencies = [ + "hermit-abi", + "libc", + "winapi", +] + [[package]] name = "autocfg" version = "1.0.1" @@ -102,6 +119,19 @@ dependencies = [ "num-traits", ] +[[package]] +name = "chrono" +version = "0.4.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "670ad68c9088c2a963aaa298cb369688cf3f9465ce5e2d4ca10e6e0098a1ce73" +dependencies = [ + "libc", + "num-integer", + "num-traits", + "time", + "winapi", +] + [[package]] name = "cocoa" version = "0.24.0" @@ -329,6 +359,27 @@ dependencies = [ "syn", ] +[[package]] +name = "dirs-next" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1" +dependencies = [ + "cfg-if 1.0.0", + "dirs-sys-next", +] + +[[package]] +name = "dirs-sys-next" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" +dependencies = [ + "libc", + "redox_users", + "winapi", +] + [[package]] name = "dispatch" version = "0.2.0" @@ -408,6 +459,15 @@ dependencies = [ "xml-rs", ] +[[package]] +name = "hermit-abi" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" +dependencies = [ + "libc", +] + [[package]] name = "ident_case" version = "1.0.1" @@ -660,6 +720,16 @@ dependencies = [ "winapi", ] +[[package]] +name = "num-integer" +version = "0.1.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2cc698a63b549a70bc047073d2949cce27cd1c7b0a4a862d08a8031bc2801db" +dependencies = [ + "autocfg", + "num-traits", +] + [[package]] name = "num-traits" version = "0.2.14" @@ -853,6 +923,16 @@ dependencies = [ "bitflags", ] +[[package]] +name = "redox_users" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "528532f3d801c87aec9def2add9ca802fe569e44a544afe633765267840abe64" +dependencies = [ + "getrandom", + "redox_syscall", +] + [[package]] name = "remove_dir_all" version = "0.5.3" @@ -872,6 +952,12 @@ dependencies = [ "owned_ttf_parser", ] +[[package]] +name = "rustversion" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61b3909d758bb75c79f23d4736fac9433868679d3ad2ea7a61e3c25cfda9a088" + [[package]] name = "same-file" version = "1.0.6" @@ -911,6 +997,53 @@ version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8347046d4ebd943127157b94d63abb990fcf729dc4e9978927fdf4ac3c998d06" +[[package]] +name = "slog-async" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "766c59b252e62a34651412870ff55d8c4e6d04df19b43eecb2703e417b097ffe" +dependencies = [ + "crossbeam-channel", + "slog", + "take_mut", + "thread_local", +] + +[[package]] +name = "slog-scope" +version = "4.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f95a4b4c3274cd2869549da82b57ccc930859bdbf5bcea0424bc5f140b3c786" +dependencies = [ + "arc-swap", + "lazy_static", + "slog", +] + +[[package]] +name = "slog-stdlog" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8228ab7302adbf4fcb37e66f3cda78003feb521e7fd9e3847ec117a7784d0f5a" +dependencies = [ + "log", + "slog", + "slog-scope", +] + +[[package]] +name = "slog-term" +version = "2.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95c1e7e5aab61ced6006149ea772770b84a0d16ce0f7885def313e4829946d76" +dependencies = [ + "atty", + "chrono", + "slog", + "term", + "thread_local", +] + [[package]] name = "smallvec" version = "1.6.1" @@ -983,6 +1116,12 @@ dependencies = [ "unicode-xid", ] +[[package]] +name = "take_mut" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f764005d11ee5f36500a149ace24e00e3da98b0158b3e2d53a7495660d3f4d60" + [[package]] name = "tempfile" version = "3.2.0" @@ -997,6 +1136,17 @@ dependencies = [ "winapi", ] +[[package]] +name = "term" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c59df8ac95d96ff9bede18eb7300b0fda5e5d8d90960e76f8e14ae765eedbf1f" +dependencies = [ + "dirs-next", + "rustversion", + "winapi", +] + [[package]] name = "thiserror" version = "1.0.26" @@ -1017,13 +1167,37 @@ dependencies = [ "syn", ] +[[package]] +name = "thread_local" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8018d24e04c95ac8790716a5987d0fec4f8b27249ffa0f7d33f1369bdfb88cbd" +dependencies = [ + "once_cell", +] + [[package]] name = "tilers" version = "0.1.0" dependencies = [ + "slog", + "slog-async", + "slog-scope", + "slog-stdlog", + "slog-term", "smithay", ] +[[package]] +name = "time" +version = "0.1.43" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca8a50ef2360fbd1eeb0ecd46795a87a19024eb4b53c5dc916ca1fd95fe62438" +dependencies = [ + "libc", + "winapi", +] + [[package]] name = "toml" version = "0.5.8" diff --git a/Cargo.toml b/Cargo.toml index d4bf864..4ca92a1 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -3,6 +3,13 @@ name = "tilers" version = "0.1.0" edition = "2018" +[dependencies] +slog = "2.1.1" +slog-term = "2.8" +slog-async = "2.2" +slog-stdlog = "4.1.0" +slog-scope = "4.4.0" + [dependencies.smithay] version = "0.3.0" default-features = false diff --git a/src/main.rs b/src/main.rs index 3c48a0d..80d78c6 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,7 +1,16 @@ pub const OUTPUT_NAME: &str = "winit"; + +use slog::*; use std::{cell::RefCell, rc::Rc}; -use smithay::{backend::{renderer::{ImportDma, ImportEgl}, winit}, reexports::wayland_server::Display, wayland::{dmabuf::init_dmabuf_global, output::Mode}}; +use smithay::{ + backend::{ + renderer::{ImportDma, ImportEgl}, + winit, + }, + reexports::{calloop::EventLoop, wayland_server::Display}, + wayland::{dmabuf::init_dmabuf_global, output::Mode}, +}; mod state; use crate::state::*; @@ -16,19 +25,25 @@ impl Backend for WinitData { } } - fn main() { - println!("Hello, world!"); + let log = slog::Logger::root( + slog_async::Async::default(slog_term::term_full().fuse()).fuse(), + o!(), + ); + let _guard = slog_scope::set_global_logger(log.clone()); + slog_stdlog::init().expect("Could not setup log backend"); + run_winit(log) } #[cfg(feature = "winit")] -fn run_winit() { - let mut event_loop = smithay::reexports::calloop::EventLoop::try_new().unwrap(); +fn run_winit(log: Logger) { + + let mut event_loop = EventLoop::try_new().unwrap(); let display = Rc::new(RefCell::new(Display::new())); - let (renderer, mut input) = match winit::init(None) { + let (renderer, mut input) = match winit::init(log.clone()) { Ok(ret) => ret, - Err(_) => return + Err(_) => return, }; let renderer = Rc::new(RefCell::new(renderer)); @@ -36,8 +51,10 @@ fn run_winit() { if renderer .borrow_mut() .renderer() - .bind_wl_display(&display.borrow()).is_ok() { - dbg!("EGL hardware-acceleration enabled"); + .bind_wl_display(&display.borrow()) + .is_ok() + { + info!(log, "EGL hardware-acceleration enabled"); let dmabuf_formats = renderer .borrow_mut() .renderer() @@ -48,19 +65,27 @@ fn run_winit() { init_dmabuf_global( &mut *display.borrow_mut(), dmabuf_formats, - move |buffer, _| renderer.borrow_mut().renderer().import_dmabuf(buffer).is_ok(), - None, + move |buffer, _| { + renderer + .borrow_mut() + .renderer() + .import_dmabuf(buffer) + .is_ok() + }, + log.clone(), ); } let size = renderer.borrow().window_size().physical_size; - let data = WinitData{}; + let data = WinitData {}; - let mut state = State::init(display.clone(), event_loop.handle(), data); + let mut state = State::init(display.clone(), event_loop.handle(), data, log.clone()); let mode = Mode { size, - refresh: 60_000 + refresh: 60_000, }; + + loop {} } diff --git a/src/state.rs b/src/state.rs index 62f8634..0bf3fa5 100644 --- a/src/state.rs +++ b/src/state.rs @@ -1,4 +1,5 @@ pub const OUTPUT_NAME: &str = "winit"; +use slog::*; use std::{cell::RefCell, rc::Rc, sync::{Arc, Mutex}, sync::atomic::{AtomicBool, Ordering}, time::Duration}; use smithay::{reexports::{calloop::{Mode, Interest, LoopHandle, PostAction, generic::Generic}, wayland_server::{Display, protocol::wl_surface::WlSurface}}, utils::{Logical, Point}, wayland::{data_device::{DataDeviceEvent, default_action_chooser, init_data_device, set_data_device_focus}, output::xdg::init_xdg_output_manager, seat::{CursorImageStatus, KeyboardHandle, PointerHandle, Seat, XkbConfig}, shm::init_shm_global}}; @@ -15,10 +16,11 @@ pub struct State { pub running: Arc, pub seat_name: String, pub seat: Seat, + pub log: Logger, } impl State { - pub fn init(display: Rc>, loop_handle: LoopHandle<'static, State>, backend_data: BackendData) -> Self { + pub fn init(display: Rc>, loop_handle: LoopHandle<'static, State>, backend_data: BackendData, log: Logger) -> Self { loop_handle.insert_source( Generic::from_fd(display.borrow().get_poll_fd(), Interest::READ, Mode::Level), move |_,_, state: &mut State| { @@ -40,6 +42,7 @@ impl State { init_xdg_output_manager(&mut display.borrow_mut(), None); let socket_name = display.borrow_mut().add_socket_auto().unwrap().into_string().unwrap(); + dbg!(&socket_name); std::env::set_var("WAYLAND_DISPLAY", &socket_name); let dnd_icon = Arc::new(Mutex::new(None)); @@ -82,6 +85,7 @@ impl State { pointer, seat_name, seat, + log: log.clone() } } }