This is an automated email from the git hooks/post-receive script.

git pushed a commit to branch netbsd_support
in repository enlightenment.

View the commit online.

commit 88fb583b9367452711cb1926c97d957ef927849c
Author: [email protected] <[email protected]>
AuthorDate: Thu Aug 6 09:31:31 2026 -0600

    randr2 - guard canvas update on evas, not ee, for wayland startup
    
    _do_apply() only runs at startup from the second boot onward, once
    e_randr2.cfg exists and matches a screen (e_randr2_init()). Its guard
    tested e_comp->ee to decide whether the canvas was ready, but the wl_drm
    backend creates e_comp->ee before calling e_comp_wl_init() ->
    e_randr2_init(), and only assigns e_comp->evas later in
    e_comp_canvas_init(). So on wayland the guard passed with a NULL evas and
    e_comp_canvas_update() built zones whose bg_clip_object and friends were
    NULL, then e_comp_canvas_init() built a second set - duplicate zones.
    
    Everything on the desktop is clipped to zone->bg_clip_object, so the
    wallpaper (e_bg.c) and the init splash (e_init.c) both ended up clipped to
    nothing: black screen, no loader, from the second start on. X11 calls
    e_randr2_init() after the canvas exists, so it saw both pointers set and
    was never affected.
    
    Test evas instead - it is what e_zone_new() actually needs.
    
    Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
---
 src/bin/e_randr2.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/src/bin/e_randr2.c b/src/bin/e_randr2.c
index 11eca86f6..8acb27e66 100644
--- a/src/bin/e_randr2.c
+++ b/src/bin/e_randr2.c
@@ -340,7 +340,10 @@ _do_apply(void)
    // e_randr2_init(), _do_apply() is called before e_comp->ee/evas exist,
    // so e_comp_canvas_update() would create broken zones with NULL evas
    // objects, causing duplicate zones and a black screen at startup.
-   if (e_comp->ee)
+   // test evas, not ee: the wl_drm backend creates e_comp->ee before it
+   // calls e_comp_wl_init() -> e_randr2_init(), and only sets e_comp->evas
+   // later in e_comp_canvas_init(). evas is what e_zone_new() needs.
+   if (e_comp->evas)
      {
         e_comp_canvas_resize(e_randr2->w, e_randr2->h);
         e_randr2_screens_setup(e_comp->w, e_comp->h);

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.

Reply via email to