diff --git a/crates/wrsrvd/src/backend/headless.rs b/crates/wrsrvd/src/backend/headless.rs index 18a3b9c..138205c 100644 --- a/crates/wrsrvd/src/backend/headless.rs +++ b/crates/wrsrvd/src/backend/headless.rs @@ -235,6 +235,17 @@ fn render_headless_frame(data: &mut CalloopData) { let element_count = data.state.space.elements().count(); tracing::debug!(element_count, "render tick"); + // Check if window toplevel has been configured. + if element_count > 0 { + for window in data.state.space.elements() { + if let Some(toplevel) = window.toplevel() { + let configured = toplevel.is_initial_configure_sent(); + let bbox = window.bbox(); + tracing::info!(configured, ?bbox, "window state"); + } + } + } + let custom_elements: &[TextureRenderElement] = &[]; let render_result = render_output::<_, _, Window, _>( @@ -268,6 +279,14 @@ fn render_headless_frame(data: &mut CalloopData) { std::slice::from_raw_parts(ptr, frame_bytes) }; + // One-shot content check for debugging. + if element_count > 0 { + let non_bg = pixels.chunks_exact(4).any(|p| p != [25, 25, 25, 255]); + if non_bg { + tracing::info!("client surface rendered successfully"); + } + } + // Send frame over network if a client is connected. if data.client_connected { send_frame_to_network(data, pixels, &damage, output_size.w, output_size.h, stride); diff --git a/crates/wrsrvd/src/handlers/xdg_shell.rs b/crates/wrsrvd/src/handlers/xdg_shell.rs index 5efe25e..91f77c5 100644 --- a/crates/wrsrvd/src/handlers/xdg_shell.rs +++ b/crates/wrsrvd/src/handlers/xdg_shell.rs @@ -21,6 +21,8 @@ impl XdgShellHandler for WayRay { } fn new_toplevel(&mut self, surface: ToplevelSurface) { + // Send the initial configure so the client can start drawing. + surface.send_configure(); let window = Window::new_wayland_window(surface); self.space.map_element(window, (0, 0), false); info!("new toplevel mapped");