This is an automated email from the git hooks/post-receive script.
git pushed a commit to branch wl/browser-all
in repository enlightenment.
View the commit online.
commit ad92bafb1ddae1b5bdebafd1dd3c8d54ce1adcb3
Author: Cedric BAIL <[email protected]>
AuthorDate: Wed Aug 12 19:04:09 2026 -0600
wl_x11 - advertise a wl_output, so a browser has somewhere to put a window
Running Brave against a nested compositor found this immediately: it connects,
starts its GPU process, runs happily, and never maps anything at all.
wayland-info against the nested compositor says why - there is no wl_output in
the registry. Chromium will not create a window when there is no output to put
it on, so nothing appears and nothing complains.
wl_buffer and wl_wl both already call e_comp_wl_output_init() by hand, and
wl_buffer's comment spells out the reason: it is otherwise only reached from
_e_comp_wl_cb_randr_change(), which needs e_randr2 or fake xinerama screens,
and behind an ecore_evas window there are neither. wl_x11 is in exactly the
same position and is the one backend that never got the call.
So this is not a new discovery so much as a gap next to two existing
workarounds for the same thing. With it, wayland-info reports wl_output v4 and
Brave maps, decorates and renders.
No wlcs or in-tree test moves: both harnesses default to the buffer backend,
which already had its own call. The criterion here is the browser.
Co-Authored-By: Claude Opus 5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01FtoiXoSKUmZb6Aix6U3GZS
---
src/modules/wl_x11/e_mod_main.c | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/src/modules/wl_x11/e_mod_main.c b/src/modules/wl_x11/e_mod_main.c
index 2e0b3b9f2..507f82e92 100644
--- a/src/modules/wl_x11/e_mod_main.c
+++ b/src/modules/wl_x11/e_mod_main.c
@@ -56,6 +56,17 @@ e_modapi_init(E_Module *m)
}
if (!e_comp_canvas_init(w, h)) return NULL;
+ /* Nothing else will do this for us, exactly as in wl_buffer and wl_wl,
+ * which both call it by hand and say why: e_comp_wl_output_init() is
+ * otherwise only reached from _e_comp_wl_cb_randr_change(), and behind an
+ * ecore_evas X11 window there is no e_randr2 screen to change.
+ *
+ * Without it the compositor advertises no wl_output whatsoever, which is
+ * not a cosmetic gap: Chromium will not create a window at all when there
+ * is no output to put it on, so Brave connects, runs, and never maps
+ * anything. wl_x11 is the one backend that never got this call. */
+ e_comp_wl_output_init(NULL, NULL, NULL, 0, 0, w, h, 0, 0, 0, 0, 0, 0);
+
e_comp_wl_input_pointer_enabled_set(EINA_TRUE);
e_comp_wl_input_keyboard_enabled_set(EINA_TRUE);
e_comp_wl_input_touch_enabled_set(EINA_TRUE);
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.