git.lucas.co / cce-system-interface
system settings
git clone https://git.lucas.co/cce-system-interface.git

commitb676430f3fe7d8d9eb5809b6de9d8577cb65ea1d
parentc806e04e63
authorLucas Galante <[email protected]>
date2026-06-26 08:16
Move scroll event logging to program exit handler using memory buffering

 src/input_handler.rs |  8 ++++----
 src/main.rs          | 15 +++++++++++++++
 2 files changed, 19 insertions(+), 4 deletions(-)

diff --git a/src/input_handler.rs b/src/input_handler.rs
index 76ad706..a94e641 100644
--- a/src/input_handler.rs
+++ b/src/input_handler.rs
@@ -665,10 +665,10 @@ impl SystemInterface {
     }
 
     pub(crate) fn handle_mouse_wheel_internal(&mut self, delta: &cce_ui::widget::MouseScrollDelta, px: f32, py: f32) -> bool {
-        if let Ok(mut file) = std::fs::OpenOptions::new().create(true).append(true).open("/tmp/cce-scroll-debug.log") {
-            use std::io::Write;
-            let _ = writeln!(file, "handle_mouse_wheel_internal: px={}, py={}, delta={:?}, sidebar_w={}", px, py, delta, self.sidebar_width);
-        }
+        self.scroll_logs.push(format!(
+            "handle_mouse_wheel_internal: px={}, py={}, delta={:?}, sidebar_w={}",
+            px, py, delta, self.sidebar_width
+        ));
         let s = 1.0f32;
         if px >= self.sidebar_width * s {
             let lx = px / s;
diff --git a/src/main.rs b/src/main.rs
index da70c19..92559ef 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -214,6 +214,7 @@ struct SystemInterface {
     current_page_shared: std::sync::Arc<std::sync::atomic::AtomicU8>,
     sender: calloop::channel::Sender<AppAction>,
     ui_context: cce_ui::context::UiContext,
+    scroll_logs: Vec<String>,
 }
 
 impl cce_ui::engine::Application for SystemInterface {
@@ -322,6 +323,7 @@ impl cce_ui::engine::Application for SystemInterface {
             current_page_shared,
             sender,
             ui_context: cce_ui::context::UiContext::new(),
+            scroll_logs: Vec::new(),
         };
 
         for page in &mut this.pages {
@@ -892,3 +894,16 @@ fn main() {
 
     cce_ui::engine::run::<SystemInterface>();
 }
+
+impl Drop for SystemInterface {
+    fn drop(&mut self) {
+        if !self.scroll_logs.is_empty() {
+            if let Ok(mut file) = std::fs::OpenOptions::new().create(true).append(true).open("/tmp/cce-scroll-debug.log") {
+                use std::io::Write;
+                for log in &self.scroll_logs {
+                    let _ = writeln!(file, "{}", log);
+                }
+            }
+        }
+    }
+}