add logging and loop
This commit is contained in:
parent
a35996c519
commit
28e53ff17a
174
Cargo.lock
generated
174
Cargo.lock
generated
@ -36,6 +36,23 @@ dependencies = [
|
|||||||
"num-traits",
|
"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]]
|
[[package]]
|
||||||
name = "autocfg"
|
name = "autocfg"
|
||||||
version = "1.0.1"
|
version = "1.0.1"
|
||||||
@ -102,6 +119,19 @@ dependencies = [
|
|||||||
"num-traits",
|
"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]]
|
[[package]]
|
||||||
name = "cocoa"
|
name = "cocoa"
|
||||||
version = "0.24.0"
|
version = "0.24.0"
|
||||||
@ -329,6 +359,27 @@ dependencies = [
|
|||||||
"syn",
|
"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]]
|
[[package]]
|
||||||
name = "dispatch"
|
name = "dispatch"
|
||||||
version = "0.2.0"
|
version = "0.2.0"
|
||||||
@ -408,6 +459,15 @@ dependencies = [
|
|||||||
"xml-rs",
|
"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]]
|
[[package]]
|
||||||
name = "ident_case"
|
name = "ident_case"
|
||||||
version = "1.0.1"
|
version = "1.0.1"
|
||||||
@ -660,6 +720,16 @@ dependencies = [
|
|||||||
"winapi",
|
"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]]
|
[[package]]
|
||||||
name = "num-traits"
|
name = "num-traits"
|
||||||
version = "0.2.14"
|
version = "0.2.14"
|
||||||
@ -853,6 +923,16 @@ dependencies = [
|
|||||||
"bitflags",
|
"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]]
|
[[package]]
|
||||||
name = "remove_dir_all"
|
name = "remove_dir_all"
|
||||||
version = "0.5.3"
|
version = "0.5.3"
|
||||||
@ -872,6 +952,12 @@ dependencies = [
|
|||||||
"owned_ttf_parser",
|
"owned_ttf_parser",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "rustversion"
|
||||||
|
version = "1.0.5"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "61b3909d758bb75c79f23d4736fac9433868679d3ad2ea7a61e3c25cfda9a088"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "same-file"
|
name = "same-file"
|
||||||
version = "1.0.6"
|
version = "1.0.6"
|
||||||
@ -911,6 +997,53 @@ version = "2.7.0"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "8347046d4ebd943127157b94d63abb990fcf729dc4e9978927fdf4ac3c998d06"
|
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]]
|
[[package]]
|
||||||
name = "smallvec"
|
name = "smallvec"
|
||||||
version = "1.6.1"
|
version = "1.6.1"
|
||||||
@ -983,6 +1116,12 @@ dependencies = [
|
|||||||
"unicode-xid",
|
"unicode-xid",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "take_mut"
|
||||||
|
version = "0.2.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "f764005d11ee5f36500a149ace24e00e3da98b0158b3e2d53a7495660d3f4d60"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tempfile"
|
name = "tempfile"
|
||||||
version = "3.2.0"
|
version = "3.2.0"
|
||||||
@ -997,6 +1136,17 @@ dependencies = [
|
|||||||
"winapi",
|
"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]]
|
[[package]]
|
||||||
name = "thiserror"
|
name = "thiserror"
|
||||||
version = "1.0.26"
|
version = "1.0.26"
|
||||||
@ -1017,13 +1167,37 @@ dependencies = [
|
|||||||
"syn",
|
"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]]
|
[[package]]
|
||||||
name = "tilers"
|
name = "tilers"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
|
"slog",
|
||||||
|
"slog-async",
|
||||||
|
"slog-scope",
|
||||||
|
"slog-stdlog",
|
||||||
|
"slog-term",
|
||||||
"smithay",
|
"smithay",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "time"
|
||||||
|
version = "0.1.43"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "ca8a50ef2360fbd1eeb0ecd46795a87a19024eb4b53c5dc916ca1fd95fe62438"
|
||||||
|
dependencies = [
|
||||||
|
"libc",
|
||||||
|
"winapi",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "toml"
|
name = "toml"
|
||||||
version = "0.5.8"
|
version = "0.5.8"
|
||||||
|
@ -3,6 +3,13 @@ name = "tilers"
|
|||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
edition = "2018"
|
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]
|
[dependencies.smithay]
|
||||||
version = "0.3.0"
|
version = "0.3.0"
|
||||||
default-features = false
|
default-features = false
|
||||||
|
53
src/main.rs
53
src/main.rs
@ -1,7 +1,16 @@
|
|||||||
pub const OUTPUT_NAME: &str = "winit";
|
pub const OUTPUT_NAME: &str = "winit";
|
||||||
|
|
||||||
|
use slog::*;
|
||||||
use std::{cell::RefCell, rc::Rc};
|
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;
|
mod state;
|
||||||
use crate::state::*;
|
use crate::state::*;
|
||||||
@ -16,19 +25,25 @@ impl Backend for WinitData {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
fn main() {
|
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")]
|
#[cfg(feature = "winit")]
|
||||||
fn run_winit() {
|
fn run_winit(log: Logger) {
|
||||||
let mut event_loop = smithay::reexports::calloop::EventLoop::try_new().unwrap();
|
|
||||||
|
let mut event_loop = EventLoop::try_new().unwrap();
|
||||||
let display = Rc::new(RefCell::new(Display::new()));
|
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,
|
Ok(ret) => ret,
|
||||||
Err(_) => return
|
Err(_) => return,
|
||||||
};
|
};
|
||||||
|
|
||||||
let renderer = Rc::new(RefCell::new(renderer));
|
let renderer = Rc::new(RefCell::new(renderer));
|
||||||
@ -36,8 +51,10 @@ fn run_winit() {
|
|||||||
if renderer
|
if renderer
|
||||||
.borrow_mut()
|
.borrow_mut()
|
||||||
.renderer()
|
.renderer()
|
||||||
.bind_wl_display(&display.borrow()).is_ok() {
|
.bind_wl_display(&display.borrow())
|
||||||
dbg!("EGL hardware-acceleration enabled");
|
.is_ok()
|
||||||
|
{
|
||||||
|
info!(log, "EGL hardware-acceleration enabled");
|
||||||
let dmabuf_formats = renderer
|
let dmabuf_formats = renderer
|
||||||
.borrow_mut()
|
.borrow_mut()
|
||||||
.renderer()
|
.renderer()
|
||||||
@ -48,19 +65,27 @@ fn run_winit() {
|
|||||||
init_dmabuf_global(
|
init_dmabuf_global(
|
||||||
&mut *display.borrow_mut(),
|
&mut *display.borrow_mut(),
|
||||||
dmabuf_formats,
|
dmabuf_formats,
|
||||||
move |buffer, _| renderer.borrow_mut().renderer().import_dmabuf(buffer).is_ok(),
|
move |buffer, _| {
|
||||||
None,
|
renderer
|
||||||
|
.borrow_mut()
|
||||||
|
.renderer()
|
||||||
|
.import_dmabuf(buffer)
|
||||||
|
.is_ok()
|
||||||
|
},
|
||||||
|
log.clone(),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
let size = renderer.borrow().window_size().physical_size;
|
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 {
|
let mode = Mode {
|
||||||
size,
|
size,
|
||||||
refresh: 60_000
|
refresh: 60_000,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
loop {}
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
pub const OUTPUT_NAME: &str = "winit";
|
pub const OUTPUT_NAME: &str = "winit";
|
||||||
|
use slog::*;
|
||||||
use std::{cell::RefCell, rc::Rc, sync::{Arc, Mutex}, sync::atomic::{AtomicBool, Ordering}, time::Duration};
|
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}};
|
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<BackendData> {
|
|||||||
pub running: Arc<AtomicBool>,
|
pub running: Arc<AtomicBool>,
|
||||||
pub seat_name: String,
|
pub seat_name: String,
|
||||||
pub seat: Seat,
|
pub seat: Seat,
|
||||||
|
pub log: Logger,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<BackendData: Backend + 'static> State<BackendData> {
|
impl<BackendData: Backend + 'static> State<BackendData> {
|
||||||
pub fn init(display: Rc<RefCell<Display>>, loop_handle: LoopHandle<'static, State<BackendData>>, backend_data: BackendData) -> Self {
|
pub fn init(display: Rc<RefCell<Display>>, loop_handle: LoopHandle<'static, State<BackendData>>, backend_data: BackendData, log: Logger) -> Self {
|
||||||
loop_handle.insert_source(
|
loop_handle.insert_source(
|
||||||
Generic::from_fd(display.borrow().get_poll_fd(), Interest::READ, Mode::Level),
|
Generic::from_fd(display.borrow().get_poll_fd(), Interest::READ, Mode::Level),
|
||||||
move |_,_, state: &mut State<BackendData>| {
|
move |_,_, state: &mut State<BackendData>| {
|
||||||
@ -40,6 +42,7 @@ impl<BackendData: Backend + 'static> State<BackendData> {
|
|||||||
init_xdg_output_manager(&mut display.borrow_mut(), None);
|
init_xdg_output_manager(&mut display.borrow_mut(), None);
|
||||||
|
|
||||||
let socket_name = display.borrow_mut().add_socket_auto().unwrap().into_string().unwrap();
|
let socket_name = display.borrow_mut().add_socket_auto().unwrap().into_string().unwrap();
|
||||||
|
dbg!(&socket_name);
|
||||||
std::env::set_var("WAYLAND_DISPLAY", &socket_name);
|
std::env::set_var("WAYLAND_DISPLAY", &socket_name);
|
||||||
|
|
||||||
let dnd_icon = Arc::new(Mutex::new(None));
|
let dnd_icon = Arc::new(Mutex::new(None));
|
||||||
@ -82,6 +85,7 @@ impl<BackendData: Backend + 'static> State<BackendData> {
|
|||||||
pointer,
|
pointer,
|
||||||
seat_name,
|
seat_name,
|
||||||
seat,
|
seat,
|
||||||
|
log: log.clone()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user