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>
This commit is contained in:
sergio
2026-05-21 02:58:52 +00:00
parent 30669f970b
commit 97a10aa173
@@ -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();