Two major additions: 1. Nested Wayland mode (WMAKER_WAYLAND_NESTED=1): wlr_multi_backend wraps wlr_wl_backend (visual output as a host Wayland window) and wlr_headless_backend (for synthetic input devices). wlr_wl_output_create queues the output window before start; handle_backend_new_output initialises the render pipeline (wlr_output_init_render, preferred mode, enable, commit) and sets the window title to "Window Maker". 2. wlr_scene compositing (both modes): wlr_scene_create() produces a scene graph; per-surface scene nodes are added in handle_toplevel_map (wlr_scene_xdg_surface_create) and handle_xwayland_map (wlr_scene_subsurface_tree_create). Positions are kept in sync via wlr_scene_node_set_position from wl_window_move and wl_client_synth_configure. handle_output_frame calls wlr_scene_output_commit on every output vsync to render and send frame callbacks. Other changes: - wlr_allocator_autocreate added; wlr_output_init_render called in handle_backend_new_output for proper buffer allocation - headless_inner / wl_backend_inner stored separately so wlr_headless_add_input_device always uses the headless sub-backend - frame_timer_cb skips wlr_output_send_frame in nested mode (host drives frame schedule via output->events.frame) - Scene nodes removed on surface destroy; allocator/scene torn down in wl_display_close Smoke test: new "scene check" verifies "scene graph created" and "headless compositor mode" log lines. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| Makefile.am | ||
| test_geom.c | ||
| test_x11_event.c | ||
| wl-smoke-test.sh | ||
| x11-smoke-test.sh | ||