mirror of
https://github.com/rust-windowing/winit.git
synced 2026-06-26 14:49:07 -04:00
examples: Use tracing macros instead of println!
This allows the examples to work a bit better in WASM and on iOS.
This commit is contained in:
@@ -1,4 +1,11 @@
|
|||||||
# Using allow-invalid because this is platform-specific code
|
# Using allow-invalid because this is platform-specific code
|
||||||
|
disallowed-macros = [
|
||||||
|
{ path = "std::print", reason = "works badly on web", replacement = "tracing::info" },
|
||||||
|
{ path = "std::println", reason = "works badly on web", replacement = "tracing::info" },
|
||||||
|
{ path = "std::eprint", reason = "works badly on web", replacement = "tracing::error" },
|
||||||
|
{ path = "std::eprintln", reason = "works badly on web", replacement = "tracing::error" },
|
||||||
|
{ path = "std::dbg", reason = "leftover debugging aid, remove it or use tracing" },
|
||||||
|
]
|
||||||
disallowed-methods = [
|
disallowed-methods = [
|
||||||
{ allow-invalid = true, path = "objc2_app_kit::NSView::visibleRect", reason = "We expose a render target to the user, and visibility is not really relevant to that (and can break if you don't use the rectangle position as well). Use `frame` instead." },
|
{ allow-invalid = true, path = "objc2_app_kit::NSView::visibleRect", reason = "We expose a render target to the user, and visibility is not really relevant to that (and can break if you don't use the rectangle position as well). Use `frame` instead." },
|
||||||
{ allow-invalid = true, path = "objc2_app_kit::NSWindow::setFrameTopLeftPoint", reason = "Not sufficient when working with Winit's coordinate system, use `flip_window_screen_coordinates` instead" },
|
{ allow-invalid = true, path = "objc2_app_kit::NSWindow::setFrameTopLeftPoint", reason = "Not sufficient when working with Winit's coordinate system, use `flip_window_screen_coordinates` instead" },
|
||||||
|
|||||||
@@ -79,6 +79,10 @@ impl EventHandler {
|
|||||||
// Allowed, happens if the handler was cleared manually
|
// Allowed, happens if the handler was cleared manually
|
||||||
// elsewhere (such as in `applicationWillTerminate:`).
|
// elsewhere (such as in `applicationWillTerminate:`).
|
||||||
},
|
},
|
||||||
|
// We use `eprintln!` here over `tracing::error!`, since we're going to abort
|
||||||
|
// immediately after this, and it'd be annoying for the user if they didn't get
|
||||||
|
// any feedback on that if they don't have a tracing subscriber.
|
||||||
|
#[allow(clippy::disallowed_macros)]
|
||||||
Err(_) => {
|
Err(_) => {
|
||||||
// Note: This is not expected to ever happen, this
|
// Note: This is not expected to ever happen, this
|
||||||
// module generally controls the `RefCell`, and
|
// module generally controls the `RefCell`, and
|
||||||
|
|||||||
@@ -387,11 +387,7 @@ impl LayoutCache {
|
|||||||
let unicode = Self::to_unicode_string(&key_state, vk, scancode, locale_id);
|
let unicode = Self::to_unicode_string(&key_state, vk, scancode, locale_id);
|
||||||
let key = match unicode {
|
let key = match unicode {
|
||||||
ToUnicodeResult::Str(str) => Key::Character(SmolStr::new(str)),
|
ToUnicodeResult::Str(str) => Key::Character(SmolStr::new(str)),
|
||||||
ToUnicodeResult::Dead(dead_char) => {
|
ToUnicodeResult::Dead(dead_char) => Key::Dead(dead_char),
|
||||||
// println!("{:?} - {:?} produced dead {:?}", key_code, mod_state,
|
|
||||||
// dead_char);
|
|
||||||
Key::Dead(dead_char)
|
|
||||||
},
|
|
||||||
ToUnicodeResult::None => {
|
ToUnicodeResult::None => {
|
||||||
let has_alt = mod_state.contains(WindowsModifiers::ALT);
|
let has_alt = mod_state.contains(WindowsModifiers::ALT);
|
||||||
let has_ctrl = mod_state.contains(WindowsModifiers::CONTROL);
|
let has_ctrl = mod_state.contains(WindowsModifiers::CONTROL);
|
||||||
|
|||||||
@@ -66,7 +66,6 @@ impl XConnection {
|
|||||||
// All util functions that abstract an async function will return a `Flusher`.
|
// All util functions that abstract an async function will return a `Flusher`.
|
||||||
pub fn flush_requests(&self) -> Result<(), XError> {
|
pub fn flush_requests(&self) -> Result<(), XError> {
|
||||||
unsafe { (self.xlib.XFlush)(self.display) };
|
unsafe { (self.xlib.XFlush)(self.display) };
|
||||||
// println!("XFlush");
|
|
||||||
// This isn't necessarily a useful time to check for errors (since our request hasn't
|
// This isn't necessarily a useful time to check for errors (since our request hasn't
|
||||||
// necessarily been processed yet)
|
// necessarily been processed yet)
|
||||||
self.check_errors()
|
self.check_errors()
|
||||||
@@ -74,7 +73,6 @@ impl XConnection {
|
|||||||
|
|
||||||
pub fn sync_with_server(&self) -> Result<(), XError> {
|
pub fn sync_with_server(&self) -> Result<(), XError> {
|
||||||
unsafe { (self.xlib.XSync)(self.display, ffi::False) };
|
unsafe { (self.xlib.XSync)(self.display, ffi::False) };
|
||||||
// println!("XSync");
|
|
||||||
self.check_errors()
|
self.check_errors()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,9 @@
|
|||||||
use cfg_aliases::cfg_aliases;
|
use cfg_aliases::cfg_aliases;
|
||||||
|
|
||||||
|
// Only relevant for examples and Winit, our usage of println! is fine here.
|
||||||
|
#[allow(clippy::disallowed_macros)]
|
||||||
fn main() {
|
fn main() {
|
||||||
// The script doesn't depend on our code.
|
// Dummy invocation to enable change-tracking in build scripts.
|
||||||
println!("cargo:rerun-if-changed=build.rs");
|
println!("cargo:rerun-if-changed=build.rs");
|
||||||
|
|
||||||
// Setup cfg aliases.
|
// Setup cfg aliases.
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
fn main() -> Result<(), impl std::error::Error> {
|
fn main() -> Result<(), impl std::error::Error> {
|
||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
|
|
||||||
|
use tracing::info;
|
||||||
use winit::application::ApplicationHandler;
|
use winit::application::ApplicationHandler;
|
||||||
use winit::dpi::{LogicalPosition, LogicalSize, Position};
|
use winit::dpi::{LogicalPosition, LogicalSize, Position};
|
||||||
use winit::event::{ElementState, KeyEvent, WindowEvent};
|
use winit::event::{ElementState, KeyEvent, WindowEvent};
|
||||||
@@ -38,7 +39,7 @@ fn main() -> Result<(), impl std::error::Error> {
|
|||||||
.with_position(Position::Logical(LogicalPosition::new(0.0, 0.0)))
|
.with_position(Position::Logical(LogicalPosition::new(0.0, 0.0)))
|
||||||
.with_surface_size(LogicalSize::new(640.0f32, 480.0f32));
|
.with_surface_size(LogicalSize::new(640.0f32, 480.0f32));
|
||||||
let window = event_loop.create_window(attributes).unwrap();
|
let window = event_loop.create_window(attributes).unwrap();
|
||||||
println!("Parent window id: {:?})", window.id());
|
info!("Parent window id: {:?})", window.id());
|
||||||
self.parent_window_id = Some(window.id());
|
self.parent_window_id = Some(window.id());
|
||||||
|
|
||||||
self.windows.insert(window.id(), WindowData::new(window, 0xffbbbbbb));
|
self.windows.insert(window.id(), WindowData::new(window, 0xffbbbbbb));
|
||||||
@@ -56,12 +57,12 @@ fn main() -> Result<(), impl std::error::Error> {
|
|||||||
event_loop.exit();
|
event_loop.exit();
|
||||||
},
|
},
|
||||||
WindowEvent::PointerEntered { device_id: _, .. } => {
|
WindowEvent::PointerEntered { device_id: _, .. } => {
|
||||||
// On x11, println when the cursor entered in a window even if the child window
|
// On x11, log when the cursor entered in a window even if the child window
|
||||||
// is created by some key inputs.
|
// is created by some key inputs.
|
||||||
// the child windows are always placed at (0, 0) with size (200, 200) in the
|
// the child windows are always placed at (0, 0) with size (200, 200) in the
|
||||||
// parent window, so we also can see this log when we move
|
// parent window, so we also can see this log when we move
|
||||||
// the cursor around (200, 200) in parent window.
|
// the cursor around (200, 200) in parent window.
|
||||||
println!("cursor entered in the window {window_id:?}");
|
info!("cursor entered in the window {window_id:?}");
|
||||||
},
|
},
|
||||||
WindowEvent::KeyboardInput {
|
WindowEvent::KeyboardInput {
|
||||||
event: KeyEvent { state: ElementState::Pressed, .. },
|
event: KeyEvent { state: ElementState::Pressed, .. },
|
||||||
@@ -75,7 +76,7 @@ fn main() -> Result<(), impl std::error::Error> {
|
|||||||
let child_window =
|
let child_window =
|
||||||
spawn_child_window(parent_window.window.as_ref(), event_loop, child_index);
|
spawn_child_window(parent_window.window.as_ref(), event_loop, child_index);
|
||||||
let child_id = child_window.id();
|
let child_id = child_window.id();
|
||||||
println!("Child window created with id: {child_id:?}");
|
info!("Child window created with id: {child_id:?}");
|
||||||
self.windows.insert(child_id, WindowData::new(child_window, child_color));
|
self.windows.insert(child_id, WindowData::new(child_window, child_color));
|
||||||
},
|
},
|
||||||
WindowEvent::RedrawRequested => {
|
WindowEvent::RedrawRequested => {
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ use std::thread;
|
|||||||
#[cfg(not(web_platform))]
|
#[cfg(not(web_platform))]
|
||||||
use std::time;
|
use std::time;
|
||||||
|
|
||||||
use ::tracing::{info, warn};
|
use tracing::{info, warn};
|
||||||
#[cfg(web_platform)]
|
#[cfg(web_platform)]
|
||||||
use web_time as time;
|
use web_time as time;
|
||||||
use winit::application::ApplicationHandler;
|
use winit::application::ApplicationHandler;
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
use std::error::Error;
|
use std::error::Error;
|
||||||
|
|
||||||
|
use tracing::info;
|
||||||
use winit::application::ApplicationHandler;
|
use winit::application::ApplicationHandler;
|
||||||
use winit::event::WindowEvent;
|
use winit::event::WindowEvent;
|
||||||
use winit::event_loop::{ActiveEventLoop, EventLoop};
|
use winit::event_loop::{ActiveEventLoop, EventLoop};
|
||||||
@@ -49,7 +50,7 @@ impl ApplicationHandler for Application {
|
|||||||
| WindowEvent::DragEntered { .. }
|
| WindowEvent::DragEntered { .. }
|
||||||
| WindowEvent::DragMoved { .. }
|
| WindowEvent::DragMoved { .. }
|
||||||
| WindowEvent::DragDropped { .. } => {
|
| WindowEvent::DragDropped { .. } => {
|
||||||
println!("{event:?}");
|
info!("{event:?}");
|
||||||
},
|
},
|
||||||
WindowEvent::RedrawRequested => {
|
WindowEvent::RedrawRequested => {
|
||||||
let window = self.window.as_ref().unwrap();
|
let window = self.window.as_ref().unwrap();
|
||||||
|
|||||||
@@ -76,7 +76,7 @@ impl ApplicationHandler for App {
|
|||||||
self.window = match event_loop.create_window(window_attributes) {
|
self.window = match event_loop.create_window(window_attributes) {
|
||||||
Ok(window) => Some(window),
|
Ok(window) => Some(window),
|
||||||
Err(err) => {
|
Err(err) => {
|
||||||
eprintln!("error creating window: {err}");
|
error!("error creating window: {err}");
|
||||||
event_loop.exit();
|
event_loop.exit();
|
||||||
return;
|
return;
|
||||||
},
|
},
|
||||||
@@ -346,7 +346,7 @@ fn main() -> Result<(), Box<dyn Error>> {
|
|||||||
|
|
||||||
let event_loop = EventLoop::new()?;
|
let event_loop = EventLoop::new()?;
|
||||||
|
|
||||||
println!(
|
info!(
|
||||||
r#"This showcases the use of an input method engine (IME) by emulating a text edit field.
|
r#"This showcases the use of an input method engine (IME) by emulating a text edit field.
|
||||||
Use CTRL+i to toggle IME support.
|
Use CTRL+i to toggle IME support.
|
||||||
Use CTRL+p to cycle content purpose values.
|
Use CTRL+p to cycle content purpose values.
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ fn main() -> std::process::ExitCode {
|
|||||||
use std::thread::sleep;
|
use std::thread::sleep;
|
||||||
use std::time::Duration;
|
use std::time::Duration;
|
||||||
|
|
||||||
|
use tracing::info;
|
||||||
use winit::application::ApplicationHandler;
|
use winit::application::ApplicationHandler;
|
||||||
use winit::event::WindowEvent;
|
use winit::event::WindowEvent;
|
||||||
use winit::event_loop::pump_events::{EventLoopExtPumpEvents, PumpStatus};
|
use winit::event_loop::pump_events::{EventLoopExtPumpEvents, PumpStatus};
|
||||||
@@ -33,7 +34,7 @@ fn main() -> std::process::ExitCode {
|
|||||||
_window_id: WindowId,
|
_window_id: WindowId,
|
||||||
event: WindowEvent,
|
event: WindowEvent,
|
||||||
) {
|
) {
|
||||||
println!("{event:?}");
|
info!("{event:?}");
|
||||||
|
|
||||||
let window = match self.window.as_ref() {
|
let window = match self.window.as_ref() {
|
||||||
Some(window) => window,
|
Some(window) => window,
|
||||||
@@ -69,12 +70,12 @@ fn main() -> std::process::ExitCode {
|
|||||||
//
|
//
|
||||||
// Since `pump_events` doesn't block it will be important to
|
// Since `pump_events` doesn't block it will be important to
|
||||||
// throttle the loop in the app somehow.
|
// throttle the loop in the app somehow.
|
||||||
println!("Update()");
|
info!("Update()");
|
||||||
sleep(Duration::from_millis(16));
|
sleep(Duration::from_millis(16));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(any(ios_platform, web_platform, orbital_platform))]
|
#[cfg(any(ios_platform, web_platform, orbital_platform))]
|
||||||
fn main() {
|
fn main() {
|
||||||
println!("This platform doesn't support pump_events.");
|
panic!("This platform doesn't support pump_events.")
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,6 +5,7 @@
|
|||||||
fn main() -> Result<(), Box<dyn std::error::Error>> {
|
fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||||
use std::time::Duration;
|
use std::time::Duration;
|
||||||
|
|
||||||
|
use tracing::info;
|
||||||
use winit::application::ApplicationHandler;
|
use winit::application::ApplicationHandler;
|
||||||
use winit::event::WindowEvent;
|
use winit::event::WindowEvent;
|
||||||
use winit::event_loop::run_on_demand::EventLoopExtRunOnDemand;
|
use winit::event_loop::run_on_demand::EventLoopExtRunOnDemand;
|
||||||
@@ -44,10 +45,7 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
|
|||||||
event: WindowEvent,
|
event: WindowEvent,
|
||||||
) {
|
) {
|
||||||
if event == WindowEvent::Destroyed && self.window_id == Some(window_id) {
|
if event == WindowEvent::Destroyed && self.window_id == Some(window_id) {
|
||||||
println!(
|
info!("Window {} Destroyed", self.idx);
|
||||||
"--------------------------------------------------------- Window {} Destroyed",
|
|
||||||
self.idx
|
|
||||||
);
|
|
||||||
self.window_id = None;
|
self.window_id = None;
|
||||||
event_loop.exit();
|
event_loop.exit();
|
||||||
return;
|
return;
|
||||||
@@ -60,11 +58,7 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
|
|||||||
|
|
||||||
match event {
|
match event {
|
||||||
WindowEvent::CloseRequested => {
|
WindowEvent::CloseRequested => {
|
||||||
println!(
|
info!("Window {} CloseRequested", self.idx);
|
||||||
"--------------------------------------------------------- Window {} \
|
|
||||||
CloseRequested",
|
|
||||||
self.idx
|
|
||||||
);
|
|
||||||
fill::cleanup_window(window.as_ref());
|
fill::cleanup_window(window.as_ref());
|
||||||
self.window = None;
|
self.window = None;
|
||||||
},
|
},
|
||||||
@@ -83,13 +77,13 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
|
|||||||
let mut app = App { idx: 1, ..Default::default() };
|
let mut app = App { idx: 1, ..Default::default() };
|
||||||
event_loop.run_app_on_demand(&mut app)?;
|
event_loop.run_app_on_demand(&mut app)?;
|
||||||
|
|
||||||
println!("--------------------------------------------------------- Finished first loop");
|
info!("Finished first loop");
|
||||||
println!("--------------------------------------------------------- Waiting 5 seconds");
|
info!("Waiting 5 seconds");
|
||||||
std::thread::sleep(Duration::from_secs(5));
|
std::thread::sleep(Duration::from_secs(5));
|
||||||
|
|
||||||
app.idx += 1;
|
app.idx += 1;
|
||||||
event_loop.run_app_on_demand(&mut app)?;
|
event_loop.run_app_on_demand(&mut app)?;
|
||||||
println!("--------------------------------------------------------- Finished second loop");
|
info!("Finished second loop");
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -101,5 +95,5 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
|
|||||||
orbital_platform
|
orbital_platform
|
||||||
)))]
|
)))]
|
||||||
fn main() {
|
fn main() {
|
||||||
println!("This example is not supported on this platform");
|
panic!("This example is not supported on this platform")
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,3 +23,6 @@ pub fn init() {
|
|||||||
)
|
)
|
||||||
.init();
|
.init();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[allow(unused_imports)]
|
||||||
|
pub use ::tracing::*;
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
use std::error::Error;
|
use std::error::Error;
|
||||||
|
|
||||||
|
use tracing::{error, info};
|
||||||
use winit::application::ApplicationHandler;
|
use winit::application::ApplicationHandler;
|
||||||
use winit::event::WindowEvent;
|
use winit::event::WindowEvent;
|
||||||
use winit::event_loop::{ActiveEventLoop, EventLoop};
|
use winit::event_loop::{ActiveEventLoop, EventLoop};
|
||||||
@@ -29,7 +30,7 @@ impl ApplicationHandler for App {
|
|||||||
self.window = match event_loop.create_window(window_attributes) {
|
self.window = match event_loop.create_window(window_attributes) {
|
||||||
Ok(window) => Some(window),
|
Ok(window) => Some(window),
|
||||||
Err(err) => {
|
Err(err) => {
|
||||||
eprintln!("error creating window: {err}");
|
error!("error creating window: {err}");
|
||||||
event_loop.exit();
|
event_loop.exit();
|
||||||
return;
|
return;
|
||||||
},
|
},
|
||||||
@@ -37,10 +38,10 @@ impl ApplicationHandler for App {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn window_event(&mut self, event_loop: &dyn ActiveEventLoop, _: WindowId, event: WindowEvent) {
|
fn window_event(&mut self, event_loop: &dyn ActiveEventLoop, _: WindowId, event: WindowEvent) {
|
||||||
println!("{event:?}");
|
info!("{event:?}");
|
||||||
match event {
|
match event {
|
||||||
WindowEvent::CloseRequested => {
|
WindowEvent::CloseRequested => {
|
||||||
println!("Close was requested; stopping");
|
info!("Close was requested; stopping");
|
||||||
event_loop.exit();
|
event_loop.exit();
|
||||||
},
|
},
|
||||||
WindowEvent::SurfaceResized(_) => {
|
WindowEvent::SurfaceResized(_) => {
|
||||||
|
|||||||
@@ -66,6 +66,5 @@ fn main() -> Result<(), Box<dyn Error>> {
|
|||||||
|
|
||||||
#[cfg(not(x11_platform))]
|
#[cfg(not(x11_platform))]
|
||||||
fn main() -> Result<(), Box<dyn Error>> {
|
fn main() -> Result<(), Box<dyn Error>> {
|
||||||
println!("This example is only supported on X11 platforms.");
|
panic!("This example is only supported on X11 platforms.")
|
||||||
Ok(())
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user