summaryrefslogtreecommitdiffstats
path: root/glutin
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón <hector0193@gmail.com>2023-01-09 19:10:45 +0100
committerLibravatar GitHub <noreply@github.com>2023-01-09 19:10:45 +0100
commit07d755c6a270bd46fe9752ed57b3ceaddda1f081 (patch)
treecbd8f75d8cd6beeb3c04cbedc0127f2e17b70f56 /glutin
parentba20ac8e49aedfa9d822d71784587d0635cec4f8 (diff)
parent2e5dc1f37a32e1f3aaa6db2aa9cf9c95e83bff42 (diff)
downloadiced-07d755c6a270bd46fe9752ed57b3ceaddda1f081.tar.gz
iced-07d755c6a270bd46fe9752ed57b3ceaddda1f081.tar.bz2
iced-07d755c6a270bd46fe9752ed57b3ceaddda1f081.zip
Merge pull request #1565 from bungoboingo/feat/tracing
[Feature] Profiling
Diffstat (limited to '')
-rw-r--r--glutin/Cargo.toml5
-rw-r--r--glutin/src/application.rs44
2 files changed, 37 insertions, 12 deletions
diff --git a/glutin/Cargo.toml b/glutin/Cargo.toml
index 022457b1..304170cd 100644
--- a/glutin/Cargo.toml
+++ b/glutin/Cargo.toml
@@ -11,6 +11,7 @@ keywords = ["gui", "ui", "graphics", "interface", "widgets"]
categories = ["gui"]
[features]
+trace = ["iced_winit/trace"]
debug = ["iced_winit/debug"]
system = ["iced_winit/system"]
@@ -35,3 +36,7 @@ features = ["application"]
version = "0.5"
path = "../graphics"
features = ["opengl"]
+
+[dependencies.tracing]
+version = "0.1.6"
+optional = true \ No newline at end of file
diff --git a/glutin/src/application.rs b/glutin/src/application.rs
index 3e9d11f9..1464bb2d 100644
--- a/glutin/src/application.rs
+++ b/glutin/src/application.rs
@@ -17,6 +17,9 @@ use iced_winit::{Clipboard, Command, Debug, Proxy, Settings};
use glutin::window::Window;
use std::mem::ManuallyDrop;
+#[cfg(feature = "tracing")]
+use tracing::{info_span, instrument::Instrument};
+
/// Runs an [`Application`] with an executor, compositor, and the provided
/// settings.
pub fn run<A, E, C>(
@@ -35,9 +38,15 @@ where
use glutin::platform::run_return::EventLoopExtRunReturn;
use glutin::ContextBuilder;
+ #[cfg(feature = "trace")]
+ let _guard = iced_winit::Profiler::init();
+
let mut debug = Debug::new();
debug.startup_started();
+ #[cfg(feature = "tracing")]
+ let _ = info_span!("Application::Glutin", "RUN").entered();
+
let mut event_loop = EventLoopBuilder::with_user_event().build();
let proxy = event_loop.create_proxy();
@@ -124,18 +133,26 @@ where
let (mut sender, receiver) = mpsc::unbounded();
- let mut instance = Box::pin(run_instance::<A, E, C>(
- application,
- compositor,
- renderer,
- runtime,
- proxy,
- debug,
- receiver,
- context,
- init_command,
- settings.exit_on_close_request,
- ));
+ let mut instance = Box::pin({
+ let run_instance = run_instance::<A, E, C>(
+ application,
+ compositor,
+ renderer,
+ runtime,
+ proxy,
+ debug,
+ receiver,
+ context,
+ init_command,
+ settings.exit_on_close_request,
+ );
+
+ #[cfg(feature = "tracing")]
+ let run_instance =
+ run_instance.instrument(info_span!("Application", "LOOP"));
+
+ run_instance
+ });
let mut context = task::Context::from_waker(task::noop_waker_ref());
@@ -333,6 +350,9 @@ async fn run_instance<A, E, C>(
messages.push(message);
}
event::Event::RedrawRequested(_) => {
+ #[cfg(feature = "tracing")]
+ let _ = info_span!("Application", "FRAME").entered();
+
debug.render_started();
#[allow(unsafe_code)]