git.lucas.co / cce-compositor
Wayland compositor (wlroots)
git clone https://git.lucas.co/cce-compositor.git

commit3f02b308b4a92c80541419d99d2977239c2cb696
parented5a49bdd5
authorLucas Galante <[email protected]>
date2026-06-26 13:00
Optimize hot paths by avoiding backtrace capture and allocations in standard log levels

 src/server/seat.rs           |  6 ++++--
 src/server/window_manager.rs | 20 ++++++++++++--------
 src/server/xdg_toplevel.rs   | 10 ++++++----
 3 files changed, 22 insertions(+), 14 deletions(-)

diff --git a/src/server/seat.rs b/src/server/seat.rs
index e07d9c5..152f07d 100644
--- a/src/server/seat.rs
+++ b/src/server/seat.rs
@@ -314,8 +314,10 @@ impl Seat {
             return;
         }
 
-        let bt = std::backtrace::Backtrace::capture();
-        log::info!("[FocusDebug] Seat::focus changing from {:?} to {:?}. Backtrace:\n{}", self.focused, new_focus, bt);
+        if log::log_enabled!(log::Level::Debug) {
+            let bt = std::backtrace::Backtrace::capture();
+            log::debug!("[FocusDebug] Seat::focus changing from {:?} to {:?}. Backtrace:\n{}", self.focused, new_focus, bt);
+        }
 
         // If an exclusive layer surface is active and scheduled for focus,
         // block any window manager or other client focus requests (via focus_requested)
diff --git a/src/server/window_manager.rs b/src/server/window_manager.rs
index ee43d49..542be9f 100644
--- a/src/server/window_manager.rs
+++ b/src/server/window_manager.rs
@@ -413,8 +413,10 @@ impl WindowManager {
     }
 
     pub unsafe fn dirty_windowing(&mut self) {
-        let bt = std::backtrace::Backtrace::force_capture();
-        log::info!("dirty_windowing called from backtrace:\n{}", bt);
+        if log::log_enabled!(log::Level::Debug) {
+            let bt = std::backtrace::Backtrace::force_capture();
+            log::debug!("dirty_windowing called from backtrace:\n{}", bt);
+        }
         self.scheduled.dirty = true;
         self.add_dirty_idle();
     }
@@ -861,12 +863,14 @@ fn get_closest_tag(x: f64, y: f64) -> i32 {
 }
 
     pub unsafe fn arrange_views(&mut self) {
-        log::info!("Monolithic arrange_views triggered. Windows: {}", self.windows.count());
-        for (idx, &win_ptr) in self.windows.iter().enumerate() {
-            if win_ptr.is_null() { continue; }
-            let title = (*win_ptr).get_title_string().unwrap_or_else(|| "None".to_string());
-            let aid = (*win_ptr).get_app_id_string().unwrap_or_else(|| "None".to_string());
-            log::info!("  window #{}: title={:?}, app_id={:?}, state={:?}, closed={}", idx, title, aid, (*win_ptr).state, (*win_ptr).closed);
+        log::debug!("Monolithic arrange_views triggered. Windows: {}", self.windows.count());
+        if log::log_enabled!(log::Level::Debug) {
+            for (idx, &win_ptr) in self.windows.iter().enumerate() {
+                if win_ptr.is_null() { continue; }
+                let title = (*win_ptr).get_title_string().unwrap_or_else(|| "None".to_string());
+                let aid = (*win_ptr).get_app_id_string().unwrap_or_else(|| "None".to_string());
+                log::debug!("  window #{}: title={:?}, app_id={:?}, state={:?}, closed={}", idx, title, aid, (*win_ptr).state, (*win_ptr).closed);
+            }
         }
 
         let outputs_list = &mut (*self.server).om.outputs as *mut ffi::wl_list as *mut WlList;
diff --git a/src/server/xdg_toplevel.rs b/src/server/xdg_toplevel.rs
index 181693c..85b8236 100644
--- a/src/server/xdg_toplevel.rs
+++ b/src/server/xdg_toplevel.rs
@@ -253,10 +253,12 @@ impl XdgToplevel {
             self.geometry.height as u32
         };
 
-        log::info!(
-            "XdgToplevel::configure: sending size {}x{} (scheduled={:?}, sent={:?}, geometry={:?}) to client '{}'",
-            width, height, scheduled.width, sent.width, (self.geometry.width, self.geometry.height), (*self.window).get_title_string().unwrap_or_else(|| "None".to_string())
-        );
+        if log::log_enabled!(log::Level::Debug) {
+            log::debug!(
+                "XdgToplevel::configure: sending size {}x{} (scheduled={:?}, sent={:?}, geometry={:?}) to client '{}'",
+                width, height, scheduled.width, sent.width, (self.geometry.width, self.geometry.height), (*self.window).get_title_string().unwrap_or_else(|| "None".to_string())
+            );
+        }
 
         let configure_serial = ffi::wlr_xdg_toplevel_set_size(self.wlr_toplevel, width as i32, height as i32);