gioser

tawasuyu/brahman

Rust 582TOML 222Markdown 83JSON 198635 Definiciones

chore(mirada-compositor): backend DRM — log del tamaño de las superficies

El panel sólo ofrece modos 1920×1080, así que la franja negra no es del
modo. Para localizarla, el bucle DRM registra cada ~2 s la posición y el
tamaño real de cada superficie — así se ve si el cliente llena la
pantalla o se queda corto.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

97a10aa17334ac905ea2e2adf8e40220a5a618cc · por sergio · (hace 5 meses) · padre 30669f970 · ver el árbol en este commit

Delta semántico · 3

crates/apps/mirada-compositor/src/drm_backend.rs

  • cambió de firma struct DrmState
  • cambió por dentro fn run pub
  • cambió por dentro fn tick

1 archivos · +16 −0

diff --git a/crates/apps/mirada-compositor/src/drm_backend.rs b/crates/apps/mirada-compositor/src/drm_backend.rs
index 6baec05..c9125cb 100644
--- a/crates/apps/mirada-compositor/src/drm_backend.rs
+++ b/crates/apps/mirada-compositor/src/drm_backend.rs
@@ -32,6 +32,7 @@ use smithay::backend::renderer::element::surface::{
 };
 use smithay::backend::renderer::element::Kind;
 use smithay::backend::renderer::gles::GlesRenderer;
+use smithay::backend::renderer::utils::with_renderer_surface_state;
 use smithay::backend::renderer::ImportDma;
 use smithay::backend::session::libseat::LibSeatSession;
 use smithay::backend::session::{Event as SessionEvent, Session};
@@ -74,6 +75,8 @@ struct DrmState {
     start: Instant,
     /// Nº de ventanas en el último `tick` — para registrar los cambios.
     last_windows: usize,
+    /// Cuenta de `tick`s — para registrar diagnósticos cada cierto rato.
+    tick_count: u32,
 }
 
 impl DrmState {
@@ -134,6 +137,18 @@ impl DrmState {
             self.last_windows = n;
         }
 
+        // Diagnóstico cada ~2 s: dónde y de qué tamaño está cada superficie.
+        self.tick_count = self.tick_count.wrapping_add(1);
+        if self.tick_count % 120 == 0 {
+            for w in &self.app.windows {
+                let size = with_renderer_surface_state(&w.surface, |s| s.surface_size());
+                eprintln!(
+                    "mirada-compositor · ventana id={} loc={:?} visible={} superficie={size:?}",
+                    w.id, w.loc, w.visible,
+                );
+            }
+        }
+
         if self.keymap_watch.as_ref().is_some_and(|w| w.changed()) {
             if let Some(path) = &self.keymap_path {
                 match Keymap::load(path) {
@@ -484,6 +499,7 @@ pub fn run() -> Result<(), Box<dyn Error>> {
         ctl,
         start: Instant::now(),
         last_windows: 0,
+        tick_count: 0,
     };
 
     let signal = event_loop.get_signal();