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:
@@ -32,6 +32,7 @@ use smithay::backend::renderer::element::surface::{
|
|||||||
};
|
};
|
||||||
use smithay::backend::renderer::element::Kind;
|
use smithay::backend::renderer::element::Kind;
|
||||||
use smithay::backend::renderer::gles::GlesRenderer;
|
use smithay::backend::renderer::gles::GlesRenderer;
|
||||||
|
use smithay::backend::renderer::utils::with_renderer_surface_state;
|
||||||
use smithay::backend::renderer::ImportDma;
|
use smithay::backend::renderer::ImportDma;
|
||||||
use smithay::backend::session::libseat::LibSeatSession;
|
use smithay::backend::session::libseat::LibSeatSession;
|
||||||
use smithay::backend::session::{Event as SessionEvent, Session};
|
use smithay::backend::session::{Event as SessionEvent, Session};
|
||||||
@@ -74,6 +75,8 @@ struct DrmState {
|
|||||||
start: Instant,
|
start: Instant,
|
||||||
/// Nº de ventanas en el último `tick` — para registrar los cambios.
|
/// Nº de ventanas en el último `tick` — para registrar los cambios.
|
||||||
last_windows: usize,
|
last_windows: usize,
|
||||||
|
/// Cuenta de `tick`s — para registrar diagnósticos cada cierto rato.
|
||||||
|
tick_count: u32,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl DrmState {
|
impl DrmState {
|
||||||
@@ -134,6 +137,18 @@ impl DrmState {
|
|||||||
self.last_windows = n;
|
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 self.keymap_watch.as_ref().is_some_and(|w| w.changed()) {
|
||||||
if let Some(path) = &self.keymap_path {
|
if let Some(path) = &self.keymap_path {
|
||||||
match Keymap::load(path) {
|
match Keymap::load(path) {
|
||||||
@@ -484,6 +499,7 @@ pub fn run() -> Result<(), Box<dyn Error>> {
|
|||||||
ctl,
|
ctl,
|
||||||
start: Instant::now(),
|
start: Instant::now(),
|
||||||
last_windows: 0,
|
last_windows: 0,
|
||||||
|
tick_count: 0,
|
||||||
};
|
};
|
||||||
|
|
||||||
let signal = event_loop.get_signal();
|
let signal = event_loop.get_signal();
|
||||||
|
|||||||
Reference in New Issue
Block a user