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",
|
||||
]
|
||||
|
||||
[[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"
|
||||
|
@ -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
|
||||
|
53
src/main.rs
53
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 {}
|
||||
}
|
||||
|
@ -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<BackendData> {
|
||||
pub running: Arc<AtomicBool>,
|
||||
pub seat_name: String,
|
||||
pub seat: Seat,
|
||||
pub log: Logger,
|
||||
}
|
||||
|
||||
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(
|
||||
Generic::from_fd(display.borrow().get_poll_fd(), Interest::READ, Mode::Level),
|
||||
move |_,_, state: &mut State<BackendData>| {
|
||||
@ -40,6 +42,7 @@ impl<BackendData: Backend + 'static> State<BackendData> {
|
||||
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<BackendData: Backend + 'static> State<BackendData> {
|
||||
pointer,
|
||||
seat_name,
|
||||
seat,
|
||||
log: log.clone()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user